我是靠谱客的博主 鲤鱼星月,最近开发中收集的这篇文章主要介绍Android studio build.gradle动态配置Androidmanifest,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
概述
随着组件化的推进,在抽取推送模块的时候,想通过 build.gradle 动态配置 Androidmanifest 中应用包名,Log日志是否开启,以及推送 module 中配置平台申请的key( debug和release模式key值不同),如此就大大简化了一个组件的集成。
注意
library 默认是不支持debug模式的,也就是说在library中的build.gradle,debug模式的相关配置是不起作用的。Log日志要求debug模式开启;release模式关闭,也就不能实现了。平台申请的key也是分debug和release模式,也是不能实现的。最后只能通过回调,释放一个接口来实现。
- 解决方式:Gradle中Android Library默认不支持debug模式
动态配置包名
原理:通过 build.gradle 中的 manifestPlaceholders 配置,在 Androidmanifest 中通过占位符“${***}”获取。
- project跟目录中 build.gradle 中配置
这是一种方式,还有另外一种方式参考:gradle版本统一管理配置
ext {
packageName = [
appPackageName: '你应用的包名'
]
}
- library中build.gradle中配置manifestPlaceholders
buildTypes {
def packageName = rootProject.ext.packageName
release {
minifyEnabled false
manifestPlaceholders = [GRADLE_APP_PACKAGE_NAME : packageName.appPackageName]
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
manifestPlaceholders = [GRADLE_APP_PACKAGE_NAME : packageName.appPackageName]
}
}
- Androidmanifest 引用
<uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.${GRADLE_APP_PACKAGE_NAME}" />
- 总结
build.gradle动态配置Androidmanifest,其他相关配置都是同理,举一反三。
主Module分模式(debug&release)配置
以是否开启日志打印为例
- build.gradle 配置
buildTypes {
release {
// release 不显示Log
buildConfigField "boolean", "IS_SHOW_LOG", "false"
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
// debug 显示Log
buildConfigField "boolean", "IS_SHOW_LOG", "true"
}
}
- 调用(BuildConfig.IS_SHOW_LOG)
Log.e("zpan","=debug===IS_SHOW_LOG=====" + BuildConfig.IS_SHOW_LOG);
- 日志
E/zpan: =debug===IS_SHOW_LOG=====
true
其他
使用Gradle动态配置资源
作者:IT一书生
链接:https://www.jianshu.com/p/e64f0b89e570
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最后
以上就是鲤鱼星月为你收集整理的Android studio build.gradle动态配置Androidmanifest的全部内容,希望文章能够帮你解决Android studio build.gradle动态配置Androidmanifest所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复