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

关于构建包含.bp与.xml文件的Android运行时资源叠加包(RRO)及打包部署的技术问询

构建包含.bp与.xml文件的Android运行时资源叠加包(RRO)及打包部署的技术问询

嘿,我来帮你理清楚怎么构建和部署这个Android运行时资源叠加包(RRO)的问题——我之前折腾过类似的系统Overlay定制,经验应该能帮到你。

一、先明确打包范围:不用管上层的全局配置文件

你完全不需要打包整个上层的Overlays文件夹(里面的Android.bp、CleanSpec.mk、OWNERS都是AOSP全局构建系统用的,单个RRO打包根本用不上),只需要针对你看中的那个子文件夹(比如你提到的AvoidAppsInCutoutOverlay对应的子目录)里的内容来打包:

  • 子文件夹里的AndroidManifest.xml(核心配置文件)
  • 整个res文件夹(包含所有要替换的资源文件:strings.xml、config.xml、各种资源子目录)
  • 子文件夹里的Android.bp(这个是AOSP构建用的,如果你用普通Android工具打包可以直接忽略)

二、两种打包方案:新手用快速工具,资深玩家用AOSP构建

方案1:用Android Studio/Gradle快速打包(推荐新手)

AOSP构建需要完整的源码环境,门槛太高,咱们用普通Android项目改造成RRO包就行:

  1. 新建一个空的Android项目,直接删掉默认生成的Activity、所有Java/Kotlin代码(因为RRO不需要执行代码,Manifest里已经写了android:hasCode="false")
  2. 把目标子文件夹里的res文件夹,完全替换掉新项目里的res文件夹
  3. 把新项目的AndroidManifest.xml完全替换成你找到的内容:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
        package="com.android.internal.display.cutout.emulation.avoidAppsInCutout" 
        android:versionCode="1" 
        android:versionName="1.0">
        <overlay android:targetPackage="android" 
            android:category="com.android.internal.display_cutout_emulation" 
            android:priority="0"/>
        <application android:label="@string/display_cutout_emulation_overlay" 
            android:hasCode="false"/>
    </manifest>
    
  4. 修改模块级别的build.gradle,适配RRO的要求:
    • 把minSdkVersion和targetSdkVersion设成和你手机系统版本匹配的数值(比如Android 11就设成30)
    • 在android代码块里添加配置,关闭Java编译(因为没有代码):
      android {
          // 其他已有配置...
          buildFeatures {
              androidResources true
              java false
          }
      }
      
  5. 点击Android Studio顶部的Build -> Build Bundle(s)/APK(s) -> Build APK(s),等编译完成就能拿到可用的RRO APK了

方案2:用AOSP构建(适合有源码环境的玩家)

如果你已经搭建好了完整的AOSP源码树:

  1. 把目标子文件夹复制到AOSP的frameworks/base/packages/Overlays/目录下(和其他系统Overlay放在一起)
  2. 确认上层的Android.bp已经包含了这个子模块的引用(你找到的源码里应该已经配置好了)
  3. 执行构建命令:make AvoidAppsInCutoutOverlay(这里的名称对应子文件夹里Android.bp的name字段)
  4. 构建完成后,APK会生成在out/target/product/[你的设备型号]/system/product/overlay/目录下

三、用Magisk部署RRO包

不管用哪种方式生成的APK,部署步骤都很简单:

  • 把APK传到手机的内部存储里
  • 打开Magisk,切换到「模块」页面,点击「从本地安装」,选中这个APK(Magisk会自动识别为Overlay模块)
  • 重启手机,这个RRO就会生效,系统会自动用你定制的资源替换原有的系统资源

几个关键细节要注意

  • <overlay>标签是RRO的核心:targetPackage指定要替换哪个应用的资源(这里是系统框架android),category是Overlay的分类,priority是优先级(数值越高越优先,同类型的多个Overlay会按优先级顺序覆盖)
  • res文件夹里的资源会直接替换targetPackage里的同名资源,比如config.xml里的配置项会直接覆盖系统框架里的对应配置
  • 如果你用Magisk部署,不需要手动把APK放到/vendor/overlay/,Magisk会自动帮你处理挂载逻辑

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:28:01