You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AOSP开发:使用RRO框架调整系统应用自定义颜色失败求助

排查AOSP 8.1 RRO Overlay不生效的问题

我之前在Android 8.1的AOSP分支上做过SystemUI的RRO定制,踩过不少类似的坑,给你梳理几个核心排查和解决方向:

1. 修正Manifest配置的关键细节

你的AndroidManifest.xml有两处容易忽略的问题,这在8.1版本的vendor分区Overlay里是硬要求:

  • 优先级不够:系统自带的Pixel、SysuiDarkTheme Overlay优先级大概率高于1,你的Overlay会被直接覆盖,建议把android:priority设为20以上
  • 缺少vendor分区必需属性:要添加android:required="true",确保系统加载vendor目录的Overlay时不会跳过它

修正后的Manifest示例:

<?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="20"
        android:required="true" />
</manifest>

2. 确认资源引用方式完全匹配

你要覆盖的system_primary_color,先去SystemUI的frameworks/base/packages/SystemUI/res/values/colors.xml里核对两个点:

  • 资源名称完全一致(大小写、下划线都不能错)
  • 更关键的:SystemUI里是直接用@color/system_primary_color,还是用?attr/system_primary_color?如果是属性引用,你需要覆盖的是属性而非颜色值:
    1. 在Overlay里创建res/values/attrs.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <attr name="system_primary_color" format="color" />
    </resources>
    
    1. 再创建res/values/styles.xml覆盖属性:
    <style name="SystemUI" parent="@android:style/Theme">
        <item name="system_primary_color">@color/system_primary_color</item>
    </style>
    

3. 检查Overlay的安装权限与启用状态

  • 文件权限修正:放到system/vendor/overlay后,必须确保权限正确,否则系统会忽略这个Overlay:
    adb shell chmod 644 /system/vendor/overlay/MyOverlay.apk
    adb shell chown root:root /system/vendor/overlay/MyOverlay.apk
    
  • 确认Overlay已启用:用命令查看状态,如果是disabled就手动启用:
    # 查看SystemUI相关Overlay状态
    adb shell dumpsys overlay com.android.systemui
    # 启用你的Overlay
    adb shell cmd overlay enable my.sample.package
    

4. 排除系统自带Overlay的干扰

用dumpsys overlay com.android.systemui命令查看Pixel和SysuiDarkTheme的优先级,把你的Overlay优先级设得比它们都高(比如30)。也可以临时禁用它们测试:

adb shell cmd overlay disable com.google.android.systemui.pixel
adb shell cmd overlay disable com.android.systemui.theme.dark

重启后看你的Overlay是否生效,再逐步调整优先级。

5. 资源限定符匹配问题

如果你的Overlay资源没有匹配设备的限定符(比如sailfish是Pixel 1,属于xhdpi、sw360dp),系统会优先加载SystemUI自带的资源。可以在Overlay的res目录下创建values-xhdpi或values-sw360dp目录,把colors_overridden.xml放进去,确保和设备的限定符一致。


内容的提问来源于stack exchange,提问作者dud3rino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:59:35