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

Android Studio按Flavor重命名AAB/APK遇版本号错误求解决方案

解决方案

你的问题核心在于:archivesBaseName是全局属性,配置多个Flavor时,后执行的Flavor配置会覆盖之前的设置,导致所有输出文件都使用最后一个Flavor的versionCode(也就是PROD的3)。

推荐使用针对每个构建变体单独配置输出文件名的方式,避免全局属性覆盖问题,同时逻辑更清晰可靠。

步骤1:定义版本映射(替代原静态方法)

用Map存储Flavor与versionCode的对应关系,比静态方法更直观易维护:

// 定义Flavor对应的versionCode
def flavorVersionMap = [
    "sit": 111,
    "uat": 2,
    "prod": 3
]
// 统一版本名称
def appVersionName = "1.1.0"
// 项目名称
def projectName = "MyApp"

步骤2:配置Product Flavors的版本信息

在productFlavors中直接引用上面的映射:

productFlavors {
    sit {
        versionCode flavorVersionMap["sit"]
        versionName appVersionName
    }
    uat {
        versionCode flavorVersionMap["uat"]
        versionName appVersionName
    }
    prod {
        versionCode flavorVersionMap["prod"]
        versionName appVersionName
    }
}

步骤3:自定义输出文件名

在android闭包中添加变体遍历逻辑,为每个输出文件单独设置名称:

android {
    // ... 其他已有配置(compileSdk、defaultConfig等)

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // 获取当前变体的关键信息
            def flavorName = variant.flavorName.toLowerCase()
            def versionCode = variant.versionCode
            def versionName = variant.versionName
            def extension = output.outputFile.extension

            // 按照目标格式拼接文件名
            def outputFileName = "${projectName}_${versionCode}_${versionName}-${flavorName}.${extension}"

            // 替换输出文件路径与名称
            output.outputFile = new File(output.outputFile.parent, outputFileName)
        }
    }
}

效果验证

构建后会生成符合要求的文件名:

  • SIT环境:MyApp_111_1.1.0-sit.aab/MyApp_111_1.1.0-sit.apk
  • UAT环境:MyApp_2_1.1.0-uat.aab/MyApp_2_1.1.0-uat.apk
  • PROD环境:MyApp_3_1.1.0-prod.aab/MyApp_3_1.1.0-prod.apk

补充说明

如果版本名称需要动态获取(比如从文件或Git标签),可以把appVersionName改成方法实现,比如:

def fetchVersionName() {
    // 这里可以添加动态获取逻辑,比如读取gradle.properties或Git标签
    return "1.1.0"
}

然后在productFlavors中使用versionName fetchVersionName()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:31