使用系统属性更改AOSP覆盖图

时间:2019-01-21 15:35:36

标签: android-source android-theme

我正在使用自定义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

这没有多大意义,但是也许我做错了什么?

1 个答案:

答案 0 :(得分:0)

您正在使用哪个AOSP版本? AOSP 9中有一个运行时覆盖功能(尽管Google尚未发布文档,但是已经发布了)。在早期版本中,这无法完成,因为覆盖系统是在编译时完成的。如果您真的想在运行时更改资源,则需要修改框架,尤其是PackageManagerService