Android13 新增 Stable AIDL接口
问题描述:
我需要在netd aidl 中添加新的接口:
设置网卡MAC地址:
void setHardwareAddress(in @utf8InCpp String iface, in @utf8InCpp String hwAddr);
背景:
Android 10 添加了对稳定的 Android 接口定义语言 (AIDL) 的支持,这是一种跟踪由 AIDL 接口提供的应用编程接口 (API)/应用二进制接口 (ABI) 的新方法。稳定的 AIDL 与 AIDL 的主要区别如下:
在构建系统中使用 aidl_interfaces 定义接口。
接口只能包含结构化数据。对于代表所需类型的 Parcelable,系统会根据其 AIDL 定义自动创建,并自动对其进行编组和解组。
可以将接口声明为“稳定”接口(向后兼容)。声明之后,会在 AIDL 接口旁的一个文件中对这些接口的 API 进行跟踪和版本编号。
添加以后:使用如下指令编译模块
mmm /frameworks/libs/net/common/netd
报错提示说需要更新api:
API dump for the current version of AIDL interface setHardwareAddress does not exist.
Run m netd_aidl_interface-update-api or add unstable: true to the build rule for the interface if it does not need to be versioned
我们按照提示更新api:
make netd_aidl_interface-update-api 更新当前api 此命令执行成会更新如下目录下的aidl文件
QSSI.13\frameworks\libs\net\common\netd\aidl_api\netd_aidl_interface\current
因为我们是在原来的aidl文件内新增的接口, 所以我们需要使用如下指令重新生成一个version 的api
make netd_aidl_interface-freeze-api 此命令会生成新的版本号的api:之前最大是10,更新以后多了11
QSSI.13\framew