我在对具有多种口味和尺寸的Android应用程序进行版本控制时遇到问题。 项目配置如下: 三维:
flavorDimensions "company", "app", "server"
以及多种口味:
productFlavors {
company1 {
applicationId "com.com1"
dimension "company"
}
company {
applicationId "com.com2"
dimension "company"
}
app1 {
applicationId "com.app1"
dimension "app"
}
app2 {
applicationId "com.app2"
dimension "app"
}
sever1 {
dimension "server"
}
server2 {
dimension "server"
}
要忽略某些可能的混合,请通过在gradle文件中执行setIgnore来完成所有操作
variantFilter { variant ->
def names = variant.flavors*.name
if (names.contains("app1") && names.contains("sever2") ||
names.contains("app1") && names.contains("sever1") ||
names.contains("app2") && names.contains("company1") ||
names.contains("company") && names.contains("server2")) {
setIgnore(true)
}
}
一切都基于Advanced Android Flavors系列
因此,使用该配置,我不知道如何为不同的变体设置不同的版本。像
company1app1 {
versionCode 2
versionName "1.0." + versionCode
}
company2app1 {
versionCode 5
versionName "1.1." + versionCode
}
company1app2 {
versionCode 8
versionName "1.0." + versionCode
}
company1app2 {
versionCode 2
versionName "1.0." + versionCode
}
有解决方案吗?
答案 0 :(得分:1)
可能的解决方案:在defaultConfig
中添加行
versionCode computeVersionCode()
versionName computeVersionName()
computeVersionCode()
和computeVersionName()
可以是任意函数,例如:
def computeVersionCode(){
String flavor = getCurrentFlavor()
if (flavor.startsWith("company1app1")){
return 2
} else if (flavor.startsWith("company2app1")){
return 5
} else if (flavor.startsWith("company1app2")){
return 8
} else if (flavor.startsWith("company2app2")){
return 2
} else {
return 1
}
}
getCurrentFlavor()
在此处https://stackoverflow.com/a/44183316/5312102