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

如何通过Gradle命令行设置Android应用的versionCode和versionName

Gradle命令行设置Android应用版本号的正确方案

错误原因

本次报错核心是两个问题:

  • 命令行传入的versionCode为字符串类型,但Android要求versionCode必须是整数,高版本Android Gradle Plugin(AGP)不再自动做类型转换,会直接报错
  • 未做参数存在性校验,若运行时没有传入对应变量,直接读取project.versionCode会导致配置解析失败

正确配置步骤

1. 修改app/build.gradle配置

在defaultConfig代码块中按如下方式调整版本配置,增加类型转换和兜底逻辑:

defaultConfig {
    // versionCode处理:优先取命令行参数,转整数,无传入则用默认值1
    versionCode project.hasProperty('versionCode') ? project.versionCode.toInteger() : 1
    // versionName处理:优先取命令行参数,无传入则用默认值1.0.0
    versionName project.hasProperty('versionName') ? project.versionName : "1.0.0"
    // 其余原有配置保持不变
    [...]
}

如果需要同时支持本地配置文件local.properties设置默认值(无需每次传参),可以使用完整配置:

// 放在android代码块之前,读取local.properties配置
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

android {
    defaultConfig {
        // 优先级:命令行参数 > local.properties配置 > 默认值
        versionCode project.hasProperty('versionCode') ? 
            project.versionCode.toInteger() : 
            (localProperties.getProperty('versionCode') ? localProperties.getProperty('versionCode').toInteger() : 1)
        versionName project.hasProperty('versionName') ? 
            project.versionName : 
            (localProperties.getProperty('versionName') ?: "1.0.0")
        // 其余原有配置保持不变
        [...]
    }
}

需要本地配置时在local.properties中添加如下内容即可:

versionCode=100
versionName=1.0.0

2. 执行打包命令

和你之前的使用方式一致,命令行传入参数即可生效:
./gradlew bundleRelease -PversionName=1.0.0 -PversionCode=100
如果需要打APK包,将bundleRelease替换为assembleRelease即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:36:01