Build Variants Android变体构建配置
主Module中build.gradle
- defaultConfig
defaultConfig {
applicationId "XXX.XXX.com.XXX"
minSdkVersion 16
targetSdkVersion 28
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
- signingConfigs
signingConfigs {
config {
keyAlias 'XXX'
keyPassword 'XXX123'
storeFile file('D:/XXX/XXX.jks')
storePassword 'XXXX'
}
}
- buildTypes
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
- productFlavors
flavorDimensions "fix"
productFlavors {
online {
versionCode 1//该风味版本码
versionName "1.0"//该风味版本名称
dimension "fix"
}
offline {
versionCode 2//该风味版本码
versionName "2.0"//该风味版本名称
dimension "fix"
applicationIdSuffix ".fix"//设置该风味applicationId,会在原有得applicationId后面追加.fix(至此online风味包与offline风味包可以在同一部机器上共存,相当于马甲包了)
versionNameSuffix "-fix"//设置该风味版本名称,会在原有得versionName后面追加-fix
}
}
- 为打包好的APK重新命名
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
Sync Now 查看变体类型
为APP设置不同风味的名字,启动图标
-
设置不同的app name
offine/res/values/strings.xml
目录中的文件也会与main/res/values/strings.xml
合并在一起。main包中app name值会被风味包中app name值替换掉。 -
设置不同的启动图标
风味包中res/
和asset/
目录中的资源将与main包合并,若值相同将以风味包中为准。 -
清单文件也会被合并
-
java文件合并,若风味包与main包中有相同的java文件,编译时将会报错。解决办法是将该java文件单独放到风味包中,合并时候就会将风味包中的文件并入main包中。