该方案是根据极光推送的官方配置方案而来,后续将推出gradle自定义插件的方式完成配置替换
目的
减少配置侵入、关键信息暴露
便于可变配置信息引入及替换
封装动态配置定义在Library内,由app
完成替换
注意:
- 当Library 的清单文件定义了替换key,
gradle
没有填写,在编译期会出现如下日志,只要app
内 填写正确,运行不受影响
日志详细信息:
1 | Error: |
- Library 如果与
app
同时配置,将会冲突导致都无效,及时Llbrary配置值为空,app已配置的也会被替换掉
Manifest 定义
- 常规定义:”${定义的内容}”
- 会出现数字的,读取时不会被读取为String类型,需要通过反斜杠转义 :”\ ${定义的内容}”
- 想动态替换的内容都可定义,并由gradle 完成替换
如:
1 | <!--动态配置meta-data的可变内容--> |
Gradle 配置替换
使用manifestPlaceholders=[]
各属性间使用英文逗号分隔,注意空格
如:
1 | manifestPlaceholders = [ |
当release 版本与debug需要区分时,可在buildTypes
内配置
如:
1 | buildTypes { |
当不需要区分时,可在defaultConfig
内配置
如:
1 | defaultConfig { |
代码读取
读取Manifest定义好的key
1 | val appInfo = mContext?.packageManager?.getApplicationInfo(mContext?.packageName, |
debug 包指定签名信息
目的
不打签名包直接运行也可实现签名包的效果,可有效减少耗时
如微信分享时,需要签名信息,每次验证都打包相对耗时较长,使用该方法,不打签名包也可实现
签名文件
需在module同级目录下
gradle
配置
1 | buildTypes { |
指定签名信息:
1 | signingConfigs { |