AndroidOverlay机制

更新时间:2023-05-12 23:36:50 阅读: 评论:0

AndroidOverlay机制
前⾔
Android Overlay是⼀种资源替换机制,它能在不重新打包apk的情况下,实现资源⽂件的替换(res⽬录⾮asrt⽬录),Overlay⼜分为静态Overlay(Static Resource Overlay)与运⾏时Overlay(Runtime Resource Overlay)。
源码编译流程简介
Overlay的定制需要在源码编译环境中完成,所以先简单介绍Android的源码编译流程。
⾸先下载系统源码,配置好编译环境,然后进⼊源码根⽬录,在Linux shell终端中执⾏以下步骤即可。
图1-android源码⽬录结构
按照google给出的编译步骤如下:
1. source build/envtup.sh
该步骤主要是将Shell脚本envtup.sh中定义的⼀些函数命令加载到环境变量中,⽅便直接使⽤,source命令可替换成“.”命令。脚本⽂件的开头说明如下:
图2-envtup.sh
2. lunch
该步骤主要是选择平台编译选项,该命令会罗列出所有平台编译选项,如下图,输⼊相应数字即可党组的任务
图3-来⾃“⼿动编译源码”⼀⽂
参考图1中lunch命令说明,“build_varaint”可分为以下⼏类:
build_varaint Description
eng⼯程机,具备root权限以及⼀些debug⼯具
ur⽤户机,可正式销售给⽤户,⽆root权限、debug权限又大又软
urdebug在ur的基础上开放root、debug权限
3. make
执⾏编译,make命令会调⽤根⽬录下的Makefile⽂件,Makefile⼜包含 build/core/main.mk,main.mk⼜会包含build⽬录下其他的makefile⽂件来完成编译并打包得到系统镜像⽂件。
在这个编译过程会将packages/apps⽬录下的源码项⽬通过AAPT打包成APK,存放⾄system/app或者system/priv-app⽬录下,最后连同其他资源打包得到系统镜像,当然也可以将APK直接打包到系统镜像。
加入的拼音静态Over la y世界多极化
静态Overlay,简称为SRO,发⽣在编译时,需要在Android系统源码环境中进⾏配置。
配置步骤
官⽅源码⽰例Demo如下:
调皮小子
1.修改产品(backup应⽤)的mk⽂件,添加如下代码
⽰例⽂件路径:
android-6.0.0_r1\device\sample\products\backup_overlay.mk快热式电热水器
如果id表明是系统资源,那么就会去framework-res.apk中查找并返回资源,⼀般位于/system/framework⽬录下,可root⼿机查看;如果是应⽤资源则在overlay和app中查找并返回。
图6-RRO流程
单个overlay包
当对应项⽬只有⼀个overlay包时,那么查找资源时,会先从overlay.apk中进⾏查找,查找成功直接返回,反之则从app中查找。
立春吃什么传统食物多个overlay包
当对应项⽬具有多个overlay包时,会按照overlay包的优先级从⾼到底依次进⾏查找,如果overlay包都查找失败,才会到app中进⾏查找。
以访问R.drawable.ic_01为例,会先从overlay1包先查找,因为其优先级最⾼,查找到则直接返回。
如果访问R.drawable.ic_02,先从overlay1查找,查找失败,接着从overlay2中查找,查找到直接返回。
如果访问R.drawable.ic_03,依次从overlay1,overlay2中查找,查找失败,最后会从app中查找到,并返回。
理发师儿歌总结
SRO实际上只是利⽤AAPT重新打包,发⽣在编译时;RRO,才是overlay机制的关键,其本质是Android系统的动态资源查找机制。
实际运⽤当中,Overlay机制⼀般⽤于⼿机⼚商为不同运营商做客制化定制,或者做主题换肤;⼀般,第三⽅应⽤是⽆法享受该机制的,除⾮与⼿机⼚商合作,不过应⽤层现在也有了换肤框架Android-Skin-Loader,其本质也是利⽤Android的资源查找机制。

本文发布于:2023-05-12 23:36:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/605936.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:编译   查找   源码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图