Android Studio - 用于设置版本的 productFlavor 组合
Android Studio - productFlavor combinations to set version
在我的 build.gradle
中,我定义了 2 个不同的风味维度:
//list flavorDimensions in override priority order
flavorDimensions 'flavor', 'platform'
//assign each productFlavor a corresponding flavorDimension
productFlavors {
flavor1 {
dimension 'flavor'
applicationId "com.flavor1"
}
flavor2 {
dimension 'flavor'
applicationId "com.flavor2"
}
mobile {
dimension 'platform'
applicationIdSuffix '.mobile'
minSdkVersion 22
}
tv {
dimension 'platform'
applicationIdSuffix '.tv'
minSdkVersion 21
}
}
我希望能够根据组合设置 versionCode
和 versionName
,因此以下每一个都可以有自己的版本信息:
- flavor1手机
- 版本名 = 1.0.0
- 版本代码 = 3
- flavor1Tv
- 版本名 = 1.0.2
- 版本代码 = 5
- flavor2Mobile
- 版本名 = 3.0.0
- 版本代码 = 10
- flavor2Tv
- 版本名称 = 2.0.0
- 版本代码 = 4
能够通过组合以下解决方案来构建解决方案:
https://developer.android.com/studio/build/gradle-tips#configure-dynamic-version-codes
project.ext{
flavor1Mobile_versionName = "1.0.0"
flavor1Mobile_versionCode = 3
flavor1Tv_versionName = "1.0.2"
flavor1Tv_versionCode = 5
flavor2Mobile_versionName = "3.0.0"
flavor2Mobile_versionCode = 10
flavor2Tv_versionName = "2.0.0"
flavor2Tv_versionCode = 4
}
project.android.applicationVariants.all {variant ->
def versionName = project.ext."${variant.flavorName}_versionName"
def versionCode = project.ext."${variant.flavorName}_versionCode"
variant.outputs.each { output ->
output.versionNameOverride = versionName
output.versionCodeOverride = versionCode
}
}
我遇到了同样的问题,解决方法略有不同,但根据此页面未来访问者的情况,它可能会有所帮助。
在您的全局 gradle.properties 文件中,您可以定义不同的版本:
flavor1_versionName=1.0.0
flavor2_versionName=1.2.3
mobile_versionName=1.0.1
tv_versionName=1.0.2
然后您可以在添加 productFlavors 的 build.gradle(:app) 文件中覆盖 versionName 参数:
productFlavors {
flavor1 {
dimension 'flavor'
applicationId "com.flavor1"
versionName = flavor1_versionName;
}
flavor2 {
dimension 'flavor'
applicationId "com.flavor2"
versionName = flavor2_versionName;
}
mobile {
dimension 'platform'
applicationIdSuffix '.mobile'
minSdkVersion 22
versionName = mobile_versionName;
}
tv {
dimension 'platform'
applicationIdSuffix '.tv'
minSdkVersion 21
versionName = tv_versionName;
}
}
在同一 build.gradle 文件中的 defaultConfig 块中,您可以说:
versionName version
project.version version
在我的 build.gradle
中,我定义了 2 个不同的风味维度:
//list flavorDimensions in override priority order
flavorDimensions 'flavor', 'platform'
//assign each productFlavor a corresponding flavorDimension
productFlavors {
flavor1 {
dimension 'flavor'
applicationId "com.flavor1"
}
flavor2 {
dimension 'flavor'
applicationId "com.flavor2"
}
mobile {
dimension 'platform'
applicationIdSuffix '.mobile'
minSdkVersion 22
}
tv {
dimension 'platform'
applicationIdSuffix '.tv'
minSdkVersion 21
}
}
我希望能够根据组合设置 versionCode
和 versionName
,因此以下每一个都可以有自己的版本信息:
- flavor1手机
- 版本名 = 1.0.0
- 版本代码 = 3
- flavor1Tv
- 版本名 = 1.0.2
- 版本代码 = 5
- flavor2Mobile
- 版本名 = 3.0.0
- 版本代码 = 10
- flavor2Tv
- 版本名称 = 2.0.0
- 版本代码 = 4
能够通过组合以下解决方案来构建解决方案:
https://developer.android.com/studio/build/gradle-tips#configure-dynamic-version-codes
project.ext{ flavor1Mobile_versionName = "1.0.0" flavor1Mobile_versionCode = 3 flavor1Tv_versionName = "1.0.2" flavor1Tv_versionCode = 5 flavor2Mobile_versionName = "3.0.0" flavor2Mobile_versionCode = 10 flavor2Tv_versionName = "2.0.0" flavor2Tv_versionCode = 4 } project.android.applicationVariants.all {variant -> def versionName = project.ext."${variant.flavorName}_versionName" def versionCode = project.ext."${variant.flavorName}_versionCode" variant.outputs.each { output -> output.versionNameOverride = versionName output.versionCodeOverride = versionCode } }
我遇到了同样的问题,解决方法略有不同,但根据此页面未来访问者的情况,它可能会有所帮助。
在您的全局 gradle.properties 文件中,您可以定义不同的版本:
flavor1_versionName=1.0.0
flavor2_versionName=1.2.3
mobile_versionName=1.0.1
tv_versionName=1.0.2
然后您可以在添加 productFlavors 的 build.gradle(:app) 文件中覆盖 versionName 参数:
productFlavors {
flavor1 {
dimension 'flavor'
applicationId "com.flavor1"
versionName = flavor1_versionName;
}
flavor2 {
dimension 'flavor'
applicationId "com.flavor2"
versionName = flavor2_versionName;
}
mobile {
dimension 'platform'
applicationIdSuffix '.mobile'
minSdkVersion 22
versionName = mobile_versionName;
}
tv {
dimension 'platform'
applicationIdSuffix '.tv'
minSdkVersion 21
versionName = tv_versionName;
}
}
在同一 build.gradle 文件中的 defaultConfig 块中,您可以说:
versionName version
project.version version