android studio 导入包分不分动态静态,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模式,也是不能实现的。最后只能通过回调,释放一个接口来实现。

动态配置包名

原理:通过 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 引用

总结

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

其他

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值