Xcode 10错误:多个命令产生

错误:多个命令产生'/用户/uesr/库/开发人员/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/构建/产品/调试iphoneos/OptimalLive.app/Info.plist':1)目标'OptimalLive'有复制命令从'/用户/uesr/桌面/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'到'/用户/uesr/库/开发人员/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/构建/产品/调试iphoneos/OptimalLive.app/Info.plist'2)目标'OptimalLive'有复制命令从'/用户/uesr/桌面/workSpace/SEALIVE/SeaLive1.1/OptimalLive/服务器/砌体/Info.plist'到'/用户/uesr/库/开发者/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjawtebkimvwx/构建/产品/调试iphoneos/OptimalLive.app/Info.plist'3)目标“OptimalLive”有进程命令,输入“/用户/uesr/桌面/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist”

在Xcode 9中运行代码可以工作,但Xcode 10中存在错误。

675927 次浏览

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

note: Using new build systemnote: Planning buildnote: Constructing build descriptionBuild system informationwarning: 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

该问题可能是由于应用程序中的多个Plist或其他文件而发生的-

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

输入图片描述

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

此答案已弃用-XCode 12已弃用Legacy Build System,它将在进一步的版本中删除

试试这个。Xcode->文件->项目设置->构建系统->旧版构建系统。

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

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

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

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

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

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

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

有类似的问题,但与. swftdoc文件。

我在项目中有扩展和单元测试目标。他们有相同的“产品模块名称”(在构建设置中PRODUCT_MODULE_NAME)作为应用程序。在命名唯一问题消失后。

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

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

Helper应用程序在Xcode 10.0中自动复制。

在此处输入图片描述

在我的例子中,我从另一个项目导入了文件,并且在两个位置具有相同的类。

我有以下相关错误消息:输入图片描述

当我复制错误时,原来是复制了很多更多的文本信息,当我翻阅转储时,我来到了相关行:

: 0:错误:文件名“EventNode.swift”使用两次:

接下来是位置,让我消除了问题。

在这个过程中,我发现了“复制捆绑资源”中需要的内容:

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

这个答案已弃用-Xcode 12已弃用Legacy Build System,它将在进一步的版本中删除

我找到了此构建错误的解决方案,对于任何其他在Xcode 10构建系统中遇到相同问题的人,请按照以下步骤修复它:

  1. 在Xcode中,转到文件->项目/工作区设置。
  2. 将构建系统更改为旧版构建系统。

输入图片描述它将使用新的Xcode 10解决构建问题。

如果您想使用新的构建系统,那么您可以找到故障排除帮助从这个苹果Xcode帮助页面

我有同样的问题,但与头文件。

在此处输入图片描述

在这种情况下,解决方案是将标题从“公共”移动到“项目”部分。

在此处输入图片描述

移动到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作为依赖项管理器。

这里现有的答案都没有解决我的问题。对我来说解决问题的是以下内容。

首先,我注意到构建错误特别指出了一个框架。接下来,我过滤了该框架的应用目标>构建阶段。我注意到该框架同时存在于“链接二进制库”和“嵌入框架”中。注意到“嵌入框架”下列出的框架都不是Carthage管理的框架,我从“嵌入框架”中删除了有问题的框架。然后我重新构建了我的项目,一切正常,包括该框架启用的功能。

如果您从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中,转到文件->项目/工作区设置。

将构建系统更改为旧版构建系统。

对我来说,问题与将相同的文件包含在捆绑资源中两次有关。不确定这是如何发生的,但我删除了其中一个,并且它在新的构建系统中编译得很好。

尝试所有此选项任何人这3选项将为您工作肯定的

Option 1: Remove all files from

目标>>构建阶段>>编译源

目标>>构建阶段>>复制捆绑资源

Option 2: Change the build system

Xcode->文件->项目设置->构建系统->旧版构建系统

Option 3: remove and update existing pod

pod缓存清理PromisesObjC
pod缓存清理PromisesSwift
cd[your_project_dir]
rm-rf Pods/
使用说明rmPodfile.lock
pod更新

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->文件->工作区设置。你会发现一个弹出像。

在此处输入图片描述

从构建系统标签中选择“遗留构建系统”。点击“成交

注:-确保使用“cmd+Shift+alt+k”和“衍生数据”清除您的项目

建立你的项目,它将工作的魅力:)

对于cocoapods管理的依赖项目,通过提供一个本地podspec来排除源代码中的info.plist来解决问题

Podfilepod'godzippa',: podspec=>"godzippa.podspec"

