目录

一、SRO–Static resource overly(静态替换)

1.1 添加路径,配置资源

1.2 编写mk文件

二、 RRO–Runtime resource overlay(运行时替换)

2.1 资源相关知识点

2.2编写RRO apk

2.3 RRO apk的安装


一、SRO–Static resource overly(静态替换)

SRO是在编译时完成的,为app或者framework加载不同的资源,这样可以针对不同项目使用不同的资源

1.1 添加路径,配置资源

编写overlay文件时注意一下:

  • 对于可以根据key区分的资源,我们的overlay文件名字可以不和源包里的文件名字一致;
           [例如]string, string, array, bool, style,dimen等。
  • 对于依靠文件名字区分的资源, 我们的overlay文件名字必须和源包里的文件名字一致;
            [例如]drawable,layout,menu,animation,raw等。

1.2 编写mk文件

将路径添加到PRODUCT_PACKAGE_OVERLAYS或DEVICE_PACKAGE_OVERLAYS变量中。
    PRODUCT_PACKAGE_OVERLAYS:用于一个指定的产品,即某个品牌的某个型号。
    DEVICE_PACKAGE_OVERLAYS: 用于某个品牌的所有产品。
    一般"device/" 路径下的overlay使用DEVICE_PACKAGE_OVERLAYS,而"vendor/"路径下的overlay使用    PRODUCT_PACKAGE_OVERLAYS。
   如果我们在编译时PRODUCT_PACKAGE_OVERLAYS和DEVICE_PACKAGE_OVERLAYS都被加载而且overlay了源包中的相 同的资源,那么PRODUCT_PACKAGE_OVERLAYS中的overlay资源会被最终使用。

DEVICE_PACKAGE_OVERLAYS += think/overlay

二、 RRO–Runtime resource overlay(运行时替换)

2.1 资源相关知识点

我们可以将Android资源类型分为三类

  1. 列表类型的xml资源文件,该类型的文件内部包含了多个资源项,典型的就是strings.xml,很多项目会有config.xml也大都是这种类型的文件。
  2. 值类型的xml文件,该类型的一个文件对应了一个资源项,比如layout目录下的布局文件,以及某些项目menu目录下的xml文件也大都是这种类型。
  3. 数据型资源文件,比如图片,音频,视频以及其他数据类型的文件,该类型的一个文件对应一个资源项。

2.2编写RRO apk

RRO apk中不包含code,只有资源配置。AndroidMenifest.xml文件是重点。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zhuang.demo"><overlay android:targetPackage="com.zhuang.demo" android:priority="1"/>
</manifest>

“android:targetPackage"是我们要替换资源的目标apk的包名,如果要替换framework下的资源,可以将"android:targetPackage"写成"android”。

2.3 RRO apk的安装

由于RRO 可以修改资源,所以出于安全方面的考虑,只有"vendor/overlay"和“product/overlay”目录下的overlay apk才被接收(system/vendor/overlay和vendor/overlay是相关联的; 基于Android P)。资源ID是在apk编译过程中生成的,而overlay apk的编译时不用目标apk, 所以overlay apk中的资源并不会和目标apk中的资源分配同样的ID。这样资源的匹配只能通过我们定义的字符名称来完成,而字符匹配比较慢。在apk安装的过程中,“idmap"工具会帮忙生成map, 用来帮助overlay apk和目标apk同步资源。这个map数据存储在手机的”/data/resource-cache"目录中

