Android Gradle多版本apk打包持续更新中
在项目开发过程中,经常会被要求打出不同的apk版本,例如,友盟会针对不同的渠道打出对应的版本。怎么才能快速的打出多个版本的apk,而不是一遍一遍的重复打包过程呢?productFlavors轻松帮我们搞定。
配置app基本信息
// An highlighted block
flavorDimensions "app"
productFlavors {
// app1
app1 {
dimension "app"
applicationId "com.xxxxx"
// 自动生成@string/app_name为demo
resValue "string", "app_name", "AppName"
buildConfigField "String","APP_NUM",'"C01"'
}
}
各字段含义
1.flavorDimensions:产品风格
2.dimension :产品风格配置,也就是这个版本的apk是属于flavorDimensions内定义的app风格
3.applicationId:app的唯一标示,也可以理解成包名
4.resValue :配置res/value目录下,如string.xml文件内自定义的字段,像上面的app_name应用的名称
5.buildConfigField:自定义一些配置信息,例如针对不同版本的应用向服务器传递不同的参数,也可以配置不同的域名,生成的配置信息会保存到app\build\generated\source\buildConfig\app1\debug\packagename\BuildConfig.java内,可在项目代码内通过BuildConfig.APP_NUM调用
需要注意的是只要添加了productFlavors就必须要为它设置产品风格flavorDimensions,至少添加一种产品风格flavorDimensions “app”,如果有多种风格可直接在后边添加,如flavorDimensions “app”,"dev"
配置生成apk文件
android.applicationVariants.all {
variant ->
variant.outputs.all {
outputFileName = "appname${productFlavors[0].name+defaultConfig.versionName}.apk"
}
}
生成apk文件名称,productFlavors[0].name=app1,也就是productFlavors内的app1,defaultConfig.versionName为app的版本号