供应商/godzippa.podspecs.source_files='源/*.{h, m}'

在我的情况下,从我的一个Cocoapods中取出了一个Info.plist文件。删除它并解决了问题。

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

在我的例子中,我对两个不同的静态库有相同的自定义公共标头文件夹路径。一个用于主端,另一个用于手表应用程序。更改了手表应用程序的路径,现在一切都很好。

这里提出的解决方案都不适合我。这尤其是由于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,您可能需要尝试解体Pod并再次安装。它对我有用。

pod deintegrate

pod install

在我的情况下(我使用迦太基)的问题

error: Multiple commands produce1) Target *** has copy command from2) That command depends on command in Target ***: script phase “Run Carthage Script”

是由于在构建阶段配置中将框架导入到嵌入式框架运行Carthage脚本阶段造成的

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

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

Embeded Framework的阶段中删除重复的框架后,一切都正常工作。

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

  • 从侧边栏中选择“Pods”作为屏幕截图中的亮点。
  • 单击构建阶段。展开“标题”部分。有3个选项公共、私人、项目
  • 展开Public并检查是否有重复文件。删除它。成交!!

在此处输入图片描述

在我的例子中,我的GoogleService-info.plist文件被多次复制,因为它包含在我的主端和共享扩展项目中。

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

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

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

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

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

在此处输入图片描述

如果您的错误问题是. app/(而不是. app/Info.plist),请在此处查看此答案:xcode 10错误:多个命令产生-反应原生

我的问题是Xcode 10在Mojave中运行,并且在尝试运行我在更新到Xcode 10之前编写的单元测试时。

在我的情况下,我在运行TestTarget目标时遇到了这个问题。要解决,我必须:

  • 删除一个目标依赖项(在TestTarget > build phases > Target Dependencies中)

因为除了我的TestTarget之外,我还有另外两个目标,并且都在运行相同的脚本并在某个时候创建/复制文件。

这与为Xcode 10构建系统发行说明这里中提到的内容相冲突:

如果生成中的任何单个文件由多个生成命令生成,则会出现错误。例如,如果两个目标都在外壳脚本阶段声明相同的输出文件,则将输出文件的声明分解为单个目标。

我从Xcode 10.1更新到10.2后的新更新

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

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

这里还要注意,Target2的复选框在Test下保持选中

步骤:

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

我使用迦太基和Xcode 10。

我的解决方案是->项目->目标->通用->

从“嵌入式二进制文件”中删除使用Carthage添加的框架

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

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

注意:如果没有设置->在构建设置->搜索路径->框架搜索路径->设置你用迦太基添加的框架的路径……例如。“$(PROJECT_DIR)/迦太基/构建/iOS”

在我的情况下,PDFGenerator正在生成一个info.plist文件,我只是删除了它。

在此处输入图片描述

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

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 files2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

问题是数据模型(CheckList.xcdatamodeld在我的例子中)在“编译源”列表中。当我从列表中删除它时,项目编译得很干净。

  1. 打开项目导航器并选择项目(顶部的第一个条目)
  2. 在“项目和目标”窗格的“目标”下选择您的构建目标
  3. 选择顶部附近的构建阶段选项
  4. 展开“编译源”条目并查找您的数据模型名称。如果找不到,请搜索“xcdatamodeld”。
  5. 从编译列表中删除模型
  6. 确保数据模型包含在“复制捆绑资源”列表中。如果缺少,请添加它。

编辑

正如@WilliamT在注释中解释的那样,您需要编译列表中的xcdatamodeld。相反,转到xcdatamodeld文件中的实体。选择出错的模型,展开左侧面板,并将“Codecen”字段更改为“手动/无”。

选择您的方案(左上角)->编辑方案…->构建(左选项卡)->取消选中“查找隐式依赖项”

在此处输入图片描述

之后,您可能需要修复目标未显式导入的任何依赖项。

我的一个CocoaPods过时并导致了这个问题。做了一个pods更新,效果很好。

我相信它可能是LivePerson SDK

好吧,所以对于任何没有在这里找到正确答案的人来说,因为它与info.plist.无关。

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

当我只使用一个依赖项时(它从内部使用Swift-NIO),一切都很好,但是当我添加一个又一个具有重叠子单元的依赖项时,我遇到了这个严重的问题。

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

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

在那之后,一切都应该工作得很好:)

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

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

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

如果您在React Native中遇到此错误,特别是libyoga.a,请查看这个 Github评论

