Xcode 15.2归档失败:Objective-C老项目模拟器运行正常但归档报错
解决Xcode归档时「Multiple commands produce」路径冲突问题
你遇到的错误是因为Xcode归档阶段对构建输出的校验更严格,检测到多个构建命令试图生成同一个include目录,而模拟器构建时校验宽松所以未触发报错。针对有六年历史的Objective-C老项目,给你几个实用的解决办法:
检查重复的构建阶段配置
打开项目Target的Build Phases标签,重点查看Headers和Copy Files阶段:- 确认是否存在多个条目将头文件输出到同一个
iphoneos/include路径 - 排查不同Target的构建阶段是否重复生成该目录
删除重复条目,或调整输出路径避免重叠
- 确认是否存在多个条目将头文件输出到同一个
彻底清理构建缓存
先关闭Xcode,手动删除报错提示中的DerivedData目录:/Users/karamjeet.singh/Library/Developer/Xcode/DerivedData/HP_xxx-bfrshadjilbcluewhoduspxudcoa重新打开Xcode后,按下
Cmd+Shift+K清理构建文件夹,再尝试归档排查重复依赖问题
如果项目包含多个Target或静态库,检查是否存在重复依赖:- 确认是否有同一个子项目/静态库被多个主Target依赖,导致两次编译输出相同头文件
调整依赖关系,确保每个依赖仅被编译一次
- 确认是否有同一个子项目/静态库被多个主Target依赖,导致两次编译输出相同头文件
切换到Legacy构建系统(老项目专属)
打开File > Project/Workspace Settings,将构建系统从默认的「New Build System」改为「Legacy Build System」。老Objective-C项目使用该系统能规避很多新构建系统的兼容性问题
内容的提问来源于stack exchange,提问作者Karamjeet Singh
相关产品推荐
相关产品推荐

