Xcode 10 Error: Multiple commands produce

Xcode 10 Error: Multiple commands produce

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist' 2) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist' 3) Target 'OptimalLive' has process command with input '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

运行 Xcode9 中的代码有效,但 Xcode10 中的代码有错误。

在检查构建日志时,我注意到一个警告:

note: Using new build system
note: Planning build
note: Constructing build description
Build system information
warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

所以,如果你是这种情况,那么就去你的目标:

  1. 构建阶段
  2. 复制捆绑资源
  3. 移除info.plist.

出现此问题的原因可能是 App-

中有多个 Plist 或其他文件

解决方案 -> 打开目标 -> 构建阶段 > 复制捆绑资源 并从那里删除 info.plist

注意:如果您也开发了手表应用程序,那么您还必须从手表和手表扩展中删除 plist。

This answer is deprecated - XCode 12 has deprecated the Legacy Build System, it will be removed in a further release

也试试这个。 Xcode->文件->项目设置->构建系统->遗留构建系统。

我对 plist 也有同样的问题。 原来我有两份副本,一份是空的,一份在我的本地化资源文件夹中。 删除其中一个(空的)解决了问题。

如果您检查错误,第 1) 行和第 2) 行有不同的路径。您可能在复制阶段将此文件定义了两次。

检查您的目标属性、构建阶段、复制捆绑资源,并查找重复的 info.plist。找出不正确的路径并将其删除。 (您可能还想从文件系统中删除它。)

当我在两个不同的目标中有一个同名文件时,我遇到了这个问题。出于某种原因,其中一个文件我有两个目标的一部分。所以基本上我有两个文件。并且这两个文件都属于一个目标。

每个目标只能有一个文件名是有道理的,因此只需取消选中与主要目标无关的文件的目标成员框即可解决问题。

我有一堆 Multiple commands produce 警告 - 不限于在一个目标中 info.plist 重复。包括本地化资源和字符串文件,headers等

解决方案:删除目标成员资格中的所有重复项。

有类似的问题,但使用的是 .swiftdoc 文件。

我在项目中有扩展和单元测试目标。他们与应用程序具有相同的 "Product Module Name"(构建设置中的 PRODUCT_MODULE_NAME)。使名称成为唯一问题后。

我有同样的问题,我在主应用程序中多了一个辅助应用程序并将其复制到资源中。在我的情况下解决为:-

1) 目标 -> 2) 构建阶段 2) 复制文件(n 项)3) 删除复制文件。

在 Xcode 10.0.

中自动复制了 Helper 应用程序

就我而言,我从另一个项目导入了文件,并且在两个位置具有相同的 class。

我收到以下相关错误消息:

复制的时候报错,原来复制了很多MORE的文字信息,翻阅dump的时候,来到了相关行:

:0:错误:文件名 "EventNode.swift" 使用了两次:

后面是位置,让我排除了问题。

在这个过程中,我发现了'Copy Bundle Resources'中需要的内容:

  • Main.storyboard
  • Assets.xcassets
  • 您的项目使用的任何 SpriteKit 场景 (.sks)

This answer is deprecated - Xcode 12 has deprecated the Legacy Build System, it will be removed in a further release

我找到了这个构建错误的解决方案,对于 Xcode 10 构建系统有同样问题的其他人,请按照以下步骤修复它:

  1. In Xcode, go to File->Project/Workspace settings.
  2. Change the build system to Legacy Build system.

它将解决新 Xcode 10.

的构建问题

如果您想使用新的构建系统,那么您可以找到故障排除帮助 from this apple Xcode help page

我遇到了同样的问题,但 header 文件。

在这种情况下,解决方案是将 headers 从 "Public" 移动到 "Project" 部分。

移动到 Xcode 10,错误如

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':

可以如下解决:

转到Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System

在开始之前请注意,我的项目使用 Carthage 作为依赖项管理器。

None 的现有答案解决了我的问题。为我解决问题的是以下内容。

首先,我注意到构建错误特别指出了一个框架。接下来,我为该框架过滤了 App Target > Build Phases。我注意到 "Link Binary With Libraries" 和 "Embed Frameworks" 中都存在该框架。注意到 "Embed Frameworks" 下列出的框架中的 none 是由 Carthage 管理的,我从 "Embed Frameworks" 中删除了有问题的框架。然后我重新构建了我的项目,一切正常,包括相关框架启用的功能。

如果您是从 Ditto 命令创建多个同名实例(不是 'copy files' build phase)得到的,您可能需要更改 Product Module Name.

  1. 点击您的目标 Xcode 正在抱怨
  2. 点击Build Settings
  3. 搜索 Product Module Name
  4. 将名称更改为唯一的名称

我们的应用程序中有一个监视目标和一些通知目标,所以我只是在模块名称的末尾加上 Extension 之类的东西。

我最初在这里找到了这个解决方案:https://forums.developer.apple.com/thread/103913

尝试一下它的工作原理:

在 Xcode 中,转到文件->Project/Workspace 设置。