如果您的应用程序生成与多个.app文件相关的错误,则从“复制捆绑资源”不会工作。中删除.plist文件

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

  1. 选择目标。

  2. 转到Build Phases选项卡。

  3. 删除Output Files中列出的项目
  4. 编译代码,如果编译成功,则不遵循后续步骤。
  5. 如果代码未成功编译并且Xcode可能会给你一个与“未找到库”相关的错误。然后在General Tab中添加Xcode在错误中提到的Linked Frameworks and Libraries中缺少的库。
  6. 继续在Linked Frameworks and Libraries中添加这些库(Xcode通过编译错误询问),直到代码编译成功。

    希望有帮助

在我的情况下,构建归档错误与Xcode10

-1:多个命令产生'/用户/kk/库/开发人员/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklghthuqljdfwv/构建/Intermediates.noindex/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a':1)目标“瑜伽”有一个输出命令“/用户/kk/库/开发人员/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklghthuqljdfwv/构建/Intermediates.noindex/ArchiveIntermediates/react_carday_app/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/libyoga.a”2)目标“瑜伽”有一个输出命令“/用户/kk/库/开发人员/Xcode/DerivedData/react_carday_app-hjahojxsbvmmiyaklghthuqljdfwv/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_projectend
if target.name == "yoga"target.remove_from_projectendendend

然后运行pod install

在Xcode 10中,它也可以在以前的版本上运行

  1. 双击项目
  2. 你会看到像下面这样的图片
  3. 从左边选择目标公司
  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'

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

解决方案1

正如我们所看到的,我也遇到了同样的错误…在我的情况下,文件夹小工具TildeskWidget中的文件夹Chat21Core有一个额外的副本…这是创建问题…因此,可能的解决方案之一也可以是完全读取错误并尝试查找是否有任何额外的副本引用自项目。

解决方案2

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

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

希望这可能会为你工作。

在我的情况下,问题来自podfile。我必须将我的测试项目添加podfile

target 'MyApp' dopod 'Firebase'target 'MyAppTests' doinherit! :search_pathspod 'Firebase'endend

之后,我需要执行:

pod update

实际上,您可以使用传统的构建系统,但您不会获得快速的构建时间,即)您将无法获得XCode10这只是一个没有获得最新构建功能的变通方法https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes/build_system_release_notes_for_xcode_10中默认的新构建系统功能

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

实际发生的事情是,Google使用框架被两次添加到Pods项目中

GoogleUtilities.framework的两个条目

这在Xcode 10之前是可以的,但是如果文件有两个操作(在这种情况下是复制操作),Xcode 10会抱怨。

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

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

简介:您可能同时拥有自动生成和手动生成的Core Data托管对象类文件。

如果错误的第一行引用的是Foo+Core Data Properties. oFoo+CoreDataClass. o/核心数据中心/核心数据中心文件,则此答案适用。例子:

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

可以通过扩展Build Transcript的编译Swift源文件部分来查看根本原因。例如:

<未知>: 0:错误:文件名“地址+CoreDataClass.swift”使用了两次:'/用户/myUserName/Projects/Jnky/Foo+CoreDataProperties'和'/用户/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslqdwgldkjeijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

提到的第一个文件在您的项目目录中有一个源文件,它是有人通过在Project Navigator中选择您的数据模型并单击菜单编辑器>创建托管对象子类生成的。此功能是在Xcode 7左右中添加的。

第二个文件是一个同名的文件,但隐藏在Xcode的DerivedData中。如果数据模型(.xcdatamodeld)文件包含在目标的编译来源构建阶段,此文件将由Xcode在构建期间自动生成。此功能是在Xcode 9左右添加的。零,每个实体/类生成一个或两个文件,具体取决于Codecen弹出窗口的设置。当您在编辑数据模型时选择一个实体时,该弹出窗口位于数据模型检查器中……

数据模型检查器的屏幕截图

这些设置是:

  • 手动/无没有生成文件
  • 类别/扩展生成一个文件Foo+Core Data Properties. m. wift,其中包含Objective-C类别或Swift扩展名。
  • 类定义生成相同的类别/扩展文件,此外还生成Foo+CoreDataClass. m核心数据中心. wift,其中包含类声明和定义。

所以你会看到,当习惯于旧Xcode的开发人员(像我一样)在较新的Xcode中开始项目时,问题就会发生。我们认为我们需要使用创建托管对象子类菜单项来创建我们可以在Project Navigator中看到的文件,而没有意识到我们在Codecen弹出窗口中的设置导致Xcode创建重复文件,Apple“巧妙地”没有在Project Navigator中显示这些文件,因为他们不信任开发人员阅读注意标题中的注释//此文件是自动生成的,不应编辑。

