我正在开发基于定制AOSP的ROM,我希望能够使用RRO框架更改一些系统应用程序外观(颜色和其他资源),通过在system/vendor/overlay
中安装独立应用程序,而不是重建整个系统应用程序。
我开始使用SystemUI应用程序,尝试更改快速设置面板背景以及其他元素,我在frameworks/base/packages/SystemUI/res/values/colors.xml
中定义了自定义颜色。
我正在关注this tutorial。我正在为Pixel设备(旗鱼)建造AOSP,特别是分支android-8.1.0_r28
。
问题是,当我在Pixel设备的system/vendor/overlay
中安装我的覆盖应用程序时,这不起作用 - 我已经在system_primary_color
中使用SystemUI应用程序定义,构建和安装的被覆盖的system/priv-app/
或任何其他颜色(我每次都重启设备才能生效)。
我观察到,vendor/overlay/
目录中已有应用程序:Pixel和SysuiDarkTheme。我不确定这些是如何应用的,如果它们干扰了我正在尝试做的事情,但看起来RRO框架就在那里并且正在为其他系统覆盖应用程序工作。
这是我的叠加应用的AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="my.sample.package">
<application android:label="Overlay App" />
<overlay android:targetPackage="com.android.systemui"
android:priority="1"/>
</manifest>
这是我的叠加层应用的res / values / colors_overridden.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Colors overriding Android's SystemUI -->
<color name="system_primary_color">#FFBF360C</color>
<color name="keyguard_bouncer_background">#55FF0000</color>
</resources>
您要做的是将叠加层安装到/vendor/overlay
文件夹中,然后运行adb shell cmd overlay list
。找到您的应用程序ID,然后运行adb shell cmd overlay enable --user 0 application.id.here