Xcode 10 beta3 Error: Multiple commands produce

本文解决Xcode10beta3版本下项目编译失败的问题,通过两种方法修复了由新buildsystem引起的错误。一种是修改CopyPodsResources阶段的OutputFiles设置,另一种是切换回legacybuildsystem。

转载https://www.jianshu.com/p/8a8444acdca5

最近开发一直在使用Xcode10 beta版本的,今天升级到Xcode10 beta3,但是在编译项目时编译失败,报错内容:

屏幕快照 2018-07-09 上午10.28.06.png

error: Multiple commands produce '/Users/xiaoyuan/Library/Developer/Xcode/DerivedData/Boobuz-gnxeuntgkenwgdgycqnvabqubafh/Build/Products/Debug-iphoneos/Boobuz.app':
1) Target 'Boobuz' has create directory command with output '/Users/xiaoyuan/Library/Developer/Xcode/DerivedData/Boobuz-gnxeuntgkenwgdgycqnvabqubafh/Build/Products/Debug-iphoneos/Boobuz.app'
2) That command depends on command in Target 'Boobuz': script phase “[CP] Copy Pods Resources”

引用简友guifu_tang的一句话原因是Xcode 10 默认使用的build system是New build system,与Xcode9不同导致。

  • 第一种方法 不修改build system
    分析build error 日志,错误发生在Copy Pods Resources,而且与output有关,应该是使用了cocoapods导致的,尝试删除该项目target-Copy Pods Resources-Output Files,成功解决问题。
选中项目target -> Build phase -> Copy Pods Resources -> Output Files -> 移除${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH} -> Build

屏幕快照 2018-07-09 上午10.39.03.png

  • 第二种方法 修改build system
    在Xcode菜单栏 -> File -> Workspace Setting,将build system修改为legacy build system,然后clean后编译。

     

    屏幕快照 2018-09-27 下午12.46.58.png



作者:swift_kim
链接:https://www.jianshu.com/p/8a8444acdca5
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

<think>好的,我现在需要帮用户解决Xcode 16中出现的“Multiple commands produce ‘/xxx.app/Info.plist’”报错问题。首先,我得回忆一下以前处理类似问题的经验,以及用户提供的引用内容。 用户提到的是Xcode 16,但引用中的例子都是Xcode 10或更早版本的情况。不过,这类问题通常是由于项目中有多个Info.plist文件被复制到同一个位置导致的冲突。根据引用里的信息,比如引用[2]提到在Build Phases的Copy Bundle Resources中删除Info.plist,这可能是一个常见的解决方法。 接下来,我需要确定在Xcode 16中,步骤是否类似。可能的情况是,项目的多个目标或子模块不小心包含了Info.plist文件,或者CocoaPods集成的第三方库带来了额外的plist文件。用户的问题可能出现在主项目或者Pod项目中,需要分情况处理。 首先,用户应该检查Build Phases中的Copy Bundle Resources,看看是否有多个Info.plist被包含进去。如果有,移除重复的,特别是那些不是自己主动添加的。此外,可能还需要检查其他构建阶段,比如Copy Files或者Compile Sources,虽然plist通常不会在这里,但有时配置错误也可能导致问题。 另外,引用[4]提到Pod项目中的目标可能复制了Info.plist,这时候需要检查Pods的各个子模块设置,特别是资源文件的复制路径。可能需要修改Podfile,排除某些资源的复制,或者更新CocoaPods版本,因为新版本的Xcode可能对路径处理有变化。 用户可能需要清理Derived Data,因为有时候旧的文件残留会导致冲突。执行Clean Build Folder,然后重新构建,可能解决问题。如果问题依旧,再考虑手动删除Derived Data文件夹。 还有一种可能性是项目的配置文件被错误地标记为需要复制到资源包中。例如,某些第三方框架可能自带Info.plist,当被集成到项目中时,Xcode可能会自动将其加入复制阶段。这时候需要在对应的目标设置中排除这些文件。 需要分步骤给出解决方案,确保用户能逐步排查。比如,第一步检查Copy Bundle Resources,第二步处理CocoaPods相关的问题,第三步清理构建目录,第四步检查项目设置中的Info.plist路径是否正确。如果用户使用的是新项目模板,可能Xcode 16的默认配置有变化,需要调整。 此外,用户可能已经尝试过一些常见方法,但问题依然存在,因此需要提供更深入的解决方案,比如手动编辑project.pbxproj文件,但这需要谨慎操作。或者,建议检查Xcode的更新日志,看是否有相关改动影响plist处理。 最后,确保用户了解每个步骤的目的,避免误操作导致其他问题。比如,删除plist文件前确认是否是多余的副本,而不是主项目必需的文件。同时,提醒备份项目,以防万一。</think>针对Xcode 16中出现的`Multiple commands produce &#39;.../Info.plist&#39;`报错问题,以下是分步解决方案: ### 核心问题定位 该报错由**重复的Info.plist文件复制指令**引起,常见于多模块项目、CocoaPods依赖管理或Xcode新版本构建系统优化后的路径冲突[^2][^4]。 --- ### 解决方案步骤 #### 第一步:清理冗余配置 1. **删除Copy Bundle Resources中的Info.plist** - 打开项目设置 - 选择`Build Phases` → `Copy Bundle Resources` - 查找所有`Info.plist`文件(特别是第三方库自动生成的) - 点击`-`号移除非主工程的plist文件[^2] ```markdown ![操作示意] Xcode界面路径:Target > Build Phases > Copy Bundle Resources ``` #### 第二步:检查多模块冲突 2. **处理Pod项目冲突(如使用CocoaPods)** - 在`Pods`项目中逐个检查子模块 - 定位到`Pods > Targets Support Files > [第三方库名称]` - 确认是否存在`Info.plist`被错误包含在资源文件中 ```ruby # 可在Podfile中添加排除规则 post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings[&#39;INFOPLIST_FILE&#39;] = &#39;&#39; if target.name == &#39;冲突模块名&#39; end end end ``` #### 第三步:强制清理构建缓存 3. **深度清理DerivedData** - 关闭Xcode - 终端执行: ```bash rm -rf ~/Library/Developer/Xcode/DerivedData ``` - 重新启动Xcode并选择`Product > Clean Build Folder` #### 第四步:验证项目配置 4. **检查Info.plist路径设置** - 确保主工程`Target > Build Settings`中: - `Info.plist File`指向唯一正确路径 - `Generate Info.plist File`设置为`NO`(若手动维护plist) - `Product Bundle Identifier`保持唯一性 --- ### 扩展优化建议 - 对于Swift Package Manager依赖:检查`.swiftpm`文件是否意外包含plist - 使用Xcode 16新特性`Build System > Parallelization`时,尝试暂时关闭该选项进行测试 - 若使用自定义构建脚本:检查是否有`cp`命令复制了plist文件 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值