Xcode构建阶段中xcodebuild clean命令失败,终端执行正常
问题分析与解决思路
核心原因
Xcode执行构建阶段脚本时,默认工作目录并非你的build.sh所在的项目根目录,而是Xcode的衍生构建目录(通常位于~/Library/Developer/Xcode/DerivedData/[项目名]-[随机串]/)。这就导致你脚本中使用的相对路径PHCore.xcworkspace会指向错误的位置,从而触发"无法打开工作区文件"的报错。
解决方案
在脚本开头添加切换工作目录的逻辑,强制切换到脚本所在的项目根目录,确保后续命令的相对路径生效:
# 获取当前脚本所在的绝对目录 SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd) # 切换到该目录,切换失败则退出脚本 cd "$SCRIPT_DIR" || exit 1 # 原脚本内容 rm -rf ./build &&\ rm -rf ./output &&\ xcodebuild \ clean \ -workspace PHCore.xcworkspace \ -scheme PHCore
额外排查验证步骤
- 确认Xcode执行时的工作目录:在脚本开头添加
echo "Current working directory: $(pwd)",查看Xcode构建日志中的输出,对比手动执行脚本时的工作目录,验证路径差异。 - 检查Xcode构建阶段设置:进入Xcode的"Build Phases" -> "Run Script",确认是否手动指定了"Working Directory",如果有,确保该路径指向项目根目录。
- 避免依赖
~路径:Xcode构建环境的用户上下文可能与终端不同,~的指向可能存在差异,使用绝对路径或通过脚本动态获取目录更可靠。
内容的提问来源于stack exchange,提问作者user15303385
相关产品推荐
相关产品推荐

