概念
通过配置build变体实现单个项目构建出不同的应用版本。例如我们针对不同的应用商店会出不同的应用版本,此时最合适的办法就是通过build变体来实现。也是google推荐的做法。
配置build类型
在我们创建项目的时候,Android Studio已经帮我创建了两中build类型,分别是debug和release。代码如下:
buildTypes {
debug {
isDefault = true
// signingConfig signingConfigs.debug
// versionNameSuffix "-${releaseTime()}"
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
我们可以通过在debug和release中使用signingConfig
来使用相同的签名。这样有时候会显得非常方便。
变种维度
变种维度,即一个产品变种组,必选将所有变种分配给某个变种维度;否则在构建的时候会出现以下异常
Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.
产品变种
配置变种和配置build类型类似,只需要按照如下方式将其配置到gradle中的productFlavors代码块中,在每个变种中可以设置不同的applicationId
也就是应用的包名,也可以重新给defaultConfig中的属性赋值,
flavorDimensions ”activate“
productFlavors{
free {
dimension "activate"
//会在应用的包名后面追加.free
applicationIdSuffix ".free"
versionNameSuffix "-free"
buildConfigField 'boolean', 'IS_FREE_TRIAL', 'true'
}
pro {
dimension "activate"
//会在应用的包名后面追加.pro
applicationIdSuffix ".pro"
buildConfigField 'boolean', 'IS_FREE_TRIAL', 'false'
}
}
以上定义了一个activate
的产品维度,并定义了一个免费版和专业版的产品变种。当创建好之后,点击Android Studio Sync Now就可以在Build > Select Build Variant中看到项目出现以下变体:
- freeDebug
- freeRelease
- proDebug
- proRelease
从变体的名称中我们可以看到变体的命名格式为<product-flavors><Build-type>
。