Android overlay使用相关推荐

  1. Android overlay简单总结

    本文简单总结Android 的overlay机制, 分为下面两部分: 1. SRO–Static resource overly(静态替换)  2. RRO–Runtime resource over ...

  2. Android overlay

    转自:http://blog.csdn.net/muojie/article/details/6010845 1. 测试代码 frameworks/base/libs/surfaceflinger/t ...

  3. Android 源码之overlay分析

    文章目录 前言 编译方式 前提 静态Overlay res 目录 运行时Overlay 与SRO的区别 配置步骤 存在的问题 RRO注意事项 资源ID 总结 关于源码中的device.mk 前言 An ...

  4. android 停用应用的命令,免Root使用ADB命令_停用手机系统应用

    菜鸟教程,老鸟勿喷! 对于未解锁的手机,总存在那么一些我们用不到,甚至看都不想看到的应用,但是没办法卸载,在这里提供一些禁用掉这些应用的方法供参考: 1. 开发者模式打开ADB调试 2. 连接电脑,在 ...

  5. linux内核epub,Android底层开发技术实战详解——内核、移植和驱动(第2版)[EPUB][MOBI][AZW3][42.33MB]...

    内容简介 本书从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核.移植和驱动开发的整个流程.全书分为21章,依次讲解驱动移植的必要性, Goldfish.OMAP内核和驱动解析,显示 ...

  6. 全志android平台下的SDK快速移植

     分享一下 全志平台的SDK移植过程: 第 5 页 共 18 页 1. 概述 T3 平台快速移植文档,本文基于 T3 T3-P1 方案. 1.1. 名词解释 1. vendor-name soft ...

  7. android 停用应用的命令,【ADB命令实战】免ROOT停用小米手机系统应用

    对于未解锁的手机,总存在那么一些我们用不到,甚至看都不想看到的应用,但是没办法卸载,在这里提供一些禁用掉这些应用的方法供参考:本内容是以小米的MIUI系统为例,其他品牌机型不确保可以成功,毕竟系统应用 ...

  8. 如何卸载Android自带系统应用

    听说MIUI14可以删除8个核心应用以外的所有app,然而更新MIUI14后,并不像说的那样.也有人说2022年10月后的机器才可以删除,原因是工信部的要求.反正我的手机不可行,那么本篇通过adb s ...

  9. Android图形合成和显示系统---基于高通MSM8k MDP4平台

    介绍了Android SurfaceFlinger层次以下的图形合成和显示系统,主要基于高通MSM8k MDP4x平台. 做为Android Display专题.SurfaceFlinger的详细介绍 ...

最新文章

  1. 读硕/博期间你积累了哪些重要的科研经验?
  2. java 计划日视图,GitHub - sddysz/calendarSchedule: 日程表,仿滴答清单,包含日视图、三日视图、周视图、月视图、列表视图、同步手机系统日程、添加日程...
  3. python爬虫程序实例-10个python爬虫入门实例
  4. 各种模板(数据结构图论)
  5. 127.0.0.1与localhost的区别
  6. View Agent Direct-Connection安装后,连接黑屏
  7. android内存优化发展——使用软引用
  8. joomla第一单元第四节K2类别设置和第五节项目视图选项
  9. sharepoint小 tip
  10. tinyint数据类型php筛选时怎么判断_PHP从入门到精通(三)PHP语言基础
  11. ES6--阮一峰版笔记
  12. CAD:AutoCAD快捷键指令大全(非常值得收藏),本人项目案例实践积累总结
  13. php background,CSS BACKGROUND定位背景上下左右偏移
  14. 谷歌浏览器如何设置internet选项
  15. linux光盘引导项,Linux制作grub引导光盘
  16. NLP标注工具:brat【可用于标注:实体、关系、事件、属性】【只能用于Linux下】【开源、免费】
  17. 随机手机号码_微信绑定了手机号码怎么解绑
  18. 三国群英传M玩亚服好还是台服好?服务器选择推荐
  19. 脚本安装爱普生790K打印机安装完成之后销毁程序(其他版本打印机更换inf文件即可)
  20. payjs 源码_自动发卡系统(包含前台以及后台管理系统),对接payjs支付(无须企业认证)...

热门文章

  1. 计算机音乐数字乐谱九九八十一,九九八十一
  2. sysbench用法
  3. Metasploit的简单木马免杀技术及后渗透面临的问题
  4. 【提升技能必备】这基本Android高级进阶的好书值得一看
  5. w10系统服务器如何创建新用户,小编教你win10怎么创建新用户账户
  6. 路由导航守卫 - 前置导航守卫 router.beforeEach
  7. Datepicker日期控件“今天”按钮点击没反应
  8. DECA的3D人脸重建(3D face reconstruction)
  9. jQuery 中的动画特效
  10. kubeadm部署K8S并使用containerd做运行时