Android AIDL中使用Surface问题

1.构建ITest.aidl文件

package com.xxx.xxxx;

import android.view.Surface;

interface IMonitorService {
	boolean addSurface(in Surface surface);
	boolean removeSurface(in Surface surface);
}

2.构建时报错

3.Surface源码分析

      android.view.Surface中包含两个Surface类,一个是Surface.java,路径在源码/frameworks/base/core/java/android/view/目录下;另一个是Surface.aidl,路径在源码/frameworks/native/aidl/gui/android/view/目录下。实际上我们定义AIDL时需要使用的是Surface.aidl,但是执行Import android.view.Surface时导入的Surface.java类,因此需要在构建文件中包含相关路径。

4.Android,bp/Android.mk文件设置

    Android.bp文件中针对aidl文件可以采用include_dirs来包含需要导入的aidl路径,具体如下:

	aidl: {
	    include_dirs: [
			"frameworks/native/aidl/gui/",
		],
	},

  AIDL支持的属性设置如下:

Android AIDL中使用Surface问题_第1张图片

   Android.mk文件中可以使用LOCAL_AIDL_INCLUDES来导入aidl路径,具体如下:

LOCAL_AIDL_INCLUDES += \
        frameworks/native/aidl/gui 

你可能感兴趣的:(Android随笔,android)