Android overlay总结:
参考文档:
https://blog.csdn.net/weixin_33834910/article/details/91487504
Android 系统 overlay 机制重点小结
https://blog.csdn.net/qq_32014215/article/details/109743673
用framework-res.apk覆盖编译方式由RRO替换为SRO
https://www.jianshu.com/p/a361bd936fda
Android中的overlay机制
https://blog.csdn.net/wh_19910525/article/details/39254815
Android平台Overlay机制
1,多个overlay的优先级判定
在mk文件中通过定义PRODUCT_PACKAGE_OVERLAYS或DEVICE_PACKAGE_OVERLAYS变量,后面可以加上多个overlay目录路径,
以此来实现多个overlay目录。但是这些目录是有优先级顺序的,
PRODUCT_PACKAGE_OVERLAYS下的目录优先级高于DEVICE_PACKAGE_OVERLAYS下目录的优先级,
写在前面的目录优先级高于写在后面目录的优先级。
PRODUCT_PACKAGE_OVERLAYS := $(xxx)/overlay $(PRODUCT_PACKAGE_OVERLAYS)
DEVICE_PACKAGE_OVERLAYS := $(xxx)/overlay $(DEVICE_PACKAGE_OVERLAYS)
2,PRODUCT_ENFORCE_RRO_TARGETS += framework-res 配置了RRO(Runtime Resource Overlay)
所以,执行 make framework && make framework-minus-apex && make framework-res 命令编译时,
会把RRO资源编译到:
vendor/overlay/framework-res__auto_generated_rro_vendor.apk(DEVICE_PACKAGE_OVERLAYS的RRO)
或
product/overlay/framework-res__auto_generated_rro_product.apk(PRODUCT_PACKAGE_OVERLAYS的RRO)
验证overlay字符资源是否生效命令:adb shell cmd overlay lookup --verbose
例如,把config_multiuserMaximumUsers overlay覆盖为新的值,验证是否生效。
执行如下命令:adb shell cmd overlay lookup --verbose android android:integer/config_multiuserMaximumUsers
或者通过apktool工具反编译看一下字符资源:
./apktool d framework-res.apk
./apktool d framework-res__auto_generated_rro_vendor.apk
PRODUCT_ENFORCE_RRO_TARGETS
PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS
版权声明:本文为luoqingyan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。