作者:燕歆波
导读:在gradle中配置动态设定App名称,应用图标等,为了解决重复替换图标,app名称多次打包的问题
gradle提供了productFlavors节点针对不同的版本做不同的配置:
比如有【游戏一】,【游戏二】,【游戏三】需要打包:
defaultConfig {
applicationId "com.xin.wallepackage"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
productFlavors{
fruit{
applicationId "com.xinbo.fruit"
manifestPlaceholders = [app_name:"水果A",icon:"@mipmap/ic_fruit"]
signingConfig signingConfigs.xinbo
}
hais{
applicationId "com.xinbo.hais"
manifestPlaceholders = [app_name:"haisA",icon:"@mipmap/ic_black"]
signingConfig signingConfigs.xinbo
}
auncher{
applicationId "com.xinbo.auncher"
manifestPlaceholders = [app_name:"auncher",icon:"@mipmap/ic_launcher"]
signingConfig signingConfigs.xinbo
}
}
在每个分之下都配置了applicationId属性,这样打包之后避免了覆盖安装的问题,然后对于不同的app,图标和名称也要求不一样,所以在分支下都配置了manifestPlaceholders属性,里面配置了app_name和icon字段,配置好后,需要在minifest中配置meta-data:
这样的配置在使用assembleRelease打包时,会出现异常
解决这个问题需要配置flavorDimensions属性:
可以直接配置在productFlavors节点的上面,然后在productFlavors下面每个分支下面配置dimension属性:
如果存在多个flavorDimensions,会出现问题,这里也牵扯到多维度的问题,可以自行了解;
如果需要统一一个flavorDimensions,也可以把flavorDimensions配置到defaultConfig下面,这样productFlavors下面的分支就不用都写上dimension属性了:
然后productFlvors下面分支的dimension的属性可以删除了,
最后,点击studio右上角的Gradle按钮:
然后双击assembleRelease,成功后在app/build/outputs下面查看打的包。