将构建系统更改为 Legacy 构建系统。

对我来说,问题在于将同一个文件两次包含在捆绑资源中。不知道这是怎么发生的,但我删除了其中一个,它在新的构建系统中编译得很好。

尝试所有这些选项 这 3 个选项中的任何一个都适合您,肯定

Option 1: Remove all files from

Target >> Build Phases >> Compile Sources

Target >> Build Phases >> Copy Bundle Resources

Option 2: Change the build system

Xcode->File->Project Settings-> Build System -> Legacy Build System

Option 3: remove and update existing pod

pod cache clean PromisesObjC
pod cache clean PromisesSwift
cd [your_project_dir]
rm -rf Pods/
rm Podfile.lock
pod update

I hope this will help you, Happy coding :-)

搜索 & 删除 由多个命令生成的重复文件。

在这里,应该删除一个额外的 Info.plist 文件(在我的例子中是 Contents.json

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'

转到 Xcode -> 文件 -> 工作区设置。 你会发现一个像这样的弹出窗口。

Select“旧版构建系统”来自构建系统标签。 按“完成

注意:-确保使用“cmd+shift+alt+k”和“清除项目派生数据"

构建你的项目,它会很有魅力:)

对于由 cocoapods 管理的依赖项目,通过提供本地 podspec 从源中排除 info.plist 解决了问题。以godzippa为例

播客文件 pod 'Godzippa', :podspec => "venders/godzippa.podspec"

venders/godzippa.podspec s.source_files = 'Sources/*.{h,m}'

在我的例子中,一个 Info.plist 文件是从我的一个 Cocoapods 中挖出的。删了问题解决了

我的 ProjectName.xcodeproj 对同名文件有一个有效和无效的引用。项目导航器中的文件名相同,一个文件名是红色的,另一个没问题。我去掉了无效的引用(红色的),问题解决了。

就我而言,我对两个不同的静态库有相同的自定义 Public Header 文件夹路径。一个用于主应用程序,另一个用于手表应用程序。更改了手表应用程序的路径,现在一切正常。

None 这里提出的解决方案对我有用。这尤其要归功于 CocoaPods。我之前使用的是 Cocoapods 1.3.1。简单地升级到 1.5.3 并没有立即解决问题。

我遵循的步骤是:

  1. 删除Podfile.lock
  2. 删除Pods目录
  3. 删除派生数据并清理
  4. 退出Xcode
  5. 将 CocoaPods 更新到 1.5.3
  6. 运行 pod install
  7. 打开工作区并构建

如果您使用 CocoaPods,您可能想尝试分解 pods 并重新安装。它对我有用。

pod deintegrate

pod install

就我而言(我使用的是 Carthage)

的问题
error: Multiple commands produce 
1) Target *** has copy command from
2) That command depends on command in Target ***: script phase “Run Carthage Script” 

是由于在 嵌入式框架 运行 carthage 脚本 阶段导入框架 构建阶段 配置

这 2 个阶段将框架复制到派生数据,因此 Xcode 查看重复的文件并打印这些错误并发出警告:

ignoring duplicated output file: (in target ***)

嵌入式框架 阶段删除重复的框架后,一切正常。

这是另一个可行的解决方案:(如果您使用的是自定义 Pods)

  • Select "Pods" 来自边栏作为屏幕截图中的突出显示。
  • 点击构建阶段。展开 "Headers" 部分。有 3 个选项 Public、Private、Project
  • 展开Public并检查是否有重复文件。去掉它。 完成!!

就我而言,我的 GoogleService-info.plist 文件被多次复制,因为它包含在我的主应用程序和共享扩展项目中。

解决方案是将此文件从扩展项目中排除(通过在其 File Inspector 端 window 视图中从 Target 中取消选中它);因为我不喜欢切换到 Legacy Build System 的选项(这也适用于我)。

我有同一个文件的多个副本。简单地说,保留一份副本并删除所有剩余的副本。清理构建,并排序问题。

这基本上意味着您有多个名为 Info.plist 的文件; 通常它很好,但不小心你的文件被设置为相同的目标成员。所以解决方法是:单击每个文件并在右侧检查其目标成员资格,确保它们不重叠。

所以我遇到的问题是我不小心在项目设置中包含了 Info.plist -> 构建阶段 -> 为我的目标复制捆绑资源。

进入项目构建阶段并从编译源中删除 info.plist。它将消除该问题,项目将再次激活。

如果您的错误问题是 .app/(而不是 .app/Info.plist),请在此处查看此答案:

我的问题是 Xcode 10 在 Mojave 中是 运行,同时尝试 运行 我在更新到 [=56= 之前编写的单元测试] 10.

