You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin DSL中为不同Flavor维度组合设置不同versionCode

为多维度Flavor组合设置不同versionCode的解决方案

你遇到的问题核心是Gradle中mergedFlavor的versionCode是只读属性(val),无法直接赋值,官方要求必须通过variant的outputs来设置versionCodeOverride。以下是具体实现方案:

在你的build.gradle.kts中,添加applicationVariants.configureEach代码块,遍历每个变体,根据Flavor组合的名称匹配对应的versionCode:

flavorDimensions.add("app")
flavorDimensions.add("server")

productFlavors {
    create("Appone") {
        val appName = "App One"
        applicationId = "com.app.one"
        dimension = "app"
        resValue("string", "appName", appName)
        manifestPlaceholders["launcherName"] = appName
    }

    create("Apptwo") {
        val appName = "App Two"
        applicationId = "com.app.two"
        dimension = "app"
        resValue("string", "appName", appName)
        manifestPlaceholders["launcherName"] = appName
    }

    create("live") {
        dimension = "server"
        manifestPlaceholders["appNameSuffix"] = ""
    }

    create("staging") {
        dimension = "server"
        applicationIdSuffix = ".staging"
        versionNameSuffix = "-staging"
        manifestPlaceholders["appNameSuffix"] = " Staging"
    }
}

// 新增:为不同Flavor组合设置versionCode
applicationVariants.configureEach {
    outputs.configureEach {
        val versionCode = when (flavorName) {
            "ApponeLive" -> 1
            "ApponeStaging" -> 2
            "ApptwoLive" -> 3 // 可根据需求添加其他组合的versionCode
            "ApptwoStaging" -> 4
            else -> 0 // 默认值,可调整
        }
        (this as com.android.build.gradle.internal.api.BaseVariantOutputImpl).versionCodeOverride = versionCode
    }
}

关键说明:

  • flavorName是Gradle自动生成的Flavor组合名称,格式为App维度名称+Server维度名称(注意首字母大写,比如Appone+live会变成ApponeLive)
  • 必须将outputs强制转换为BaseVariantOutputImpl才能访问versionCodeOverride(Kotlin中需要显式强转)
  • 可以根据需求扩展when语句,覆盖所有4种Flavor组合的versionCode设置

内容的提问来源于stack exchange,提问作者Akrit Khanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:18:19