配套系列教学视频链接:
说明
系统:Android10.0
设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)
前言
本章节简单介绍一下,Android中策略的兼容性。
在Android 开始treble计划之后, vendor和system可以分开进行升级,此时就会涉及到selinux在升级过程中出现的策略兼容性问题。详细介绍可以参考谷歌官网:
政策兼容性 | Android 开源项目 | Android Open Source Project
以上图示就是描述如果供应商政策和平台政策使用特定类型,而特定对象的标签仅在其中一项政策中发生变化,则另一个所包含的政策可能会获得或失去之前所依赖的访问权限。
为了实现无需了解具体版本变化即可制定政策的目标,Android 8.0 包含平台公共政策类型与其属性之间的映射。类型 foo
映射到属性 foo_vN
,其中 N
是目标版本。vN
对应于 PLATFORM_SEPOLICY_VERSION
构建变量,格式为 MM.NN
,其中 MM
对应于平台 SDK 编号,NN
是平台 sepolicy 特定版本。
在vendor和platorm的中间, 会将平台需要公开的type和属性进行版本化, 在vendor中直接使用版本化之后的type和attribute,这样就可以实现不同版本的vendor和platform的兼容