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

Android 14中预编译car-ui-lib的RRO适配问题排查

解决Android 14中RRO无法覆盖预编译car-ui-lib资源的问题

问题根源

你猜的没错:预编译的car-ui-lib.aar是作为依赖被静态打包进宿主应用(比如Settings、CarLauncher等)的,并非独立安装到系统的模块。RRO机制的目标必须是系统中已注册的独立应用/模块,因此直接针对com.android.car.ui包和car-ui-lib名称的RRO无法被系统识别。

正确解决方案

需要将RRO的目标改为实际引用car-ui-lib的宿主应用(比如AAOS中的Settings,包名com.android.settings),然后在RRO中直接覆盖合并到宿主应用里的car-ui-lib资源。

1. 修改AndroidManifest.xml

将targetPackage改为宿主应用的包名,移除无效的targetName和resourcesMap(针对系统应用RRO无需配置),推荐设置isStatic="true"确保开机自动加载:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.reply.settings_rro">

    <application android:hasCode="false" />
    <overlay
        android:isStatic="true"
        android:priority="10"
        android:targetPackage="com.android.settings" />
</manifest>

2. 调整Android.bp为专用资源Overlay模块

Android 14推荐使用android_resource_overlay模块构建系统应用的资源覆盖,比android_app更适配:

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

android_resource_overlay {
    name: "SettingsRRO",
    resource_dirs: ["res"],
    certificate: "platform",
    platform_apis: true,
    target_package: "com.android.settings",
}

3. 资源文件配置

直接在RRO的res目录下创建与car-ui-lib资源路径、名称完全一致的文件即可覆盖。比如要修改car-ui-lib的主色调:
在res/values/colors.xml中添加:

<resources>
    <color name="car_ui_primary">#FF00FF</color>
</resources>

无需添加com.android.car.ui前缀,因为该资源已经合并到宿主应用的资源池中。

4. 验证与部署

  • 编译后将RRO包推送到系统分区(比如/system/product/overlay/)
  • 重启系统,或执行命令启用动态Overlay(如果设置了isStatic="false"):
    cmd overlay enable com.reply.settings_rro
    

内容的提问来源于stack exchange,提问作者Alessandro Demofonti demoa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:33:21