就我而言,我在 运行 设置 TestTarget 目标时遇到了这个问题。要解决,我必须:

  • 删除目标依赖之一(在TestTarget > build phases > Target Dependencies

因为除了我的 TestTarget 之外,我还有另外两个目标,并且都在某个时刻 运行 使用相同的脚本和 creating/copying 文件。

这与 Xcode10here:

的构建系统发行说明中提到的冲突

It is an error for any individual file in the build to be produced by more than one build command. For example, if two targets each declare the same output file from a shell script phase, factor out the declaration of the output file into a single target.

我从 Xcode 10.1 更新到 10.2

后的新更新

更新到 Xcode 10.2 后,类似的问题再次出现。我在项目中有多个目标:Target1Target2,我通过以下方式解决了这个问题:

  • 导航到 Edit Scheme > Build
  • 从构建中删除目标之一:取消选中 TestTarget1 的复选框,因为我知道 Target2 已导入 Target1

这里还要注意,Target2 的复选框在 Test

下保持选中状态

步骤:

  1. 转到 Xcode 文件
  2. 点击工作区设置
  3. 构建系统Select作为遗留构建系统

我使用 Carthage 和 Xcode10.

我的解决方案是 -> 项目 -> 目标 -> 常规 ->

从 "Embedded Binaries"

中删除 Carthage 添加的框架

通常你必须在构建阶段添加一个脚本来剥离应用程序商店的架构。

在 Xcode 10 中,脚本似乎总是被调用。因此它将框架复制到正确的位置,您不必将它们添加到常规选项卡。

注意:如果未设置 -> 在构建设置 -> 搜索路径 -> 框架搜索路径 -> 设置您使用迦太基添加的框架的路径 .... 例如。 "$(PROJECT_DIR)/Carthage/Build/iOS"

在我的例子中,PDFGenerator 正在生成一个 info.plist 文件,我刚刚删除了它。

我正在试验 Core Data。我为一个简单的清单程序构建了一个数据模型并生成了 NSManagedObjects。编译项目时出现以下错误:

error: Multiple commands produce '/Users/myUSerName/Library/Developer/Xcode/DerivedData/myCoreDateExperiment-gzbslaqdwglkzxemijpdqmizgyzc/Build/Intermediates.noindex/ myCoreDateExperiment /Debug-iphonesimulator/ myCoreDateExperiment.build/Objects-normal/x86_64/CheckListItem+CoreDataProperties.o':
1) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files
2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

问题是数据模型(在我的例子中是 CheckList.xcdatamodeld)在 "Compile Sources" 列表中。当我从列表中删除项目时,该项目编译干净。

  1. 打开项目导航器和select项目(顶部的第一个条目)
  2. Select "Projects and Targets" 窗格中目标下的构建目标
  3. Select 构建阶段选项靠近顶部
  4. 展开 "Compile Sources" 条目并查找您的数据模型名称。如果找不到,请搜索 "xcdatamodeld"。
  5. 从编译列表中删除模型
  6. 确保数据模型包含在 "Copy Bundle Resources" 列表中。如果缺少它,请添加它。

编辑

作为@WilliamT。在评论中解释,您需要编译列表中的 xcdatamodeld。相反,转到 xcdatamodeld 文件中的实体。 Select 错误的模型,展开左侧面板,将 "Codegen" 的字段更改为 "Manual/None"。

Select 您的方案(左上角)-> 编辑方案...-> 构建(左侧选项卡)-> 取消选中 "Find Implicit Dependencies"

之后,您可能需要修复目标未明确导入的所有依赖项。

我的一个 CocoaPods 已经过时并导致了这个问题。做了 pods 更新并且工作正常。

我相信它可能是 LivePerson SDK

好的,对于那些没有在这里找到正确答案的人来说,因为它与 info.plist...

无关

我 运行 在开发没有 CocoaPods 或 Carthage 的 macOS 应用程序时遇到了这个问题,只是使用 SPM 包,手动将 xcodeprojs 拖到工作区。

当我只使用一个依赖项(它从内部使用 Swift-NIO)时,一切正常,但是当我再添加一个具有重叠子部门的依赖项时,我遇到了这个讨厌的问题。

解决方案是尝试单独编译所有主要依赖项(由于相应 .build 文件夹中不存在结帐文件夹,它会失败,这很可能是因为您将 pkgs 置于编辑模式(swift package edit YourPkg ...).

您只需 unedit 您的 pkg,并强制所有依赖项成功编译。之后,您必须确保主目标中的链接二进制文件不重叠(我不确定是否真的有必要,但以防万一)。

在那之后一切都应该很好:)

