作者:燕歆波
導讀:在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下面查看打的包。