Android Studio - комбинация productFlavor для установки версии
В моем 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
на основе комбинаций, поэтому каждое из следующих значений может иметь собственную информацию о версии:
- flavor1Mobile
- versionName = 1.0.0
- versionCode = 3
- flavor1Tv
- versionName = 1.0.2
- versionCode = 5
- flavor2Mobile
- versionName = 3.0.0
- versionCode = 10
- flavor2Tv
- versionName = 2.0.0
- versionCode = 4
1 ответ
Был в состоянии построить решение, объединив решения из:
- /questions/19056726/put-k-kodu-na-vkus-v-android-gradle/19056738#19056738
https://developer.android.com/studio/build/gradle-tips
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
Затем вы можете просто переопределить параметр versionName в вашем файле build.gradle(:app), в который вы добавляете свой productFlavors:
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;
}
}
В блоке defaultConfig того же файла build.gradle вы можете сказать:
versionName version
project.version version