4

我们有一个应用程序,它具有 3 种构建类型(alpha、beta、release)和几种产品风格,这些产品风格取决于应用程序部署所在的国家/地区。

我正在尝试自动化我们的 gradle 任务,但我不知道如何在不同的 buildTypes 之间更改版本代码。这个想法是让版本代码采用“major.minor.patch.”的形式。

我当前的 gradle 默认配置如下所示:

final VERSION_MAJOR = 0
final VERSION_MINOR = 7
final VERSION_PATCH = 1

android {
    defaultConfig {
        applicationId "com.app"
        multiDexEnabled true
        versionName "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
        versionCode VERSION_MAJOR * 10000000 + VERSION_MINOR * 100000 + VERSION_PATCH * 1000
    }

我试图更改特定 buildType 中的 versionCode,但这是不可能的,因为 buildTypes 不包含此字段。

我收到错误“错误:无法为 com.android.build.gradle.internal.api.ApplicationVariantImpl 类型的对象设置只读属性 'versionCode' 的值。” 对于以下功能:

applicationVariants.all { variant ->
    if(variant.buildType.name.equals("release"))
        variant.versionCode += 0
    if(variant.buildType.name.equals("beta"))
        variant.versionCode += 1
    if(variant.buildType.name.equals("debug"))
        variant.versionCode += 2
    }
}

我不知道如何解决这个问题。我显然不能使用不同的风味,因为我们已经使用风味来指定国家/地区。PS:我知道Use different VersionCode for Debug/Release android gradle build,但他们正在改变版本代码。

4

0 回答 0