当前位置:   article > 正文

gradle通过占位符动态配置Androidmanifest,多个manifestPlaceholders配置_gradle 配置manifest变量

gradle 配置manifest变量

部分集成的第三方SDK会通过Gradle.manifestPlaceholders字段注入在AndroidManifest中

两种方法如下:

1:通过Gradle.Flavor配置,代码如下

  1. productFlavors {  
  2.     JPushDebug {
  3.         applicationId packageName
  4.         manifestPlaceholders = [
  5.                 JPUSH_PKGNAME: applicationId,
  6.                 JPUSH_APPKEY : "appkey", //JPush上注册的包名对应的appkey.
  7.                 JPUSH_CHANNEL: "defaultChannel", //暂时填写默认值即可.
  8.         ]
  9.     }
  10.     JPushRelease {
  11.         applicationId packageName
  12.         manifestPlaceholders = [
  13.                 JPUSH_PKGNAME: applicationId,
  14.                 JPUSH_APPKEY : "appkey", //JPush上注册的包名对应的appkey.
  15.                 JPUSH_CHANNEL: "defaultChannel", //暂时填写默认值即可.
  16.         ]
  17.     }
  18. }


这种方式在打包的时候会产生额外的Build Variants(构建变量),改动较大。

下面详细介绍第二种方式:

2:通过Gradle.buildTypes字段配置,代码如下:

  1. buildTypes {
  2.     debug {
  3.         shrinkResources false // 移除无用的resource文件
  4.         minifyEnabled false //不启用混淆
  5.         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro',
  6.                 'proguard-fresco.pro'
  7.         //签名配置
  8.         signingConfig signingConfigs.debug
  9.         manifestPlaceholders = [
  10.                 JPUSH_PKGNAME: packageName,
  11.                 JPUSH_APPKEY : "appkey", //JPush上注册的包名对应的appkey.
  12.                 JPUSH_CHANNEL: "defaultChannel", //暂时填写默认值即可.
  13.         ]
  14.     }
  15.     release {
  16.         shrinkResources false // 移除无用的resource文件
  17.         minifyEnabled true //启用混淆
  18.         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  19.         //签名配置
  20.         signingConfig signingConfigs.release
  21.         manifestPlaceholders = [
  22.                 JPUSH_PKGNAME: packageName,
  23.                 JPUSH_APPKEY : "appkey", //JPush上注册的包名对应的appkey.
  24.                 JPUSH_CHANNEL: "defaultChannel", //暂时填写默认值即可.
  25.         ]
  26.     }
  27. }


原理讲解:

Gradle.manifestPlaceholders的配置等同于BaseConfigImpl.setManifestPlaceholders(Map<String, Object>)方法,如图所示:

buildTypes下的变量(如:debug、release)对应BuildType类,BuildType继承与BaseConfigImpl类,所以能够调用。如图所示:

 

 


————————————————
版权声明:本文为CSDN博主「飞露」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013083465/article/details/125103006

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/265467
推荐阅读
相关标签
  

闽ICP备14008679号