对于依赖名称与 Swift header 导入相同的人。 (例如:header 文件名:#import "MyApp-Swift.h"):

这个header文件名实际上是由${SWIFT_MODULE_NAME}-Swift.h决定的,其中SWIFT_MODULE_NAME使用PRODUCT_MODULE_NAME作为默认值。

此外,还有一个名为 project-wide 的构建设置:SWIFT_OBJC_INTERFACE_HEADER_NAME “Objective-C 生成的接口 Header 名称”,默认值为 ${SWIFT_MODULE_NAME}-Swift.h.通过将此值更改为 MyApp-Swift.h 我们聚合构建中的所有目标都能够共享相同的 header 名称,并且我们能够从它们更改 PRODUCT_MODULE_NAME 值。

如果您在使用 React Native 时遇到此错误,特别是 libyoga.a,请查看 this Github 评论

如果您的应用程序生成与多个 .app 文件相关的错误,那么从 "Copy bundle Resources" 中删除 .plist 文件将不起作用。

如果错误与 .app 文件有关,请按照以下步骤操作

  1. Select 目标。

  2. 转到 Build Phases 选项卡。

  3. 删除 Output Files
  4. 中列出的项目
  5. 编译代码,如果编译成功则不执行后续步骤。
  6. 如果代码没有成功编译并且 Xcode 可能会给您一个与 "Library not found" 相关的错误。然后在Linked Frameworks and Libraries中的General选项卡中添加缺少的库Xcode在错误中提到。
  7. Linked Frameworks and Libraries 中继续添加这些库(即 Xcode 通过编译错误询问),直到代码编译成功。

    希望对您有所帮助。

就我而言,构建存档错误与 Xcode10

-1: Multiple commands produce '/Users/kk/Library/Developer/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklrhhuqljdfwv/Build/Intermediates.noindex/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a': 1) Target 'yoga' has a command with output '/Users/kk/Library/Developer/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklrhhuqljdfwv/Build/Intermediates.noindex/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a' 2) Target 'yoga' has a command with output '/Users/kk/Library/Developer/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklrhhuqljdfwv/Build/Intermediates.noindex/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a'

你的 Podfile 中应该有如下内容

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end

    if target.name == "yoga"
      target.remove_from_project
    end
  end
end

然后 运行 pod install

在 Xcode 10 中,它也适用于以前的版本

  1. 双击项目
  2. 您将看到如下图
  3. select TARGET 从左边
  4. 展开复制捆绑资源(0 项)
  5. 删除产生错误的相应文件

error: Multiple commands produce '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings':
1) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-demo-master/TildeskWidget/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'
2) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-sdk-master 2/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'

可以有 2 种不同的解决方案来解决这个问题:

解决方案 1

如我们所见,我遇到了同样的错误。在我的例子中,TildeskWidget[=36= 中的文件夹 Chat21Core 有一个额外的副本]文件夹..这是造成问题.. 因此,一种可能的解决方案也可以是完全读取错误并尝试查找是否有从项目中引用的任何额外副本。

解决方案 2

当我在不同项目中遇到相同类型的问题时,我找到了另一个简单的解决方案。这次我不得不应用不同的解决方案。

  • pod deintegrate 来自项目。
  • 从项目文件夹中删除工作区文件和 pod.lock 文件。
  • 再次pod install 并尝试构建项目。

希望这对你有用..

在我的例子中,问题来自 podfile。我必须 add 我的 test 项目到 podfile:

target 'MyApp' do
    pod 'Firebase'
    target 'MyAppTests' do
        inherit! :search_paths
        pod 'Firebase'
    end
end

之后,我需要执行:

pod update

实际上您可以使用旧版构建系统,但您不会获得快速构建时间,即)您不会获得在 XCode10 中默认设置的新构建系统功能只是没有获得最新构建功能的解决方法 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes/build_system_release_notes_for_xcode_10

在将 Fabric SDK 套件的第二部分添加到应用程序后,我遇到了这个问题。

实际发生的情况是 GoogleUtilies Framework 被添加到 Pods 项目中两次

在 Xcode 10 之前这会很好,但是 Xcode 10 会抱怨如果一个文件有两个针对它的操作(在本例中是复制操作)。

删除第二个框架是安全的。

如果错误消息引用核心数据文件,请阅读此答案

概要:您可以同时管理 automatically-generated 和 manually-generated 核心数据 object class 文件。

如果错误的第一行引用 Foo+CoreDataProperties.oFoo+CoreDataClass.o[=130=,则此答案适用] 文件。示例:

error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':

1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

展开构建脚本的编译Swift源文件部分可以看到根本原因。例如:

<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

提到的第一个文件在您的项目目录中有一个源文件,有人通过 select 在项目导航器中输入您的数据模型并单击菜单 编辑器[=130] 生成该文件=] > 创建托管 Object 子class。此功能是在 Xcode 7 左右添加的。

第二个文件是一个同名文件,但埋在Xcode的DerivedData中。如果数据模型 (.xcdatamodeld) 文件包含在目标的 Compile Sources 构建阶段。此功能是在 Xcode 9 左右添加的。根据 Codegen 弹出窗口的设置,为每个 entity/class 生成零个、一个或两个文件。当您在编辑数据模型时 select 一个实体时,该弹出窗口位于 数据模型检查器 中…

设置为:

  • Manual/None没有生成文件
  • Category/Extension一个文件,Foo+CoreDataProperties.m.swift 生成,包含 Objective-C 类别或 Swift 扩展名。
  • Class 定义 生成相同的 Category/Extension 文件,另外还有一个 Foo+CoreDataClass.m.swift生成,包含class声明和定义。

