当前位置:   article > 正文

Android studio build.gradle通过占位符动态配置Androidmanifest_build.gradle manifestplaceholders

build.gradle manifestplaceholders

概述

随着组件化的推进,在抽取推送模块的时候,想通过 build.gradle 动态配置 Androidmanifest 中应用包名,Log日志是否开启,以及推送 module 中配置平台申请的key( debug和release模式key值不同),如此就大大简化了一个组件的集成。

注意

library 默认是不支持debug模式的,也就是说在library中的build.gradle,debug模式的相关配置是不起作用的。Log日志要求debug模式开启;release模式关闭,也就不能实现了。平台申请的key也是分debug和release模式,也是不能实现的。最后只能通过回调,释放一个接口来实现。

动态配置包名

原理:通过 build.gradle 中的 manifestPlaceholders 配置,在 Androidmanifest 中通过占位符“${***}”获取。

  1. ext {
  2. packageName = [
  3. appPackageName: '你应用的包名'
  4. ]
  5. }
  • library中build.gradle中配置manifestPlaceholders
  1. buildTypes {
  2. def packageName = rootProject.ext.packageName
  3. release {
  4. minifyEnabled false
  5. manifestPlaceholders = [GRADLE_APP_PACKAGE_NAME : packageName.appPackageName]
  6. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  7. }
  8. debug {
  9. manifestPlaceholders = [GRADLE_APP_PACKAGE_NAME : packageName.appPackageName]
  10. }
  11. }
  • Androidmanifest 引用
<uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.${GRADLE_APP_PACKAGE_NAME}" />
  • 总结
    build.gradle动态配置Androidmanifest,其他相关配置都是同理,举一反三。

主Module分模式(debug&release)配置

以是否开启日志打印为例

  • build.gradle 配置
  1. buildTypes {
  2. release {
  3. // release 不显示Log
  4. buildConfigField "boolean", "IS_SHOW_LOG", "false"
  5. minifyEnabled false
  6. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  7. }
  8. debug {
  9. // debug 显示Log
  10. buildConfigField "boolean", "IS_SHOW_LOG", "true"
  11. }
  12. }
  • 调用(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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号