XCode 15编译报错‘cp: path. is not a directory’求助
Xcode 15编译报错
cp: path. is not a directory排查方案 优先排查步骤
- 打开
Edit Scheme→Build标签页,仔细检查Pre-actions和Post-actions里的所有脚本——哪怕你删了项目内的预构建脚本,Scheme层面的动作很可能被漏掉了。Xcode 15对路径解析更严格,旧版本能跑的相对路径写法新版本可能直接报错。 - 用Xcode全局搜索(
Cmd+Shift+F)搜cp,把所有脚本文件、Run Script Build Phase甚至配置文件里的cp命令都过一遍,重点找有没有漏写目标路径、或者路径末尾多打了.的情况(报错里的path.大概率是路径解析出问题导致的)。 - 如果你用了CocoaPods、Carthage这类依赖工具,把依赖更到适配Xcode 15的版本。不少旧依赖的构建脚本在Xcode 15下会出路径问题,比如依赖包里的Run Script用了过时的环境变量。
- 去
Report Navigator里找失败的构建记录,把所有日志展开看——虽然临时脚本SchemeScriptAction-xxx.sh会被删,但完整日志里能看到触发cp的上下文,直接定位问题来源。 - 删了项目下的
.xcodeproj/xcuserdata或.xcworkspace/xcuserdata文件夹(这会重置Scheme的自定义配置),重新生成Scheme再试构建。
SchemeScriptAction相关说明
- 生成逻辑:
SchemeScriptAction-xxx.sh是Xcode构建时临时生成的脚本,专门用来跑Scheme里配置的Pre-actions或Post-actions,构建完就自动删了,所以你找不到很正常。 - 来源:它的内容完全照搬你Scheme里的
Pre/Post-actions配置,还有项目中Run Script Build Phase的脚本。要是这些配置里有路径错误(比如引用了不存在的目录、相对路径解析失败),生成的临时脚本执行cp时就会炸。
额外排查点
- 检查项目
Build Settings里的COPY_PHASE_STRIP、COPY_FILES相关配置,确认路径设置没毛病。 - 建个新的Xcode 15空项目,把原项目的代码和资源一点点迁过去,排查是不是
.pbxproj配置文件损坏导致的问题。
内容的提问来源于stack exchange,提问作者TheJeff
相关产品推荐
相关产品推荐

