XcodeGen构建iOS16/Xcode14单Target watchOS应用失败求助
排查XcodeGen生成单Target watchOS应用(iOS16/Xcode14)的构建错误
使用XcodeGen构建Xcode14(对应iOS16/watchOS9)新增的单Target watchOS应用时,触发以下重复输出文件的构建错误:
Prepare build note: Building targets in dependency order error: Multiple commands produce '/Users/martin/Library/Developer/Xcode/DerivedData/WatchTestGen-eqtccuxbzqoyuncgwdiwyamlfkpb/Build/Products/Debug-watchsimulator/WatchTestWatch Watch App.app/WatchTestWatch Watch App' note: Target 'WatchTestWatch Watch App' (project 'WatchTestGen'): CopyAndPreserveArchs /Users/martin/Library/Developer/Xcode/DerivedData/WatchTestGen-eqtccuxbzqoyuncgwdiwyamlfkpb/Build/Products/Debug-watchsimulator/WatchTestWatch Watch App.app/WatchTestWatch Watch App note: Target 'WatchTestWatch Watch App' (project 'WatchTestGen') has a command with output '/Users/martin/Library/Developer/Xcode/DerivedData/WatchTestGen-eqtccuxbzqoyuncgwdiwyamlfkpb/Build/Products/Debug-watchsimulator/WatchTestWatch Watch App.app/WatchTestWatch Watch App' Multiple commands produce '/Users/martin/Library/Developer/Xcode/DerivedData/WatchTestGen-eqtccuxbzqoyuncgwdiwyamlfkpb/Build/Products/Debug-watchsimulator/WatchTestWatch Watch App.app/WatchTestWatch Watch App' Build failed 2022-08-30 16:41 1.2 seconds
已知手动创建的WatchTest.xcodeproj可正常构建运行,但XcodeGen生成的WatchTestGen.xcodeproj构建失败,需使用Xcode14 Beta版本排查。
排查方向
- 对比手动项目与生成项目的Build Phases:重点检查
CopyAndPreserveArchs步骤是否重复出现,Xcode14的单Target watchOS App会自动处理主二进制的复制,XcodeGen可能因配置问题额外添加了重复的构建命令 - 检查
project.yml中Watch App Target的配置:确认Target类型是否为watch2app,是否重复引用了主可执行文件或添加了多余的copyFiles配置 - 验证XcodeGen版本:确保使用支持Xcode14单Target watchOS结构的最新版本,旧版本可能未适配Xcode14的新项目规范
- 对比两个项目的Build Settings:重点核对
EXECUTABLE_NAME、WRAPPER_EXTENSION、PRODUCT_NAME等字段,避免因命名冲突导致重复输出路径 - 检查
project.yml中的文件引用:确认是否将主可执行文件同时添加到了sources和resources列表中,造成重复打包
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