解决方案1-使用旧方法

您可以仅使用一个设置禁用数据模型的所有自动Codecen

  • 打开问题目标的构建阶段(在Project Navigator中,选择项目,然后在出现的目标列表中,选择问题目标,然后选择选项卡构建阶段)。
  • 展开编译来源条目并找到问题数据模型(.xcdatamodeld文件)。
  • 从编译列表中删除它
  • 确保数据模型包含在复制捆绑包资源列表中。

解决方案2-初学者的核心数据魔法

在这里,你去所有在新的方式。

  • 保持数据模型在编译来源中的原样。
  • 在数据模型的每个实体检查器中,将Codecen设置为类定义
  • 在Project Navigator中,删除并丢弃任何核心数据类型Foo+核心数据类型文件,并将任何Foo+Core Data Properties. m. wift文件重命名为类似Foo+我的属性的内容。
  • 在每个Foo+我的房产. wift文件中,如果有Xcode生成的属性,请删除这些属性,因为它们将位于Codecen创建的隐藏文件中。

使用此解决方案,您的类定义会在每次构建时从数据模型自动生成。您甚至看不到它们。它是核心数据魔术,对初学者来说很简单。

解决方案3-对于大多数现实世界的应用程序

但是如果你真的想添加非托管属性,解决方案2就不好了。(Objective-C不允许在类别中添加属性,Swift不允许在扩展中添加存储属性。)所以在大多数现实世界的应用程序中,你可能想在解决方案1和解决方案2之间走一半…

  • 将您的数据模型保留在编译来源的列表中
  • 在数据模型的每个实体检查器中,将Codecen设置为类别/扩展
  • 在Project Navigator中,删除并丢弃任何Foo+CoreDataClass. m核心数据中心. wift文件,并且为了减少将来的混淆,将任何Foo+Core Data Properties. m. wift文件重命名为可能只是foo. m. wift
  • 确保每个foo. m. wift文件都包含类定义,您可以向其添加自己的非托管属性。

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

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

这个问题是由一些lib RN… a文件产生的。我通过从构建阶段->将二进制与库链接中删除其中一些文件(如libRNScreens. a和libRNGestureHandler. a)来修复它,因为它们已经被其他库引用。其他人必须被他们的Pod版本替换,如libRNDeviceInfo. a:

输入图片描述输入图片描述

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

将其从Embedded Binaries部分删除:

测试应用中的嵌入式二进制文件

检查您支持的平台!

我们花了几个月的时间在几个子项目中研究这个问题。我们发现AVAILABLE_PLATFORMS被设置为"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator",这会导致多个平台被构建,这会导致“多个命令产生错误”。例如,“Foo”平台正在为iOS和TVOS构建,因此多个构建命令正在创建一个Foo.framework文件。

一旦我们设置

AVAILABLE_PLATFORMS = iphoneos iphonesimulator

在我们的rootxcconfig文件中,这个问题解决了所有子项目。

检查你的配置

运行

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

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

解决我问题的一个选项是将构建系统更改为遗留构建系统。请按照Xcode 10+中的以下步骤操作。

在这里,我写了一篇关于这个问题及其解决方案的详细文章。

在此处输入图片描述

在此处输入图片描述

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

我尝试执行解决方案->打开目标->构建阶段>复制捆绑包资源,但它再次出现在那里。清理被剥夺的数据有帮助。在错误中,它显示了重复的位置,在我的情况下,它说它在我的应用程序包和被剥夺的数据中。

在我的情况下,我两次失望地将GoogleService-Info.plist文件添加到我的Firebase项目中。

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

值得注意的是,此错误可能会在自动生成CoreData模型后产生,其中Codecen未设置为手动/无。

要在Xcode 10中纠正此问题,请双击您的xcdatamodeId文件并选择您的每个实体并在数据模型检查器的类下将Codecen设置为手动/无。

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

控制台错误:错误:多个命令生成“/用户/xxxx/库/开发人员/Xcode/DerivedData/…”:

解决此问题的步骤:

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

图片说明:

步骤1:

选择方案

步骤3:

选择编辑方案

步骤4-6:

删除不相关的目标并保存

多个产生错误是由我的隐藏文件触发的(. git保持)仔细查看您的编译源代码,我相信此文件在编译源代码中,但它显示为空行。它实际上并没有说出隐藏文件的名称,但我删除了空行并修复了问题,所以我怀疑项目导航器没有显示隐藏文件。

