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中有一个错误。


当前回答

对于那些依赖名称相同的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_NAMEvalue。

其他回答

对于没有找到正确答案的同学因为这和info。plist没有关系。

我在开发一个macOS应用程序时遇到了这个问题,没有CocoaPods或Carthage,只有SPM包,手动将xcodeprojects拖到workplace。

当我只使用一个依赖时(它从内部使用Swift-NIO),一切都没问题,但当我添加一个又一个带有重叠子deps的依赖时,我遇到了这个讨厌的问题。

解决方案是尝试分别编译所有主要的依赖项(这将失败,因为在各自的.build文件夹中不存在签出文件夹,这很可能是因为您将pkg置于编辑模式(swift包编辑YourPkg…)

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

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

我的错误是:

重复的输出文件 ' /用户/ home /图书馆/开发/ Xcode / DerivedData / myAppName-fawptgabysjowicvpeqydjniuovo /构建/产品/ Debug-iphoneos / myAppName.app / GoogleMaps.bundle” on task: PhaseScriptExecution [CP]拷贝Pods资源 /用户/ home /图书馆/开发/ Xcode / DerivedData / myAppName-fawptgabysjowicvpeqydjniuovo /构建/ Intermediates.noindex / myAppName.build Debug-iphoneos / myAppName.build / Script-32CCC25BF727B592A1784900.sh

我关注的问题文件是GoogleMaps。bundle和该文件在[CP]拷贝Pods资源中的位置,以及它指定它是一个重复的输出文件的事实(我在上面用黑色突出显示它们),这是下面的第四步

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

在项目导航器中,我找到了蓝色的项目图标

2-我选择构建阶段

3-在Build Phases下,我选择[CP] Copy Pods Resources

4-在[CP]拷贝Pods资源下,我去了输出文件,在那里我找到了以GoogleMaps.bundle结束的文件。我选中它,然后按负号删除它。确保你选择了输出文件而不是输入文件

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

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

在我的例子中,问题来自podcast文件。我必须将我的测试项目添加到podfile:

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

之后,我需要执行:

pod update

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

这里没有一个现有的答案能解决我的问题。为我解决这个问题的方法如下。

First, I noticed that the build error pointed out one framework in particular. Next I filtered App Target > Build Phases for that framework. I noticed that that framework was present in both "Link Binary With Libraries" and "Embed Frameworks". Noting that none of the frameworks listed under "Embed Frameworks" were ones managed by Carthage I removed the framework in question from "Embed Frameworks". I then re-built my project and everything works fine including the functionality enabled by the framework in question.

在我的情况下,我有一个修改手表项目的应用程序和扩展都有一个信息。plist文件(都以相同的名字命名),为了解决这个问题,我重新命名了ios应用程序的文件,我把它作为信息。我将手表命名为watch_info。等等 之后,我在包装信息下修改了“项目->目标->构建设置”。Pilst并相应地修改了plist文件名,这为我解决了它

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