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

火山引擎 最新活动