CircleCI环境下如何命令行设置Xcode项目为Apple Generic版本控制?
问题
我有一个使用CircleCI和Fastlane的Cordova移动项目,希望通过Fastlane的以下代码实现构建号自动递增:
increment_build_number( build_number: app_store_build_number( initial_build_number: 1, version: get_version_number(xcodeproj: "...myproject.xcodeproj"), live: false ) + 1, )
但在CircleCI中运行任务时,该步骤报错:"Apple Generic Versioning is not enabled in this project."
CircleCI会执行创建全新iOS平台的步骤以保证环境干净,这可能导致设置恢复默认。我曾尝试跳过该步骤并手动设置versioning_system变量,但仍出现相同错误。由于无法在CircleCI任务中访问Xcode,请问是否可通过命令行将版本系统设置为Apple Generic?
解决方案
可以通过命令行直接修改Xcode项目配置,无需打开Xcode界面,以下是针对Cordova项目的具体实现步骤:
1. 使用xcodebuild命令配置版本系统
在CircleCI的任务流程中,执行完cordova platform add ios后,立即进入iOS项目目录(通常是platforms/ios/),运行以下命令为Debug和Release配置都开启Apple Generic版本控制:
# 替换成你的项目名称,Cordova生成的项目名通常和你的App名称一致 PROJECT_NAME="YourAppName" xcodebuild -project "$PROJECT_NAME.xcodeproj" -target "$PROJECT_NAME" -configuration Debug SETTINGS_VERSIONING_SYSTEM=apple-generic xcodebuild -project "$PROJECT_NAME.xcodeproj" -target "$PROJECT_NAME" -configuration Release SETTINGS_VERSIONING_SYSTEM=apple-generic
该命令会直接修改Xcode项目的构建设置,确保版本系统设置为Apple Generic,覆盖Cordova生成平台时的默认配置。
2. 整合到CircleCI流程的建议
调整你的CircleCI任务步骤顺序:
- 先执行
cordova platform add ios重新生成干净的iOS平台 - 立即运行上述
xcodebuild命令配置版本系统 - 最后执行Fastlane的构建号递增脚本
这样就能避免Cordova重新生成平台后覆盖设置的问题,确保Fastlane运行时版本系统配置已经生效。
内容的提问来源于stack exchange,提问作者C. Short
相关产品推荐
相关产品推荐

