如何在Android应用中获取TeamCity的teamcity.build.branch参数
获取TeamCity的teamcity.build.branch作为Android versionName的解决方案
问题根源
TeamCity的teamcity.build.branch属于内部构建参数,默认不会自动暴露给Gradle构建环境,所以直接用常规方法访问不到。
解决步骤
1. 在TeamCity中暴露参数
进入你的构建配置,打开「构建参数」面板:
- 添加系统属性:名称填
teamcity.build.branch,值设为%teamcity.build.branch%(直接引用TeamCity内部变量) - 或者开启「允许构建脚本访问TeamCity内部属性」的开关(部分版本在构建特性或参数设置里)
2. Gradle中获取并使用参数
在Module级的build.gradle里这样配置:
def branchName = project.findProperty("teamcity.build.branch") ?: "main" // 分支不存在时用默认值 android { defaultConfig { versionName branchName // 其他默认配置 } }
备选方案:通过环境变量传递
如果系统属性方式不生效,换用环境变量:
- 在TeamCity构建参数中添加环境变量:名称
TEAMCITY_BUILD_BRANCH,值%teamcity.build.branch% - Gradle中获取:
def branchName = System.getenv("TEAMCITY_BUILD_BRANCH") ?: "main"
验证参数是否能被获取
可以添加一个Gradle任务打印所有可用属性和环境变量,确认参数是否存在:
task checkBranchProp { doLast { println "=== Project Properties ===" project.properties.each { key, value -> println "$key: $value" } println "\n=== Environment Variables ===" System.getenv().each { key, value -> println "$key: $value" } } }
执行./gradlew checkBranchProp就能查看输出,确认目标参数是否已被正确传递。
内容的提问来源于stack exchange,提问作者Vyacheslav Doroshenko
相关产品推荐
相关产品推荐

