RK-Android11-系统增加一个属性值
这是一个再常用不过的开发需求点了,这里自己通过这个需求点记录下,相关的知识点也很重要。 通过这个指示单 关联的其它需求功能用得上,先记录下
文章目录
- 需求
- 参考资料
- 修改文件
- 实现方案
- 编译ROOM-烧录-验证
- 知识点规整
- 总结
需求
给系统新增一个属性值,比如 ro.custom.wfc.properties
参考资料
关于PRODUCT_PROPERTY_OVERRIDES属性的解析
Android常用修改 这里面设计到的知识点蛮有意义的,建议细看,其实特别重要的,对自己开发有很大的启发的,补补基础是非常不错的。
Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用
修改文件
\device\rockchip\rk356x\device.mk
实现方案
在PRODUCT_PROPERTY_OVERRIDES 属性Key 添加需要新增的 key-value
编译ROOM-烧录-验证
看属性验证成功了
知识点规整
对于 init/property 属性相关知识内容蛮多的、涉及到的流程也蛮多的、mk 文件也蛮复杂的,参考资料或者网上资料也蛮多,建议自行消化,这里针对性的这个需求,规整一下,对后续相关文档或者现实需求都有指导和参考意义
- 这里的属性和参考资料中 Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用 提到的属性有本质区别,一个是系统级别的 一个是系统级别存放至数据库或者系统文件xml 里面的,两个还是有区别的。比如 这里的系统属性是直接在编译 c 代码层赋值写入的。Setting关联的System/Secure/Blobal 属于应用级别的 在第一次开机是在Framework 层写入的。
- 属性变量也是有区别的,如下:
变量名 | 作用 | 示例 |
---|---|---|
PRODUCT_PROPERTY_OVERRIDES | 全局覆盖系统属性 | ro.product.model=MyDevice |
PRODUCT_SYSTEM_PROPERTIES | 仅影响 system 分区 | ro.system.custom=1 |
PRODUCT_VENDOR_PROPERTIES | 仅影响 vendor 分区 | ro.vendor.audio.enable=1 |
- 是否可修改:ro.:只读属性,编译后不可修改;persist.:持久化属性,重启后仍然保留。
总结
- 场景的一个属性修改,给出方法,记录下。
- 针对属性值判断,针对应用、系统级别都有参考意义,业务上面会有需求。这里整理出来,方便后续实现其它功能,知识点串联起来
- 如果应用级别的就用 参考资料中的 Framework 层Settings.System, Settings.Secure和Settings.Global存储及应用 就够了,如果需要通过属性判断,这里也是一个解决方案。