android - 如何使用 RRO 框架调整系统应用自定义颜色?

标签 android android-source

我正在开发基于 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/ 目录中已经有应用程序:PixelSysuiDarkTheme。我不确定这些是如何应用的,以及它们是否干扰了我正在尝试做的事情,但看起来 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/

相关文章:

android-source - X (java :sdk) should not link to Y (java:platform)

android - 如何编译并启动Android内核

android - Android list 中的多个应用程序名称

java - 在 WebView 加载之前替换 fragment 时应用程序崩溃

android - 如何跨多个 AOSP 项目创建补丁?

android - 在 Android 设备中阅读 SELinux

eclipse - 在Eclipse中编辑和编译AOSP核心/系统应用程序

android - 获取 AccessibilityNodeInfo View 以创建叠加层

android - 如何修改opencv for-android以纵向模式运行

java - 错误 : class MapPane is public, 应在名为 MapPane.java 的文件中声明