我正在开发基于 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
,也不是我在 system/priv-app/
中与 SystemUI 应用程序一起定义、构建和安装的任何其他颜色(我每次都重新启动设备以生效)。
我观察到,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
关于android - 如何使用 RRO 框架调整系统应用自定义颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50348669/