因此,当习惯于较旧 Xcode 的开发人员(像我)开始使用较新 Xcode 的项目时,您就会看到问题发生了。我们认为我们需要使用 Create Managed Object Subclass 菜单项来创建我们可以在项目导航器中看到的文件没有意识到我们在 Codegen 弹出窗口中的设置导致 Xcode 创建重复文件,Apple "cleverly" 没有在项目导航器中显示,因为它们不不要相信开发人员会阅读并注意 header // 此文件是自动生成的注释

解决方案 1 - 使用旧方法

您可以通过一个设置禁用数据模型的所有自动 Codegen

  • 打开问题 Target 的 Build Phases(在 Project Navigator、select 项目中,然后在 [=60 的列表中=]TARGETS 出现,select 问题目标,然后选择 Build Phases).
  • 展开 Compile Sources 条目并找到问题数据模型(.xcdatamodeld 文件)。
  • 从编译列表中删除
  • 确保数据模型包含在复制捆绑资源列表中。

解决方案 2 - Core Data Magic 初学者

在这里,您将全力以赴。

  • Compile Sources.
  • 中保留您的数据模型
  • 在数据模型的每个 Entity Inspector 中,将 Codegen 设置为 Class Definition.
  • 在项目导航器中,删除并删除任何 Foo+CoreDataClass 文件,并重命名任何 Foo+CoreDataProperties.m.swift 文件到类似 Foo+MyProperties.
  • 的文件
  • 在每个Foo+MyProperties.m.swift文件中,如果有[=生成的属性222=],删除这些属性,因为它们将在 Codegen.
  • 创建的隐藏文件中

使用此解决方案,您的 class 定义会在每次构建时从数据模型自动生成。你甚至看不到它们。它是 Core Data Magic,对初学者来说既好又简单。

解决方案 3 - 对于大多数 Real-World 应用程序

但是如果您真的想添加 non-managed 属性,则解决方案 2 并不适用。 (Objective-C 不允许在类别中添加属性,Swift 不允许在扩展中添加存储的属性。)所以在大多数 real-world 应用程序中,你可能想要半途而废在解决方案 1 和 2 之间……

  • 将您的数据模型留在编译源
  • 列表中
  • 在数据模型的每个 Entity Inspector 中,将 Codegen 设置为 Category/Extension.
  • 在项目导航器中,删除并删除任何 Foo+CoreDataClass.m.swift 文件,以及,为了减少将来的混淆,将任何 Foo+CoreDataProperties.m.swift 文件重命名为 maybe justFoo.m.swift.
  • 确保每个Foo.m.swift文件包含class定义,您可以向其中添加自己的 non-managed 属性。

(感谢 Positron 的回答。我在这里的回答解释了为什么 Positron 的回答(我的解决方案 1)有效,并添加了解决方案 2 和解决方案 3。)

对于那些使用 React Native 和 Cocoapods 的人

这个问题是由一些 libRN...a 文件产生的。我通过从 Build Phases -> Link Binary with Libraries 中删除其中的一些像 libRNScreens.a 和 libRNGestureHandler.a 来修复它,因为它们已经被引用了另一个图书馆。其他人必须用他们的 Pod 版本替换,例如 libRNDeviceInfo.a:

如果您开发私有 cocoapod,并且已经通过 Podfile

添加了它

将其从 Embedded Binaries 部分删除:

检查您支持的平台!

我们花了几个月的时间通过我们的几个子项目来研究这个问题。我们发现 AVAILABLE_PLATFORMS 被设置为 "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator",这导致构建多个平台,这将导致 "Multiple commands produce error." 例如,"Foo" 平台正在为两个 iOS 和 TVOS,因此多个构建命令正在创建一个 Foo.framework 文件。

一旦我们设置

AVAILABLE_PLATFORMS = iphoneos iphonesimulator

在我们的根 xcconfig 文件中,这个问题消失了所有子项目。

检查您的配置

运行

xcodebuild -project FitbitMobile.xcodeproj -target "FitbitMobile" -showBuildSettings > BuildSettings.txt

查看输出是否设置为您所期望的。如果您是 iOS 应用并且正在为 tvOS 构建应用,则需要更新您的配置。

解决我的问题的一个方法是将构建系统更改为遗留构建系统。请按照Xcode10+.

中的以下步骤操作

我在这里写了一篇关于问题及其解决方案的详细文章。 Xcode Error: Multiple commands produce

在我的例子中,清理被剥夺的数据和构建设置(按此顺序),并重新启动 Xcode 和模拟器帮助。

我尝试执行 Solution -> Open target -> Build phases > Copy Bundle Resources ,但它又出现在那里。清理被剥夺的数据有帮助。在错误中它显示重复项在哪里,在我的例子中它说它在我的应用程序包和被剥夺的数据中。

就我而言,我失望地向我的 Firebase 项目添加了两次 GoogleService-Info.plist 文件。

我删除了第一个添加的 GoogleService-Info.plist 问题解决了。

值得注意的是,在自动生成 Codegen 未设置为 Manual/None 的 CoreData 模型后可能会产生此错误。

