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中有一个错误。
我的问题是在Mojave中运行Xcode 10,并且在尝试运行我在更新到Xcode 10之前编写的单元测试时。
在我的例子中,我在运行TestTarget目标时遇到了这个问题。为了解决这个问题,我必须:
删除一个目标依赖项(在TestTarget >构建阶段>目标依赖项中)
因为除了我的TestTarget,我还有另外两个目标,它们都在运行相同的脚本,并在某个点上创建/复制文件。
这与Xcode 10 Build System Release Notes中提到的内容相冲突:
对于由多个构建命令生成的构建中的任何单个文件,都是错误。例如,如果两个目标各自从shell脚本阶段声明相同的输出文件,则将输出文件的声明分解到单个目标中。
新的更新后,我更新Xcode 10.1到10.2
我更新到Xcode 10.2后又出现了类似的问题。我有多个目标在通过项目:Target1和Target2,我解决了这个问题:
导航到编辑方案>构建和
从构建的目标中移除一个:取消Test下Target1的复选框,因为我知道Target2导入了Target1
还要注意的是,Target2的复选框在Test下保持选中状态
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。锁定文件从项目文件夹。
同样是pod安装
试着建立项目。
希望这对你有用。
在创建框架时也会遇到此错误。
在你的框架项目中,如果你有应用目标,并且在部署信息部分为每个应用目标设置了不同的iOS版本,那么进行pod安装将为相同的pod创建一个带有iOS版本后缀的新目标。
您可以通过转到pods目标来检查这一点。如果你看到重复,那就是你的问题。Xcode get因此感到困惑,并抛出一个这样的错误。
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”
以下是你需要做的。
将所有目标的部署信息下的最小ios版本设置为相同。这将确保当你安装pod时,cocoapods不会根据多个ios版本创建同一个pod的新目标。
关闭你的工作空间。删除xcworkspace, Podfile。锁和Pods文件夹。
运行pod install。
现在,当您打开工作区时,您可以再次检查pod目标。你会发现没有重复。
现在只需更改所有目标的部署信息。