我的错误是:

重复输出文件

'/用户/家/库/开发者/Xcode/派生数据/myAppName-fawptgabysjowicvpeqydjniuova/构建/产品/调试iphoneos/myAppName.app/GoogleMaps.bundle'在任务:PhaseScriptExeution[CP]复制Pods资源/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(我在上面用黑色突出显示它们),这是下面的第四步

首先创建您的项目的副本,并确保您首先对该复制执行以下步骤

1-在项目导航器中,我去了蓝色的项目图标

输入图片描述

2-我选择构建阶段

输入图片描述

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

输入图片描述

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

输入图片描述

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

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

在我们的例子中,我们只是清理了“复制捆绑资源”中的任何碎片,只留下最小的项目。

在此处输入图片描述

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

(XCode 11)

评论use_frameworks!在PodFile为我工作。

#use_frameworks!

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

我的情况类似于Damo是一个-一些产品被两次添加到Pods项目中。我的Podfile的结构是:

# platform :ios, '11.0'
def shared_podsuse_frameworks!pod 'SharedPod1'end
target 'Target1' dopod 'SomePod1'shared_podsend
target 'Target2' doshared_podsend

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

在我的情况下,我有一个修改的手表项目,其中应用程序和扩展都有一个info.plist文件(都以相同的名称命名),为了解决这个问题,我将ios应用程序的文件重命名为info.plist,我将其命名为手表watch_info.plist等等之后,我已经修改了“项目->目标->构建设置”下的包装info.pilst并相应地修改了plist文件名,这为我解决了它

请注意,我在其他地方看到,在项目/工作区设置下将构建系统从新更改为遗留系统,虽然它有效-我不建议这样做,因为它会导致其他问题。

删除该死的资产文件

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

如果您要手动制作实体的CoreDataClass和CoreDataProperties,请确保转到您的xcdatamodel并将检查器选项卡中的代码设置为“手动/无”。如果设置为“类定义”,Xcode将自动为您创建一个重复的类。

这里也一样,但这是2020年5月的最新解决方案

它看起来像一个bug或一些新的Xcode版本的新问题。

错误响应是:

无法构建iOS项目。我们运行了“xcodebuild”命令,但它退出并出现错误代码65。

详细回复:

建立系统信息错误:多个命令产生'/path/of/the/project/ios/build/NameOfTheProject/Build/Products/Debug-iphone模拟器/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-iphone模拟器/NameOfTheProject.app/Zocial.ttf'

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

建立系统信息错误:多个命令产生'/path/of/the/project/ios/build/NameOfTheProject/Build/Products/Debug-iphone模拟器/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-iphone模拟器/NameOfTheProject.app/SimpleLineIcons.ttf'

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

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

我不得不临时react-native unlink react-native-vector-icons,项目再次构建,但没有图标。

这个答案已弃用-Xcode 12已弃用Legacy Build System,它将在进一步的版本中删除

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

Xcode=>文件=>项目设置=>构建系统=>旧版构建系统

输入图片描述

输入图片描述

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

确保您还根据@Lirik的答案检查Product Module Name

我有同样的问题,但在哪里能够通过删除相关的. png和图标资产曲库来修复它,然后构建应用程序。这产生了预期的错误,因为资产丢失了。之后,我再次添加了所有内容,并没有问题地构建应用程序。

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

解决方案2:
如果您使用CocoaPods,您可能希望再次尝试解体安装。命令:

1) pod deintegrate2) pod install

解决方案3:
在Xcode中,转到File Project/Workspace设置。
将构建系统更改为遗留构建系统

有时这个问题的原因是你有多个目标有不同的iOS部署目标.只是检查你的目标(例如你的主端目标和你的扩展)有相同的iOS部署目标。

1-删除所有应用程序的派生数据2-开放式终端3.更新Pod一切都😃

不幸的是,这些答案都不适合我……这是我看到的错误:

"多个命令产生'/用户/…/…/… /Frameworks/abcdef.framework"

  1. 该命令取决于命令…:脚本阶段""
  2. 该命令取决于命令…:脚本阶段""

将这一行添加到Podfile并执行“Pod安装”是唯一有效的事情。

install! 'cocoapods', :disable_input_output_paths => true

我真的希望这能帮助别人。我花了几个小时试图解决这个问题,终于得到了它。

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

祝你好运!

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

def shared_podspod 'X'end
target 'A' doshared_podsend
target 'B' doshared_podsend

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

 target 'A' do
