如何用Fastlane递增Build Number且不修改项目文件?
问题
我正在用Fastlane配置iOS应用的构建流程,想实现基于TestFlight的最新构建版本递增Build Number并上传构建包,但不修改项目文件,不想让Build Number的变更污染Git提交历史。目前我们的应用通过Xcode Cloud构建,项目文件里的CURRENT_PROJECT_VERSION一直保持为1。
解决方案
你的思路完全可行,核心逻辑是临时修改Build Number用于构建,完成后恢复原值,这样不会留下项目文件的永久变更,也就不会污染Git历史。具体实现代码如下:
# 获取当前应用的版本号 current_version = get_version_number() # 拉取TestFlight上对应版本的最新Build Number previous_build_number = latest_testflight_build_number( api_key: api_key, app_identifier: app_identifier, version: current_version ) # 计算本次构建要使用的Build Number current_build_number = previous_build_number + 1 # 临时修改项目的Build Number为目标值 increment_build_number( build_number: current_build_number ) # 执行iOS应用构建(根据实际需求补充scheme、workspace等参数) build_ios_app( scheme: "YourAppScheme", workspace: "YourApp.xcworkspace" # 其他构建参数,比如export_method等 ) # 构建完成后,将Build Number恢复为初始值1 increment_build_number( build_number: 1 )
关键说明
- 整个流程中,
increment_build_number仅在本地临时修改项目文件,只要不主动提交这些变更,就不会影响Git仓库的历史记录。 - 如果是在Xcode Cloud这类CI环境中运行,构建任务结束后环境会被销毁,本地的临时修改会自动消失,完全不会改动仓库里的原始项目文件。
- 确保
latest_testflight_build_number能正常获取数据,需要提前配置好Apple API密钥,且密钥拥有访问TestFlight构建信息的权限。
内容的提问来源于stack exchange,提问作者andrei
相关产品推荐
相关产品推荐

