用途:
客制化使用,在不需要更新app 的情况下修改app 的文本、国际化翻译、色值color等等。
使用
- 目标apk需要在AndroidManifest.xml中添加权限
<uses-permission
android:name="android.permission.CHANGE_OVERLAY_PACKAGES"
tools:ignore="ProtectedPermissions" />
- 打开Android Studio 编写overlay 的覆盖层apk,不用写代码,只需要配置AndroidManifest文件和 你想要修改的values,比如字符串,颜色等。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="目标的apk包名.overlay">
<application android:hasCode="false" />
<overlay
android:isStatic="true"
android:priority="1"
android:targetPackage="目标的apk包名" />
</manifest>
注意使用android:isStatic=“true” 表示overlay默认生效,需要在项目app目录下的build.gradle中配置最小sdk : minSdkVersion 26
- android:priority="1" 表示权重,
- 当同时存在多个同包名的overlay包时,优先取 权重数字大的
- 打包签名overlay包,特别注意需要与目标的apk使用相同的签名
- push 到/system/vendor/overlay 目录下(如文件夹不存在则创建),重启设备
- 重启后 使用命令行:
adb shell cmd overlay list --user current
查看当前设备所有的overlay包,如果结果的前缀是 [x] 表示已生效;如果overlay包中没有配置 android:isStatic=“true” 这个属性,这时的结果的前缀就是: [ ]。 表示还不可用,使用
adb shell cmd overlay enable 包名
这个命令即可激活overlay
最后,官方overlay地址:
https://source.android.google.cn/devices/architecture/rros#configuring-overlays
|