Android 10 新增了稳定版 AIDL 支持,这是一种跟踪 AIDL 接口 API 和 ABI 的新方法。稳定版 AIDL 工作方式与 AIDL 相同,但构建系统会跟踪接口兼容性并限制某些操作:
- 接口在构建系统中通过 aidl_interfaces 定义。
- 稳定版 AIDL 接口只能包含结构化数据类型,构建系统会基于 AIDL 定义自动生成 Parcelable 类并处理所有的编组和解组操作,开发者无需手动实现 writeToParcel()、createFromParcel() 等方法,只需定义数据结构即可直接使用。
- parcelable 声明(自定义 parcelable)不是结构化 AIDL。在 AIDL 中定义了字段的 Parcelables 才称为结构化 parcelables
- 对于 boolean、char、float、double、byte、int、long 和 String 类型,支持(但不要求)设置默认值。从 Android 12 开始,也支持为用户定义的枚举设置默认值。当未指定默认值时,会使用类似 0 或空值。没有默认值的枚举会被初始化为 0,即使不存在值为零的枚举项。
- 接口可以声明为稳定版(向后兼容)。构建系统会在 AIDL 接口旁边自动生成并维护 API 版本记录文件,跟踪每个版本的完整定义。当修改接口时,系统会对比新旧版本确保向后兼容,任何破坏兼容性的修改(如删除方法、修改签名)都会导致构建失败,从而保证 HAL 接口的稳定性和系统的安全升级。
以上是稳定 aidl的定义,那何为不稳定的aidl呢?
如果使用核心构建系统构建接口(参考之前的AIDL backends文章**),或者设置了 unstable:true,则接口不稳定。**
修改为stable aidl
第一步 :



被折叠的 条评论
为什么被折叠?



