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'
在Xcode 9中运行代码有效,但在Xcode 10中导致错误。
这里提出的解决方案都不适用于我。这特别是由于CocoaPods。我之前使用的是Cocoapods 1.3.1。简单地升级到1.5.3并没有立即解决问题。
我遵循的步骤是:
pod install
尝试所有这个选项,这3个选项中的任何一个都可以为你工作,当然
Option 1: Remove all files from
目标>>构建阶段>>编译源
目标>>构建阶段>>复制捆绑资源
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缓存清理PromisesSwift cd [your_project_dir] rm -rf Pods / rm Podfile.lock pod更新
I hope this will help you, Happy coding :-)
概要:您可能同时拥有自动生成和手动生成的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
)文件包含在目标的编译源构建阶段,则每次构建时Xcode都会自动生成此文件。此功能已添加到Xcode 9中。根据Codegen弹出窗口的设置,为每个实体/类生成零个,一个或两个文件。当您在编辑数据模型时选择实体时,该弹出窗口位于数据模型检查器中...
设置是:
因此,当一个习惯于旧Xcode的开发人员(比如我)在较新的Xcode中开始一个项目时,你会发现问题就出现了。我们认为我们需要使用Create Managed Object Subclass菜单项来创建我们可以在Project Navigator中看到的文件,同时没有意识到我们在Codegen弹出窗口中的设置导致Xcode创建重复文件,Apple “聪明地”没有在Project Navigator中显示,因为他们不相信开发人员阅读并注意标题中的注释//这个文件是自动生成的,不应该被编辑。
您只需一个设置即可为数据模型禁用所有自动Codegen:
.xcdatamodeld
文件)。在这里,你全力以赴。
使用此解决方案,您的类定义将自动从每个构建的数据模型生成。你甚至看不到它们。它是Core Data Magic,对于初学者来说非常简单。
但是如果你真的想要添加非托管属性,解决方案2并不好。 (Objective-C不允许在类别中添加属性,Swift不允许在扩展中添加存储的属性。)因此,在大多数真实世界的应用程序中,您可能希望在解决方案1和2之间中途...
(致谢正电子的回答。我的答案解释了为什么正电子的答案(我的解决方案1)有效,并添加了解决方案2和解决方案3.)
在开始之前请注意我的项目使用Carthage作为依赖管理器。
这里现有的答案都没有解决我的问题。为我解决问题的是以下内容。
首先,我注意到构建错误特别指出了一个框架。接下来,我为该框架过滤了App Target> Build Phases。我注意到该框架存在于“Link Binary With Libraries”和“Embed Frameworks”中。注意到“嵌入框架”下列出的框架都不是迦太基管理的框架,我从“嵌入框架”中删除了有问题的框架。然后,我重新构建了我的项目,一切正常,包括相关框架启用的功能。
脚步:
我有一堆Multiple commands produce
警告 - 不限于一个目标中的info.plist重复。包括本地化资源和字符串文件,标题等。
解决方案:删除目标成员中的所有重复项。
所以我遇到的问题是我不小心将Info.plist包含在项目设置中 - > Build Phases - > Copy Bundle Resources for my target。
我使用Carthage和Xcode 10。
我的解决方案是 - >项目 - >目标 - >常规 - >
从“嵌入式二进制文件”中删除添加了Carthage的框架
通常你必须在Build Phases中添加一个脚本来剥离app store的架构。
在Xcode 10中,脚本似乎总是被调用。因此,它将框架复制到正确的位置,您不必将它们添加到“常规”选项卡。
注意:如果没有设置 - >在构建设置 - >搜索路径 - >框架搜索路径 - >设置框架的路径你添加了Carthage ....例如。 “$(PROJECT_DIR)/迦太基/编译/ iOS版”
我找到了这个构建错误的解决方案,对于其他任何与Xcode 10构建系统有相同问题的人,请按照以下步骤进行修复:
- 在Xcode中,转到文件 - >项目/工作区设置。
- 将构建系统更改为Legacy Build系统。
如果您想使用新的构建系统,那么您可以找到故障排除帮助from this apple Xcode help page。
希望这可以帮助!
当我在两个不同的目标中有一个同名文件时,我遇到了这个问题。出于某种原因,我有两个目标的一部分文件。所以基本上我有两个文件。这两个文件都属于一个目标。
有意义的是,目标每个目标只能有一个文件名,因此只需取消选中与主目标无关的文件的目标成员框就可以解决问题。
有类似的问题,但与.swiftdoc文件。
我在项目中有扩展和单元测试目标。他们将相同的“产品模块名称”(Build Settings中的PRODUCT_MODULE_NAME)作为应用程序。在使名字独特的问题消失后。
转移到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
。
我的一个CocoaPods被篡改并导致了这个问题。一个pods更新了,它运行正常。
我相信它可能是LivePerson SDK
我的问题是Xcode 10在Mojave中运行,并且在尝试运行我在更新到XCode 10之前编写的单元测试时。
就我而言,我在运行TestTarget
目标时遇到了这个问题。要解决,我不得不:
TestTarget > build phases > Target Dependencies
中)因为我除了我的TestTarget
之外还有另外两个目标,并且两者都运行相同的脚本并在某一点创建/复制文件。
这与Xcode 10 here的Build System发行说明中提到的内容相冲突:
构建中的任何单个文件由多个构建命令生成是错误的。例如,如果两个目标都从shell脚本阶段声明相同的输出文件,则将输出文件的声明分解为单个目标。
从Xcode 10.1更新到10.2之后的新UPDATE
在我更新到Xcode 10.2之后,类似的问题再次出现了。我有多个目标项目:Target1
和Target2
,我通过以下方式解决了这个问题:
Edit Scheme > Build
和Target1
下Test
的复选框,因为我知道Target2
导入了Target1
另外要注意的是,Target2
的复选框将在Test
下保持检查状态
搜索和删除从多个命令生成的重复文件。
在这里,应删除额外的Info.plist
文件(在我的情况下,它是Contents.json
)
error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
这基本上意味着你有多个名为Info.plist
的文件;通常它很好,但不小心您的文件被设置为相同的目标成员资格。因此,修复方法是:单击每个文件并在右侧检查其目标成员资格,确保它们不重叠。
我和plist有同样的问题。事实证明我有两个副本,一个是空的,一个在我的本地化资源文件夹中。删除其中一个(空的)解决了这个问题。
如果检查错误,则行1)和2)具有不同的路径。您可能在复制阶段将此文件定义了两次。
检查目标属性,构建阶段,复制捆绑资源,并查找重复的info.plist。找出哪条路径不正确并将其删除。 (你可能也想从文件系统中删除它。)
试试这个。 Xcode-> File-> Project Settings-> Build System - > Legacy Build System。
如果你从Ditto
命令创建多个同名实例(不是'copy files' build phase
),你可能需要更改Product Module Name
。
Build Settings
Product Module Name
我们的应用程序中有一个监视目标和一些通知目标,所以我只是将Extension
这样的东西放在模块名称的末尾。
我最初在这里找到了这个解决方案:https://forums.developer.apple.com/thread/103913
我正在尝试核心数据。我为一个简单的清单程序构建了一个数据模型,并生成了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)在“编译源”列表中。当我从列表中删除它时,项目编译得很干净。
在检查构建日志时,我注意到了一个警告:
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
。如果您使用CocoaPods,您可能想尝试解除pod并重新安装。这个对我有用。
pod deintegrate
pod install
试试这个工作:
在Xcode中,转到文件 - >项目/工作区设置。
将构建系统更改为Legacy Build系统。