要在 Xcode 10 中更正此问题,请双击您的 xcdatamodeId 文件和 select 您的每个实体,然后在数据模型中的 Class 下将 Codegen 设置为 Manual/None检查员。

问题: 在命令行中为 Cocoapod 项目创建 xcodebuild 存档时遇到错误。

控制台错误: 错误:多个命令产生 '/Users/xxxx/Library/Developer/Xcode/DerivedData/...':

解决此问题的步骤:

  1. 打开Xcode
  2. Select Xcode 编辑器顶部的方案
  3. Select 编辑方案
  4. Select 在 Popup 的左栏中构建 window。
  5. 如果添加了除与已编辑方案相关的目标以外的任何其他目标。
  6. Select 不相关的目标并通过按“减号图标”将其删除并关闭弹出窗口。
  7. 运行在命令行中再次执行xcodebuild命令,问题得到解决。

带图片的描述:

第 1 步:

第 3 步:

第 4-6 步:

我的隐藏文件 (.gitkeep) 触发了多重生成错误 仔细查看你的编译源,我相信这个文件在编译源中,但它显示为一个空行。它实际上并没有说出隐藏文件的名称,但我删除了空白行并解决了问题,所以我怀疑项目导航器没有显示隐藏文件。

我的错误是:

duplicate output file

'/Users/home/Library/Developer/Xcode/DerivedData/myAppName-fawptgabysjowicvpeqydjniuovo/Build/Products/Debug-iphoneos/myAppName.app/GoogleMaps.bundle' on task: PhaseScriptExecution [CP] Copy Pods Resources /Users/home/Library/Developer/Xcode/DerivedData/myAppName-fawptgabysjowicvpeqydjniuovo/Build/Intermediates.noindex/myAppName.build/Debug-iphoneos/myAppName.build/Script-32CCC25BF727B592A1784900.sh

我关注的是问题文件 GoogleMaps.bundle 以及该文件在 [CP] Copy Pods Resources 中的位置,以及它指定它是重复文件 output file 的事实(我在上面黑色),就是下面的第4步

首先创建项目的副本,并确保先在该副本上执行以下步骤copy

1- 在项目导航器中我转到蓝色项目图标

2- 我选择构建阶段

3- 在构建阶段下我选择 [CP] Copy Pods Resources

4- 在 [CP] Copy Pods Resources 下,我去了 Output Files,在下面我找到了以 GoogleMaps.bundle 结尾的文件。我选择它并按减号将其删除。确保您转到 输出文件 而不是输入文件

5- 我做了一个干净的 shift+cmmd+k 然后当我构建项目时错误消失了

奇怪的事情是即使红色错误消失了黄色警告仍然存在但它起作用了:)

在我们的案例中,我们只是清理了 "Copy Bundle Resources" 中的所有碎片,只留下最少的项目。

我的问题是我创建的动作扩展和主要目标的重复问题 Product Module Name。解决方案是更改扩展的产品模块名称(在构建设置下)。

(XCode11)

评论use_frameworks!在 PodFile 中为我工作。

#use_frameworks!

注意:在 XCode 10.1 上执行此操作,pod 版本 1.8.4

我的情况与 相似 - 一些产品被添加到 Pods 项目两次。我的 Podfile 的结构是:

# platform :ios, '11.0' 

def shared_pods
  use_frameworks!
  pod 'SharedPod1'
end

target 'Target1' do
  pod 'SomePod1'
  shared_pods
end

target 'Target2' do
  shared_pods
end

和所有共享的 pods 都添加了两次。取消注释第一行然后 pod install 解决了问题。

在我的例子中,我有一个修改过的 watch 项目,其中应用程序和扩展程序都有一个 info.plist 文件(都以相同的名称命名),为了解决这个问题,我将文件重命名为 ios app 我把它留作 info.plist 因为我把它命名为 watch_info.plist 等等 之后我修改了打包info.pilst下的'project->target->build settings',并相应修改了plist文件名,帮我解决了

请注意,我在其他地方看到在 project/workspace 设置下将构建系统从新的更改为旧的,虽然它有效 - 我不推荐这样做,因为它会导致其他问题。

删除该死的资产文件

解决方案 -> 打开目标 -> 构建阶段 > 复制捆绑资源并从那里删除资产。

如果您手动创建实体的 CoreDataClass 和 CoreDataProperties,请确保转到您的 xcdatamodel 并将检查器选项卡中的代码生成设置为 "Manual/None"。如果设置为 "Class Definition",Xcode 将自动为您创建一个副本 class。

此处相同,但这是 2020 年 5 月的最新解决方案

这看起来像是新 Xcode 版本的错误或新问题。

错误响应是:

无法构建 iOS 项目。我们 运行 "xcodebuild" 命令但它以错误代码 65 退出。

详细回复:

构建系统信息 错误:多个命令产生 '/path/of/the/project/ios/build/NameOfTheProject/Build/Products/Debug-iphonesimulator/NameOfTheProject.app/Zocial.ttf':

