如何在Run Script构建阶段获取当前运行的Xcode Scheme名称?
解决方案:构建时自动获取Scheme名称(无需硬编码)
以下是几种适配CLI构建流程、无需硬编码Scheme名称的可行方案:
方案1:CLI调用时直接注入环境变量(最简方案)
在通过CLI执行xcodebuild命令时,将Scheme名称作为环境变量传入,Run Script构建阶段可直接读取该变量:
- 执行
xcodebuild时注入环境变量:
# SCHEME_NAME可通过CLI参数动态传入,替换为实际值 SCHEME_NAME="YourAppScheme" xcodebuild -scheme "$SCHEME_NAME" -workspace YourWorkspace.xcworkspace -configuration Debug build
- 在Run Script中使用变量:
# 直接读取注入的环境变量 echo "当前运行的Scheme: ${SCHEME_NAME}" # 后续业务逻辑基于该变量处理即可
方案2:通过Xcodeproj添加用户定义构建设置
如果需要在项目配置层面固化传递逻辑,可使用Xcodeproj为目标添加用户定义的构建设置,CLI调用时传入对应值:
- 用Xcodeproj脚本添加用户定义设置:
project = Xcodeproj::Project.open('YourProject.xcodeproj') # 替换为你的目标名称 target = project.targets.find { |t| t.name == 'YourAppTarget' } # 给所有构建配置添加CURRENT_SCHEME设置 target.build_configurations.each do |config| config.build_settings['CURRENT_SCHEME'] = '$(inherited)' end project.save
- CLI调用
xcodebuild时传入该设置的值:
xcodebuild -scheme "YourAppScheme" -workspace YourWorkspace.xcworkspace -configuration Debug CURRENT_SCHEME="YourAppScheme" build
- Run Script中读取变量:
echo "当前Scheme: ${CURRENT_SCHEME}"
方案3:临时文件传递Scheme名称
若不想修改项目配置或环境变量,可在CLI构建前将Scheme名写入临时文件,Run Script读取后清理:
- CLI构建前写入临时文件:
# 动态获取Scheme名并写入临时文件 echo "$TARGET_SCHEME" > /tmp/current_xcode_scheme.txt # 执行构建命令 xcodebuild -scheme "$TARGET_SCHEME" -workspace YourWorkspace.xcworkspace build
- Run Script中读取并清理:
CURRENT_SCHEME=$(cat /tmp/current_xcode_scheme.txt) echo "当前Scheme: ${CURRENT_SCHEME}" # 清理临时文件避免残留 rm /tmp/current_xcode_scheme.txt
内容的提问来源于stack exchange,提问作者Russell
相关产品推荐
相关产品推荐

