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.mk文件中可以使用LOCAL_AIDL_INCLUDES来导入aidl路径,具体如下:
LOCAL_AIDL_INCLUDES += \
frameworks/native/aidl/gui