1) 目标 'NameOfTheProject'(项目 'NameOfTheProject')具有从“/path/of/the/project/NameOfTheProject/node_modules/react-native-vector-icons/Fonts/Zocial.ttf”到“/path/of/the/project/NameOfTheProject/ios/build/NameOfTheProject/Build/Products/Debug-iphonesimulator/NameOfTheProject.app/Zocial.ttf”的复制命令

2) 该命令取决于目标 'NameOfTheProject'(项目 'NameOfTheProject')中的命令:脚本阶段“[CP] 复制 Pods 资源”

构建系统信息 错误:多个命令产生 '/path/of/the/project/ios/build/NameOfTheProject/Build/Products/Debug-iphonesimulator/NameOfTheProject.app/SimpleLineIcons.ttf':

1) 目标 'NameOfTheProject'(项目 'NameOfTheProject')具有从“/path/of/the/project/NameOfTheProject/node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf”到“/path/of/the/project/NameOfTheProject/ios/build/NameOfTheProject/Build/Products/Debug-iphonesimulator/NameOfTheProject.app/SimpleLineIcons.ttf”的复制命令

2) 该命令取决于目标 'NameOfTheProject'(项目 'NameOfTheProject')中的命令:脚本阶段“[CP] 复制 Pods 资源”

...

该响应对库使用的每个 .ttf 文件重复。

我不得不临时 react-native unlink react-native-vector-icons,然后重新构建项目,但没有图标。

This answer is deprecated - Xcode 12 has deprecated the Legacy Build System, it will be removed in a further release

我正在使用 Xcode 11.4 无法构建旧项目

Xcode => 文件 => 项目设置 => 构建系统 => 遗留构建系统

Product Name 的重复也可能导致同样的问题,尤其是当您在单个工作区中创建多个扩展目标时。

请确保您也根据@Lirik 的回答检查Product Module Name

我遇到了同样的问题,但可以通过删除关联的 .png 和图标资产目录然后构建应用程序来修复它。由于资产丢失,这会产生预期的错误。之后我再次添加了所有内容并毫无问题地构建了应用程序。

解决方案 1:
打开目标 ➼ 构建阶段 ➼ 复制捆绑资源 ➼ 从那里删除 info.plist。 ➼ 你也必须从扩展中删除 plist(如果有的话)。

解决方案二:
如果您使用 CocoaPods,您可能想再次尝试 deintegrate the pods and install。 命令:

1) pod deintegrate
2) pod install

解决方案 3:
在 Xcode 中,转到文件 ➼ Project/Workspace 设置。
➼ 将构建系统更改为 Legacy 构建系统

有时出现此问题的原因是您有多个具有不同 iOS 部署目标的目标。只需检查您的目标(例如您的主要应用程序目标和您的扩展)是否具有相同的 iOS 部署目标。

1- 删除所有应用程序的 DerivedData 2- 打开终端 3-更新吊舱 每件事都完成了

不幸的是 none 这些答案对我有用...这是我看到的错误:

"多个命令产生'/Users/.../.../.../Frameworks/abcdef.framework"

  1. 该命令取决于命令...:脚本阶段“”
  2. 该命令取决于命令...:脚本阶段“”

将此行添加到 Podfile 并执行“Pod Install”是唯一有效的方法。

install! 'cocoapods', :disable_input_output_paths => true

我真的希望这对某人有所帮助。我花了几个小时试图解决这个问题,终于搞定了。

有时我只是希望 Xcode 和 IntelliJ / Android Studio 一样高效:(

祝你好运!

没有遗留构建系统 如果你有这样的 Podfile

def shared_pods
  pod 'X'
end

target 'A' do
  shared_pods
end

target 'B' do
  shared_pods
end

并且 B 也依赖于 A 然后像这样将 B 移动到 A

 target 'A' do

   shared_pods

   target 'B' do
     inherit! :search_paths
   end
 end

我是 IOS 开发的新手,我尝试了上述答案,但它们对我不起作用。

我的XCode版本是12.4,Swift5

我在构建时遇到 Multiple commands produce 错误

我试图从错误列表中展开错误,但双击它没有任何反应,所以首先我很难知道完整的错误。

所以我右击错误并复制到剪贴板,粘贴到文本编辑器中。

它显示了完整的错误

说是哪个部分有问题

Multiple commands produce '/Users/userName/Library/Developer/Xcode/DerivedData/ProjectName-fbeqffupediuiedlrplqjyhgyqna/Build/Products/Production-iphoneos/XCFrameworkIntermediates/GoogleAppMeasurement':
1) That command depends on command in Target 'GoogleAppMeasurement-iOS12.3' (project 'Pods'): script phase “[CP] Copy XCFrameworks”
2) That command depends on command in Target 'GoogleAppMeasurement-iOS14.1' (project 'Pods'): script phase “[CP] Copy XCFrameworks”

(我正在使用 Google Firebase)

我很惊讶地看到 pods 正在为 2 个不同版本的 iOS(12.3 和 14.1)编译

