我正在使用自定义AOSP构建,为此我制作了覆盖图以更改设备默认主题。我已经将这些叠加层放进去了:
device/overlay/framework/base/core/res/res
现在,我想为同一版本制作一个不同的叠加层,以使更改属性会更改所应用的叠加层。
例如,我设置
setprop persist.brand brand1
然后我看到overlay1,然后:
setprop persist.brand brand2
并查看overlay2。
我一直在研究RRO,并且能够使用自定义apk更改某些覆盖,但是我不知道如何将其与系统属性相关联。
编辑:
我发现通过使用
编译rro apk可以达到相似的结果include $(BUILD_RRO_PACKAGE)
在Android.mk中。
我注意到,在build_rro_package.mk中有一条注释,指出
## Set LOCAL_RRO_THEME to the theme name if the package should apply only to
## a particular theme as set by ro.boot.vendor.overlay.theme system property.
我了解的是,我可以将许多rro软件包分组为相同的LOCAL_RRO_THEME名称,然后使用ro.boot.vendor.overlay.theme属性一起激活或停用它们。如果这是正确的,那正是我在寻找的东西
我现在面临的问题是,当我用与LOCAL_PACKAGE_NAME不同的名称设置LOCAL_RRO_THEME时,当我用以下名称列出它们时,覆盖图不会显示:
cmd overlay list
这没有多大意义,但是也许我做错了什么?
答案 0 :(得分:0)
您正在使用哪个AOSP版本? AOSP 9中有一个运行时覆盖功能(尽管Google尚未发布文档,但是已经发布了)。在早期版本中,这无法完成,因为覆盖系统是在编译时完成的。如果您真的想在运行时更改资源,则需要修改框架,尤其是PackageManagerService