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

在Azure Pipelines中获取feature分支名 实现APK按分支标签重命名

解决方案

方案1:通过Azure Pipelines预定义变量处理(最稳定,不受仓库切分支影响)

Azure Pipelines启动时会自动将触发流水线的分支完整路径写入内置变量Build.SourceBranch,该变量值不会随后续仓库分支切换操作变更,完全规避切回HEAD后无法获取原触发分支名的问题。

步骤1:提取目标APK文件名

在流水线的Checkout任务之后、构建任务之前添加脚本任务,提取分支名的最后一段作为APK文件名:

  • Linux/macOS 代理(Bash 脚本):
sourceBranch="$(Build.SourceBranch)"
# 截取分支路径最后一段,例如 refs/heads/feature/Android_fix_something 得到 Android_fix_something
apkName="${sourceBranch##*/}"
# 将结果写入流水线全局变量,后续所有任务可直接调用
echo "##vso[task.setvariable variable=ApkOutputName]$apkName"
  • Windows 代理(PowerShell 脚本):
$sourceBranch = "$(Build.SourceBranch)"
$apkName = $sourceBranch.Split('/')[-1]
Write-Host "##vso[task.setvariable variable=ApkOutputName]$apkName"

步骤2:重命名生成的APK

在Gradle构建完成后添加重命名任务即可:

  • Bash 示例:
mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/$(ApkOutputName).apk
  • PowerShell 示例:
Move-Item -Path "app/build/outputs/apk/release/app-release.apk" -Destination "app/build/outputs/apk/release/$(ApkOutputName).apk"

方案2:在Gradle中直接配置APK输出名

你也可以直接修改模块级build.gradle配置,构建时直接生成对应名称的APK,不需要额外执行重命名步骤:

android {
    // 保留你原有的其他配置不变
    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            // 读取流水线传入的ApkOutputName变量,本地调试时无变量则用default命名
            def outputName = System.getenv("ApkOutputName") ?: "default"
            outputFileName = "${outputName}.apk"
        }
    }
}

补充说明

如果触发流水线的是标签而非分支,只需要将脚本中的Build.SourceBranch替换为对应标签变量即可,提取逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:36:03