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

在Azure DevOps Pipeline的Android Gradle脚本中访问预定义变量

在Azure DevOps Pipeline的Gradle脚本中访问Build.BuildNumber

嗨,我知道你从Bitrise切换到Azure DevOps时遇到了环境变量的适配问题,这其实只是个命名规则的小差异,很容易解决!

核心差异:Azure DevOps的环境变量命名逻辑

Azure DevOps会把预定义变量里的点(.)替换成下划线(_),并且全部转为大写格式。所以你要找的Build.BuildNumber对应的环境变量是**BUILD_BUILDNUMBER**——这就是和Bitrise的BITRISE_BUILD_NUMBER最关键的不同点。

修改你的Gradle脚本

只需要把获取构建号的那一行代码替换成下面的内容就行:

def buildNumber = System.getenv("BUILD_BUILDNUMBER") as Integer ?: 1

修改后的完整脚本示例:

apply plugin: 'com.android.application'
// When running on the CI, this will return the build-number. Otherwise use 1
def buildNumber = System.getenv("BUILD_BUILDNUMBER") as Integer ?: 1
android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    defaultConfig {
        applicationId "my.app.id"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode buildNumber
        versionName "1.0." + buildNumber
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    // ... 其他配置内容
}

额外注意事项

  • 如果你的Azure DevOps构建号包含非数字字符(比如带前缀的202405-123),直接转Integer会报错。这时候可以用正则提取数字部分:
    def buildNumberStr = System.getenv("BUILD_BUILDNUMBER") ?: "1"
    def buildNumber = buildNumberStr.replaceAll("\\D", "").toInteger() ?: 1
    
  • 要是不确定环境变量是否生效,可以在Pipeline里加一个Bash/PowerShell任务验证:
    • Bash:echo $BUILD_BUILDNUMBER
    • PowerShell:echo $env:BUILD_BUILDNUMBER

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:21