我发现,在活动目标配置中,我在 Deployment Info 部分设置了 iOS 12.3,在项目级别 Info 选项卡的 Deployment Target 中设置了 14.1

将两者设置为相同的所需版本,然后清理并构建解决了问题。

请告诉我设置 2 个不同版本是否有误。如果这不是错误,那么请记住以下事项:

  • 不允许我将构建系统设置为旧版
  • info.plistCopy Bundle Resources阶段不存在

如果您在核心数据方面遇到问题,此答案适合您。 转到 yourfilename.xcdatamodeld 并确保所有实体都有 manual/None Codegen。

[更新] 尝试检查 Project-> Targets -> (Your name Project) -> Copy Bundle Resources,并检查是否有一些重复的文件名与你的错误相关。

找到重名后,删除显示错误的路径。

上面的图片显示我已经删除了错误的。对不起,我没有截屏错误图片。再次面对会更新

创建框架时也可能遇到此错误。

在你的框架项目中,如果你有应用程序目标,并且你在部署信息部分下为每个应用程序目标设置了不同的 iOS 版本,那么 pod install 将为同一个 pod 创建一个新目标ios版本后缀

您可以转到 pods 目标进行检查。如果您看到重复,那就是您的问题。 Xcode 因此感到困惑并抛出这样的错误。

Multiple commands produce '/Users/userName/Library/Developer/Xcode/DerivedData/ProjectName-fbeqffupediuiedlrplqjyhgyqna/Build/Products/Production-iphoneos/XCFrameworkIntermediates/SomePodFramework':
1) That command depends on command in Target 'SomePodFramework-iOS10.0' (project 'Pods'): script phase “[CP] Copy XCFrameworks”
2) That command depends on command in Target 'SomePodFramework-iOS13.0' (project 'Pods'): script phase “[CP] Copy XCFrameworks”

这是您需要做的。

  1. 使所有目标的部署信息下的所有最低 ios 版本相同。这将确保当您安装 pod 时,cocoapods 不会根据多个 ios 版本创建同一 pod 的新目标。
  2. 关闭您的工作区。删除 xcworkspace、Podfile.lock 和 Pods 文件夹。
  3. 运行 pod install.

现在当您打开工作区时,您可以再次检查 pods 目标。你会看到没有重复。

现在只需将所有目标的部署信息更改为原来的样子即可。

对我来说,这只是两个同名文件。

对我来说,那是我嵌入了一个 cocoapod 的框架。您需要做的就是将其从常规构建目标的嵌入内容选项卡中删除。

有一些原因会导致显示此错误。

1-项目名称与项目上使用的依赖项相同

当您为项目选择的名称与您在项目中使用的依赖项之一相同时,可能会发生此错误,例如您不能选择 FirebaseAuthGoogleSignIn 作为项目名称(如果您通过 pod 或 SPM 使用它们)。

要解决此问题,您应该使用以下方式更改项目名称:

从左侧栏的project navigator中选择项目,从右侧栏中的file inspector -> Identity and Type -> name更改项目名称。

更改后,XCode 会要求您更改所有相关目标,然后按重命名即可。

2 - 在 Copy Bundle 资源部分

上重复 info.plist

当 info.plist 添加到不需要的 Copy Bundle resources 时,您可能会遇到此错误,选择项目形式 project navigator -> 选择目标 -> 转到 Build Phases 选项卡 -> Copy Bundle Resources 如果你在那里看到 info.plist,通过选择 info.plist 将其删除,如下图

3 - pod 文件不能正常工作

有时您会收到此错误,因为您使用的依赖项因意外原因而中断。

1 - 删除 Podfile.lock

2 - 删除 Pods 目录

3 - 删除派生数据并清理(您可以从 XCode 菜单找到此目录 -> Preferences... -> Locations -> Derived Data 并转到通过单击地址右侧的箭头图标找到目录)

4 - 退出 Xcode

5 - 在 mac 终端

上用 [sudo] gem install cocoapods 更新 CocoaPods

6 - 转到终端上的项目目录和 运行 pod install

7 - 打开工作区并构建

5-重复核心数据

你在项目中使用Core data时可能会遇到这个问题

首先我解释一下coreData代码生成类型:

**Class 定义:** 当您不需要编辑 Core Data 为您生成的托管对象子类和属性文件的属性或功能时,选择 Class 定义。

Category/Extension: 选择 Category/Extension 在您的托管对象子类中添加额外的便利方法或业务逻辑。

Manual/None: 选择 Manual/None 编辑托管对象子类中的属性,例如,更改访问修饰符,并增加更多便利方法或业务逻辑。

选择 Manual/None 并检查 CopyBundleRecources 上是否存在 xcmod​​eldata 的副本,将其删除。

我注意到目标 Run Script Phases[EC] Embed Pods Frameworks 完全相同。去掉Run Script后问题解决

好吧,就我而言:

If you create two file with same name, will trigger this error. Remove the one you recently added, will solve this problem.

希望对您有所帮助。

2022 答案

如果您有多个目标,请确保部署目标相同。