Android 的overlay机制

如何使用overlay完成app的客户定制?

一、510平台代码customer关于overlay配置关系梳理如下

common/xxx_Default_Property.mk:306 
PRODUCT_PACKAGE_OVERLAYS := $(xxx_TMP_CUSTOMER)/overlay $(PRODUCT_PACKAGE_OVERLAYS)
看到没,已添加了PRODUCT_PACKAGE_OVERLAYS 控制项
该xxx_Default_Property.mk 最后被include 到一般为
ID_BD_xxxx_COMMON/device_xxxx_hi3751_Others/device.mk文件里,而改文件又会被cp 到Android/device/xxx/HisiV510目录下面,
而这个device.mk进一步又会include build/core/下面的product.mk里面(也就是device.mk最终会被连到android系统的mk里面)

总之上面一大堆废话 == customer 里面的xxxx_Property.mk 已将PRODUCT_PACKAGE_OVERLAYS 连到了android 编译的mk系统里面
所有,关于android app 或者 framewroks的资源文件定制,只需xxxxx/customer/readme.txt 格式添加文件即可,编译即能生效

补充一点,关于PRODUCT_PACKAGE_OVERLAYS 与DEVICE_PACKAGE_OVERLAYS 资源一样的时候,以PRODUCT_PACKAGE_OVERLAYS 为准,为啥?(因为前者优先级高)
为了,检验你定制的资源文件是否生效,可参见这这里

什么是overlay

Android overlay就是用来偷懒,或者说更好的实现packages下面、framework一些关于资源文件、主题、皮肤文件的定制修改,而不用动到app的源码的机制,极大的方便了应用开发的兄弟们疯狂的满足客户化定制需求。

overlay如何加方能生效?

翻阅了google+baidu+实际走坑调试总结了如下:
大致干两件事情即可使用,异常方便,实用
一、创建overlay目录,该目录下文件一定要与需要定制的文件目录一致
二、告诉android的mk系统,你要使用overlay去定制某个app的资源文件
好了,废话了一大堆,看代码吧

example : 
例如 需要定制 packages/apps/Bluetooth/res 下面的资源文件
1. 创建overlay目录
 这里在customer/customer_xxx/目录下创建
android/overlay/packages/apps/Bluetooth/res
假如这里的overlay目录绝对路径为OverLay_Dir
1.1 将定制的资源文件扔到上面的目录里
2. 在device.mk 里面 添加
PRODUCT_PACKAGE_OVERLAYS : = $(OverLay_Dir)

好了,打完收工,直接编译即可
一般性会出现以下打印,说明声明的overlay定制已生效

*** Overlay change detected, clean shared intermediate files...
*** rm -rf out/target/common/obj/APPS/Bluetooth_intermediates
PRODUCT_COPY_FILES device/hisilicon/bigfish/bluetooth/rtkbt/bluetooth/../firmware/uart/rtl8723a_fw:system/etc/firmware/rtl8723a_fw ignored.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,968评论 25 709
  • 前言 Android Overlay是一种资源替换机制,它能在不重新打包apk的情况下,实现资源文件的替换(res...
    GrayMonkey阅读 38,171评论 1 27
  • 栏子,我不值得你这么爱我。栏子,你听我说发生了什么。昨天,我和爸妈通话,我说了你的事情,我爸妈坚决不同意,他们觉得...
    咕咕猫阅读 1,472评论 0 0
  • 对 Strong-Weak Dance 的思考 在使用Block时,除了使用__weak修饰符避免循环引用外,还有...
    MCWorld阅读 2,707评论 0 1
  • 前言 Q库为nodejs提供了一个基于promise的编程方式,从此避免了一层又一层的callback调用。不过Q...
    泡沫与周期_白羊Jerry阅读 5,699评论 0 1

友情链接更多精彩内容