shared_pods
target 'B' doinherit! :search_pathsendend

我是iOS开发的新手,我尝试了上述答案,但它们不适合我。

我的XCode版本是12.4,Swift 5

我在构建时遇到了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)

我很惊讶地看到pod被编译为两个不同版本的iOS(12.3和14.1)

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

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

请让我知道设置两个不同的版本是否是错误的。如果不是错误,那么该怎么做,请记住以下几点:

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

如果您在核心数据中遇到问题,此答案适合您。转到yourfilename.xcdatamodeld,并确保所有实体都有手动/无代码。输入图片描述

[更新]尝试检查项目->目标->(你的名字项目)->复制捆绑资源,并检查是否有一些重复的文件名与您的错误有关。

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

输入图片描述

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

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

在您的框架项目中,如果您有应用程序目标,并且您在部署信息部分下为每个应用程序目标设置了不同的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

现在,当您打开worksapce时,您可以再次检查pods目标。您将看到没有重复。

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

对我来说,它只是有两个同名的文件。

对我来说,这是当我嵌入一个cocoapod的框架时。您需要做的就是将其从通用构建目标的嵌入式内容选项卡中删除。

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

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

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

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

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

在此处输入图片描述

更改后,XCode会要求您更改所有相对目标并按重命名。

在此处输入图片描述

2-复制捆绑资源部分的重复info.plist

当info.plist添加到Copy Bundle resources不需要的时候,你可能会遇到这个错误,选择项目表单project navigator->选择目标->gotoBuild 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数据时可能会遇到这个问题

首先我解释coreData代码类型:

在此处输入图片描述

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

类别/扩展:选择类别/扩展以在托管对象子类中添加其他便利方法或业务逻辑。

手动/无:选择手动/无可编辑托管对象子类中的属性,例如,更改访问修饰符,以及添加其他便利方法或业务逻辑。

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

在此处输入图片描述

我注意到目标有一个与[EC] Embed Pods Frameworks完全相同的Run Script Phases。删除Run Script后,问题就解决了。

输入图片描述

在我的案例中:

如果创建两个同名文件,将触发此错误。删除您最近添加的一个,将解决此问题。

希望这有帮助。

2022答案

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

输入图片描述

这是我的错误消息:

error: Multiple commands produce '/Users/runner/Library/Developer/Xcode/DerivedData/slapshot-ios-bpixgzdbgfcmofhguehgrznwbjxl/Build/Intermediates.noindex/ArchiveIntermediates/slapshot-ios-example/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Introspect.framework'note: Target 'Introspect-dynamic' (project 'Pods') has create directory command with output '/Users/runner/Library/Developer/Xcode/DerivedData/slapshot-ios-bpixgzdbgfcmofhguehgrznwbjxl/Build/Intermediates.noindex/ArchiveIntermediates/slapshot-ios-example/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Introspect.framework'note: Target 'Introspect-static' (project 'Pods') has create directory command with output '/Users/runner/Library/Developer/Xcode/DerivedData/slapshot-ios-bpixgzdbgfcmofhguehgrznwbjxl/Build/Intermediates.noindex/ArchiveIntermediates/slapshot-ios-example/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/Introspect.framework'

在运行poddeintegrate/pod install归功于这个答案)之前,我必须将:linkage => :static添加到我的所有目标中,而不仅仅是其中的一些。

在我的情况下,我有关于Info.plist重复输出文件的错误:

warning: duplicate output file

/Users/mahdifaraji/Desktop/boilerplate/ios/boilerplate.xcodeproj: warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/mahdifaraji/Desktop/boilerplate/ios/boilerplate/Info.plist'. (in target 'boilerplate' from project 'boilerplate')warning: duplicate output file '/Users/mahdifaraji/Library/Developer/Xcode/DerivedData/boilerplate-fpkyeiljiiuxbidceadasmpsntah/Build/Products/Debug-iphonesimulator/boilerplate.app/Info.plist' on task: ProcessInfoPlistFile /Users/mahdifaraji/Library/Developer/Xcode/DerivedData/boilerplate-fpkyeiljiiuxbidceadasmpsntah/Build/Products/Debug-iphonesimulator/boilerplate.app/Info.plist /Users/mahdifaraji/Desktop/boilerplate/ios/boilerplate/Info.plist (in target 'boilerplate' from project 'boilerplate')
** BUILD FAILED **

我通过将其从Project -> Target -> BuildPhases -> Copy Bundle Resources中删除来解决问题