错误:多个命令产生'/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':1)目标'OptimalLive'有复制命令'/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' 到 '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive .app/Info.plist' 2) 目标 'OptimalLive' 具有从 '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist' 到 '/Users/uesr/ 的复制命令Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist' 3) 目标 'OptimalLive' 具有带有输入 '/Users/uesr/Desktop/workSpace/SEALIVE 的进程命令/SeaLive1.1/OptimalLive/Info.plist'
在 Xcode9 中运行代码可以,但是在 Xcode10 中出现错误。
该问题可能是由于 App 中的多个 Plist 或其他文件而发生的-
解决方案 ->打开目标 ->构建阶段 >复制 Bundle Resources 并从那里删除 info.plist
。
https://i.stack.imgur.com/whT0P.png
注意:如果您也开发了手表应用程序,那么您也必须从手表和手表扩展中删除 plist。
此答案已弃用 - Xcode 12 已弃用旧版构建系统,它将在后续版本中删除
我找到了此构建错误的解决方案,对于其他与 Xcode 10 构建系统有相同问题的人,请按照以下步骤进行修复:
在 Xcode 中,转到 File->Project/Workspace 设置。将构建系统更改为 Legacy Build 系统。
https://i.stack.imgur.com/N9rIg.png
如果您想使用新的构建系统,那么您可以找到故障排除帮助 from this apple Xcode help page。
转到 Xcode -> 文件 -> 工作区设置。你会发现一个像这样的弹出窗口。
https://i.stack.imgur.com/hdaJu.png
从 Build System 标签中选择“Legacy Build System”。按“完成”
注意:- 确保使用“cmd+shift+alt+k”和“派生数据”清除您的项目
构建您的项目,它将发挥魅力:)
我正在尝试使用 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)在“编译源”列表中。当我从列表中删除该项目时,该项目编译得很干净。
打开项目导航器并选择项目(顶部的第一个条目) 在“项目和目标”窗格中的目标下选择您的构建目标 选择顶部附近的构建阶段选项 展开“编译源”条目并查找您的数据模型姓名。如果找不到“xcdatamodeld”,请搜索它。从编译列表中删除模型 确保数据模型包含在“复制捆绑资源”列表中。如果缺少,请添加它。
编辑
作为@WilliamT。在注释中解释说,您需要编译列表中的 xcdatamodeld。相反,请转到 xcdatamodeld 文件中的实体。选择出错的模型,展开左侧面板,将“Codegen”字段更改为“Manual/None”。
此答案已弃用 - XCode 12 已弃用旧版构建系统,它将在后续版本中删除
试试这个。 Xcode->文件->项目设置->构建系统->旧版构建系统。
如果您从创建多个同名实例(不是 'copy files' build phase
)的 Ditto
命令获取此信息,则可能需要更改 Product Module Name
。
单击您的目标 Xcode 抱怨单击构建设置搜索产品模块名称将名称更改为唯一的名称
我们的应用程序中有一个监视目标和一些通知目标,所以我只是将 Extension
之类的东西放在模块名称的末尾。
我最初在这里找到了这个解决方案:https://forums.developer.apple.com/thread/103913
Product Module Name
的位置右侧选择 All
以显示构建配置。
如果您使用 CocoaPods,您可能需要尝试解构 pod 并重新安装。这个对我有用。
pod deintegrate
pod install
在检查构建日志时,我注意到一个警告:
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')
所以,如果这是你的情况,那么就去你的目标:
构建阶段复制捆绑资源删除 info.plist。
如果错误消息引用核心数据文件,请阅读此答案
概要:您可能同时拥有自动生成和手动生成的 Core Data 托管对象类文件。
如果错误的第一行涉及 Foo+CoreDataProperties.o 或 Foo+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 的 Compile Swift Source Files 部分来查看根本原因。例如:
<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'
提到的第一个文件在您的项目目录中有一个源文件,有人通过在 Project Navigator 中选择您的数据模型并单击菜单 Editor > Create Managed Object Subclass 来生成该文件。这个特性是在 Xcode 7 左右添加的。
第二个文件是一个同名文件,但它隐藏在 Xcode 的 DerivedData
中。如果数据模型 (.xcdatamodeld
) 文件包含在目标的Compile Sources 构建阶段,则此文件由 Xcode 在每次构建期间自动生成。这个特性是在 Xcode 9 左右添加的。为每个实体/类生成零个、一个或两个文件,具体取决于 Codegen 弹出窗口的设置。当您在编辑数据模型时选择实体时,该弹出窗口位于 Data Model Inspector 中……
https://i.stack.imgur.com/5xtPT.png
设置如下:
手动/无 不生成文件
类别/扩展 生成一个文件 Foo+CoreDataProperties.m 或 .swift,其中包含一个 Objective-C 类别或 Swift 扩展。
类定义 生成相同的类别/扩展文件,另外生成一个 Foo+CoreDataClass.m 或 .swift,包含类声明和定义。
因此,当习惯于旧 Xcode 的开发人员(如我)在新 Xcode 中开始项目时,您会看到问题发生。我们认为我们需要使用 Create Managed Object Subclass 菜单项来创建我们可以在 Project Navigator 中看到的文件,同时没有意识到我们在 Codegen 弹出窗口中的设置导致 Xcode 创建重复文件,Apple “聪明”不会显示在项目导航器中,因为他们不相信开发人员会阅读和注意标题中的注释 // 此文件是自动生成的,不应编辑。
解决方案 1 - 使用旧方法
您只需一项设置即可禁用数据模型的所有自动 Codegen:
打开问题目标的构建阶段(在项目导航器中,选择项目,然后在出现的目标列表中,选择问题目标,然后选项卡构建阶段)。
展开 Compile Sources 条目并找到问题数据模型(.xcdatamodeld 文件)。
从编译列表中删除它
确保数据模型包含在 Copy Bundle Resources 列表中。
解决方案 2 - 初学者的核心数据魔法
在这里,您将全力以赴。
将您的数据模型保留在该编译源中。
在数据模型的每个实体检查器中,将 Codegen 设置为 Class Definition。
在 Project Navigator 中,删除并丢弃所有 Foo+CoreDataClass 文件,并将所有 Foo+CoreDataProperties.m 或 .swift 文件重命名为 Foo+MyProperties。
在每个 Foo+MyProperties.m 或 .swift 文件中,如果有 Xcode 生成的属性,请删除这些属性,因为它们将在 Codegen 创建的隐藏文件中。
使用此解决方案,您的类定义会从每次构建的数据模型中自动生成。你甚至看不到他们。它是 Core Data Magic,对初学者来说既好又简单。
解决方案 3 - 适用于大多数真实世界的应用程序
但是如果你真的想添加非托管属性,解决方案 2 就不好了。 (Objective-C 不允许在类别中添加属性,而 Swift 不允许在扩展中添加存储的属性。)因此,在大多数实际应用程序中,您可能希望介于解决方案 1 和 2 之间……
将您的数据模型留在编译源列表中
在数据模型的每个实体检查器中,将 Codegen 设置为 Category/Extension。
在 Project Navigator 中,删除并丢弃所有 Foo+CoreDataClass.m 或 .swift 文件,并且为了减少将来的混淆,将所有 Foo+CoreDataProperties.m 或 .swift 文件重命名为 Foo.m 或 .swift。
确保每个 Foo.m 或 .swift 文件都包含类定义,您可以在其中添加自己的非托管属性。
(Positron 对答案的致谢。我在这里的回答解释了为什么 Positron 的答案(我的解决方案 1)有效,并添加了解决方案 2 和解决方案 3。)
我有同样的问题,我在主应用程序中有一个辅助应用程序并将其复制到资源中。在我的情况下解决为: -
1)目标 - > 2)构建阶段 2)复制文件(n 项) 3)删除复制文件。
Helper 应用程序在 Xcode 10.0 中自动复制。
https://i.stack.imgur.com/rOv6z.jpg
解决方案 1:打开目标 ➼ 构建阶段 ➼ 复制捆绑资源 ➼ 从那里删除 info.plist。 ➼ 您也必须从扩展中删除 plist(如果有)。
解决方案 2:如果您使用 CocoaPods,您可能需要尝试解构 pod 并重新安装。命令:
1) pod deintegrate
2) pod install
解决方案 3:在 Xcode 中,转到 File ➼ Project/Workspace settings。 ➼ 将构建系统更改为 Legacy Build 系统。
试试这个它的工作:
在 Xcode 中,转到 File->Project/Workspace 设置。
将构建系统更改为 Legacy Build 系统。
解决我的问题的一种选择是将构建系统更改为旧版构建系统。请在 Xcode 10+ 中按照以下步骤操作。
这里我写了一篇关于问题的详细文章&它的解决方案。 Xcode Error: Multiple commands produce
https://i.stack.imgur.com/3F4yl.jpg
https://i.stack.imgur.com/donV4.jpg
这里提出的解决方案都不适合我。这尤其归功于 CocoaPods。我以前使用的是 Cocoapods 1.3.1。简单地升级到 1.5.3 并不能立即解决问题。
我遵循的步骤是:
删除 Podfile.lock 删除 Pods 目录 Delete Derived Data & Clean Exit Xcode 更新 CocoaPods 到 1.5.3 运行 pod install 打开工作区并构建
install! 'cocoapods', :disable_input_output_paths => true
。此外,如果您不想更新您的 pod - 不要删除 podfile.lock,所有 pod 都将安装为其当前版本。
就我而言,PDFGenerator 正在生成一个 info.plist 文件,我只是将其删除。
https://i.stack.imgur.com/t2a1M.png
此答案已弃用 - Xcode 12 已弃用旧版构建系统,它将在后续版本中删除
我正在使用 Xcode 11.4 无法构建旧项目
Xcode => 文件 => 项目设置 => 构建系统 => 旧版构建系统
https://i.stack.imgur.com/NtH2R.jpg
https://i.stack.imgur.com/iZEWE.png
在将 SDK 的 Fabric 套件的第二部分添加到应用程序后,我出现了这个问题。
实际发生的是 GoogleUtilies 框架被两次添加到 Pods 项目中
https://i.stack.imgur.com/F2ogp.png
这在 Xcode 10 之前会很好,但是如果文件有两个针对它的操作(在这种情况下是复制操作),Xcode 10 会抱怨。
删除第二个框架是安全的。
在开始之前,请注意我的项目使用 Carthage 作为依赖项管理器。
这里现有的答案都没有解决我的问题。为我解决了这个问题的是以下内容。
首先,我注意到构建错误特别指出了一个框架。接下来,我为该框架过滤了 App Target > Build Phases。我注意到该框架存在于“Link Binary With Libraries”和“Embed Frameworks”中。注意到“嵌入框架”下列出的框架都不是由迦太基管理的框架,我从“嵌入框架”中删除了有问题的框架。然后我重新构建了我的项目,一切正常,包括相关框架启用的功能。
当我在两个不同的目标中有一个同名的文件时,我遇到了这个问题。出于某种原因,其中一个文件我拥有两个目标的一部分。所以基本上我有两个文件。这两个文件都属于一个目标。
一个目标每个目标只能有一个文件名是有道理的,因此只需取消选中与主目标无关的文件的目标成员框即可解决问题。
所以我遇到的问题是我不小心将 Info.plist 包含在项目设置中 -> 构建阶段 -> 为我的目标复制捆绑资源。
脚步:
转到 Xcode 文件 单击工作区设置 构建系统 选择作为旧版构建系统
这是另一个可行的解决方案:(如果您使用的是自定义 Pod)
从侧边栏中选择“Pods”作为屏幕截图中的亮点。
单击构建阶段。展开“标题”部分。有 3 个选项 Public、Private、Project
展开公共并检查是否有重复文件。去掉它。完毕!!
https://i.stack.imgur.com/L7FzS.png
我的错误是:
在任务上重复输出文件'/Users/home/Library/Developer/Xcode/DerivedData/myAppName-fawptgabysjowicvpeqydjniuovo/Build/Products/Debug-iphoneos/myAppName.app/GoogleMaps.bundle':PhaseScriptExecution [CP] Copy Pods Resources /Users/主页/库/开发人员/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 步
首先创建项目的副本,并确保首先在该副本上执行以下步骤
1-在项目导航器中,我转到了蓝色项目图标
https://i.stack.imgur.com/RfC7M.png
2-我选择构建阶段
https://i.stack.imgur.com/esmB6.png
3- 在构建阶段我选择 [CP] Copy Pods Resources
https://i.stack.imgur.com/nieLw.png
4- 在 [CP] Copy Pods Resources
下我去了 Output Files
,在下面我找到了以 GoogleMaps.bundle
结尾的文件。我选择了它并按下减号将其删除。确保您转到 输出文件 而不是输入文件
https://i.stack.imgur.com/gBhOx.png
5-我做了一个干净的shift+cmmd+k
,然后当我构建项目时,错误消失了
奇怪的是,即使红色错误消失了,黄色警告仍然存在,但它起作用了:)
有一些原因会导致显示此错误。
1-项目名称与项目上使用的依赖项相同
当您为项目选择的名称与您在项目上使用的依赖项之一相同时,可能会发生此错误,例如,如果您通过 pod 或SPM。
要解决此问题,您应该使用以下方式更改项目名称:
从左侧边栏的 project navigator
中选择项目,从 file inspector
更改项目名称 -> Identity and Type
-> name
从右侧边栏中。
https://i.stack.imgur.com/FLtvC.png
更改后,XCode 会要求您更改所有相关目标,然后按重命名。
https://i.stack.imgur.com/ZtsDz.png
2 - 复制捆绑资源部分上的重复 info.plist
将 info.plist 添加到 Copy Bundle resources
不需要时,您可能会遇到此错误,请选择项目表单 project navigator
->选择目标->转到 Build Phases
标签 -> Copy Bundle Resources
,如果您在那里看到 info.plist,请通过选择 info.plist 将其删除,如下图所示
https://i.stack.imgur.com/DNKgZ.png
3 - pod 文件无法正常工作
有时您会收到此错误,因为您使用的依赖项因意外原因而中断。
1 - 删除 Podfile.lock
2 - 删除 Pod 目录
- 删除派生数据 &清理(您可以从 XCode
菜单 -> Preferences...
-> Locations
-> Derived Data
找到此目录,然后单击地址右侧的箭头图标进入该目录)
4 - 退出 Xcode
5 - 在 mac 终端上使用 [sudo] gem install cocoapods
更新 CocoaPods
6 - 转到终端上的项目目录并运行 pod install
7 - 打开工作区并构建
5-重复的核心数据
在项目中使用 Core 数据时可能会遇到这个问题
首先我解释 coreData 代码生成类型:
https://i.stack.imgur.com/x7DV8.png
**类定义:** 当您不需要编辑托管对象子类的属性或功能以及 Core Data 为您生成的属性文件时,请选择类定义。
类别/扩展:选择类别/扩展以在托管对象子类中添加其他便利方法或业务逻辑。
手动/无:选择手动/无以编辑托管对象子类中的属性,例如,更改访问修饰符,并添加其他便利方法或业务逻辑。
选择 Manual/None
并检查 CopyBundleRecources
上是否存在 xcmodeldata 的副本,将其删除。
https://i.stack.imgur.com/wkR32.png
我有一堆 Multiple commands produce
警告 - 不仅限于一个目标中的 info.plist 重复。包括本地化的资源和字符串文件、头文件等。
解决方案:删除目标成员中的所有重复项。
尝试所有这个选项,这 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->文件->项目设置->构建系统->旧版构建系统
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 :-)
不幸的是,这些答案都不适合我......这是我看到的错误:
“多个命令产生'/Users/.../.../.../Frameworks/abcdef.framework”
该命令取决于命令...:脚本阶段“”该命令取决于命令...:脚本阶段“”
将此行添加到 Podfile 并执行“Pod Install”是唯一有效的方法。
install! 'cocoapods', :disable_input_output_paths => true
我真的希望这对某人有所帮助。我花了几个小时试图解决这个问题,最终得到了它。
有时我只是希望 Xcode 能像 IntelliJ / Android Studio 一样高效 :(
祝你好运!
https://i.stack.imgur.com/AXu7c.png
值得注意的是,在自动生成 Codegen 未设置为 Manual/None 的 CoreData 模型后,可能会产生此错误。
要在 Xcode 10 中更正此问题,请双击您的 xcdatamodeId 文件并选择每个实体,然后在 Data Model Inspector 的 Class 下将 Codegen 设置为 Manual/None。
如果您手动创建实体的 CoreDataClass 和 CoreDataProperties,请确保转到 xcdatamodel 并将检查器选项卡中的 Codegen 设置为“Manual/None”。如果将其设置为“类定义”,Xcode 将自动为您创建一个重复的类。
info.plist
文件,因为它与 podspec 的source_files
属性匹配,所以该文件被收集起来。我不需要模块中的info.plist
文件,因此我将其删除。