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。

其他回答

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

# platform :ios, '11.0' 

def shared_pods
  use_frameworks!
  pod 'SharedPod1'
end

target 'Target1' do
  pod 'SomePod1'
  shared_pods
end

target 'Target2' do
  shared_pods
end

所有共享舱都被添加了两次。取消注释的第一行,然后pod安装解决了这个问题。

有一些原因导致显示这个错误。

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

当你为你的项目选择一个与你在项目上使用的依赖项之一相同的名称时,这个错误可能会发生,例如,如果你通过pod或SPM使用它们,你就不能选择FirebaseAuth或GoogleSignIn作为项目名称。

要解决这个问题,你应该用下面的方法更改项目名称:

从左边栏的项目导航器中选择项目,从右边栏的文件检查器中更改项目名称->身份和类型->名称。

在你改变它之后,XCode会要求你改变所有相对目标,然后按下rename。

2 -重复的信息。复制Bundle资源部分的plist

当输入信息时,您可能会遇到此错误。plist被添加到复制Bundle资源不需要,选择项目形式项目导航->选择目标-> goto构建阶段选项卡->复制Bundle资源,如果你看到信息。点击这里,通过选择info删除它。请像下面的图片一样

3 - pod文件不能很好地工作

有时您会遇到此错误,因为您使用的依赖项由于意外原因而中断。

1 -删除Podfile.lock

2 -删除Pods目录

3 -删除派生数据和清除(你可以从XCode菜单中找到这个目录-> Preferences…->位置->派生数据,并通过单击地址右侧的箭头图标进入目录)

4 -退出Xcode

5 -使用[sudo] gem在mac终端上安装CocoaPods

6 -进入终端的工程目录,运行pod install

7 -打开工作区并构建

5-复制核心数据

当你在项目中使用Core data时,你可能会遇到这个问题

首先我解释coreData代码原类型:

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

类别/扩展:选择类别/扩展在托管对象子类中添加额外的方便方法或业务逻辑。

Manual/None:选择Manual/None来编辑托管对象子类中的属性,例如,修改访问修饰符,并添加额外的方便方法或业务逻辑。

选择Manual/None并检查CopyBundleRecources上是否存在xcmodeldata的副本,然后删除它。

在我的情况下,我有关于信息的错误。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 **

我解决了这个问题,从项目->目标->建筑阶段->复制捆绑资源

在向应用程序添加了Fabric sdk套件的第二部分后,我遇到了这个问题。

实际发生的是GoogleUtilies框架被添加到Pods项目两次

这在Xcode 10之前是没问题的,但是如果一个文件有两个操作(在这种情况下是一个复制操作),Xcode 10就会报错。

去掉第二个框架是安全的。

在我的例子中,我添加了GoogleService-Info。plist文件两次失望地到我的Firebase项目。

我先删除添加的GoogleService-Info。Plist,问题解决了。