Xcode 9.3归档报错:Command /bin/sh failed with exit code 1 求助
解决Xcode 9.3归档时Command /bin/sh failed with exit code 1的问题
我之前也踩过Xcode 9.3归档时这个sh命令失败的坑,结合你给出的rsync命令片段,大概率是Frameworks目录的软链接或同步环节出了问题,给你几个针对性的排查和解决步骤:
先检查目标路径的合法性
看看命令里的目标路径:/Users/geoff/Library/Developer/Xcode/DerivedData/Cable_Park-bxyqeiprdndohveuzrnvtsybtjqh/Build/Intermediates.noindex/ArchiveIntermediates/Cable Park/BuildProductsPath/Release-iphoneos/Cable Park.app/Frameworks路径里包含空格(
Cable Park),虽然Xcode通常会自动处理转义,但建议手动确认这个目录是否存在,以及当前用户是否有读写权限——可以右键路径用终端打开,试试创建一个空文件测试权限。排查rsync命令的过滤规则
你给出的rsync命令里有一堆--filter规则,比如--filter "- Headers",要注意两点:- 命令片段最后是
--filter "- Modules...,看起来是被截断了,确认完整命令里Modules相关的过滤规则有没有语法错误; - 有没有某个过滤规则意外排除了需要同步的必要文件?比如误删了框架的核心文件。
可以临时注释掉这个rsync脚本(如果是自定义的Run Script Phase),再尝试归档,先定位是不是这个脚本导致的问题。
- 命令片段最后是
检查Run Script Phase的配置细节
如果这个rsync是项目里的Run Script Phase:- 确认脚本的Shell设置为
/bin/sh,工作目录是否正确; - 如果你是手动嵌入第三方框架,检查框架的
Copy only when installing选项是否勾选——归档时这个选项可能会影响文件复制逻辑,导致rsync找不到要同步的文件。
- 确认脚本的Shell设置为
其他实用排查技巧
- 试试重启Xcode甚至电脑,有时候清了DerivedData还会残留一些隐性缓存;
- 打开Xcode的Report Navigator(左侧导航栏最后一个图标),找到归档失败的日志条目,查看完整的错误输出——rsync命令后面通常会附带具体的失败原因,比如“找不到某文件”“权限不足”,完整日志能帮你精准定位问题;
- 检查项目里的第三方框架,有些旧框架可能不兼容Xcode 9.3的arm64编译规则,导致归档时同步失败。
内容的提问来源于stack exchange,提问作者Geoff
相关产品推荐
相关产品推荐

