gradle配置多渠道(动态设定App名称,应用图标等)

作者:燕歆波
导读:在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:
gradle配置多渠道(动态设定App名称,应用图标等)这样的配置在使用assembleRelease打包时,会出现异常
gradle配置多渠道(动态设定App名称,应用图标等)解决这个问题需要配置flavorDimensions属性:
可以直接配置在productFlavors节点的上面,然后在productFlavors下面每个分支下面配置dimension属性:
gradle配置多渠道(动态设定App名称,应用图标等)如果存在多个flavorDimensions,会出现问题,这里也牵扯到多维度的问题,可以自行了解;
如果需要统一一个flavorDimensions,也可以把flavorDimensions配置到defaultConfig下面,这样productFlavors下面的分支就不用都写上dimension属性了:

gradle配置多渠道(动态设定App名称,应用图标等)然后productFlvors下面分支的dimension的属性可以删除了,
最后,点击studio右上角的Gradle按钮:
gradle配置多渠道(动态设定App名称,应用图标等)然后双击assembleRelease,成功后在app/build/outputs下面查看打的包。