Xcode警告:“多个构建命令用于输出文件”;

我得到一个这样的错误:

[WARN]警告:输出文件/Developer/B/Be/build/ release - iphoneonessimulator /BB.app/no.png有多个构建命令

[WARN]警告:输出文件/Developer/B/Be/build/ release - iphoneonesemulator /BB.app/d.png有多个构建命令

[WARN]警告:输出文件/Developer/B/Be/build/ release - iphoneonesemulator /BB.app/n.png有多个构建命令

但是我检查了Xcode,我没有看到任何这样的文件的副本。正如Apple邮件列表中的这篇文章所说,没有副本。

148581 次浏览

实际上,这个问题的答案很简单。

在你的Xcode项目中搜索引发警告的文件,并删除其中一个。

Xcode只会在搜索结果中显示该文件的一个引用,但不要止步于此,直接删除它。(最好在删除之前备份项目文件)

现在重新构建项目。警告现在应该消失了。 (这个答案是以前版本的xcode)

如果项目中有两个名称相同的文件,就会发生这种情况。即使在XCode中文件是分组的,当项目编译时,所有文件最终都在同一个目录中。换句话说,如果您有/group1/image.jpg和/group2/image.jpg,编译后的项目将只有两个image.jpg文件中的一个。

这不是一个Xcode错误,尽管警告信息不足以描述真正的原因。

当项目中有多个具有相同名称的文件时,将出现此错误消息。您只需删除或重命名具有重复名称的文件,问题就解决了。

当你对同一个文件有多个引用时,错误似乎出现。 我有两个相同名称的文件,并得到这个错误。当我删除其中一个错误消失。< / p >

这很容易在添加基于git的子项目时引起。Xcode还没有聪明到忽略。git子文件夹,即使你在finder中看不到它,所以它会非常困惑,因为有多个名为“master”或“exclude”的文件(标准的git回购文件)。使用Xcode4,转到项目(左侧树的根),然后单击应用目标并展开“复制Bundle Resources”,然后删除所有对.git的引用,无论如何你都不应该将它们添加到应用中。

在项目导航器中,选择Xcode项目文件。这将显示项目设置以及项目中的目标。查看“Copy Bundle Resources”构建阶段。您应该在该列表中找到两次违规文件。删除重复的引用。

Xcode抱怨你试图将同一个文件与你的应用程序捆绑两次。

我很确定这可能是由XCode 4的错误引起的,至少在我遇到的情况下是这样。

如果您同时向项目添加多个依赖于语言的文件,就会发生这种情况。我通过查看git差异发现了这一点。我在提交中什么也没做,只是添加了一些新的本地化的nib文件。但是回顾这个项目的不同之处。在Pbxproj文件中,它显示了一堆新的重复引用,为之前已经在项目中的文件添加。在我看来,它这样做的文件也是随机的。

我重复了很多次同样的行为。

从项目中删除这些文件并不能解决问题,因为它只删除原始引用并留下重复的引用。修复它的唯一方法是返回提交并重新开始,或者手工编辑项目文件,这是一种非常好的方法,因为很难判断要删除哪些重复的文件,而且你必须在大量不同的地方进行修改。

Xcode 4让我非常失望。

这是这个问题的另一种变体。我得到了同样的消息,之前建议的解决方案都没有解决这个问题(例如,我肯定只有一个违规文件的副本)。

我的解决方案是编辑项目。在文本编辑器中删除pbxproj文件(当然是在退出XCode并备份文件之后),并删除所有对违规文件的引用。然后,再次启动XCode后,我手动将文件添加回项目中,一切正常。

(我怀疑这个问题发生在我身上是因为一个手册,即:非xcode,合并项目文件。)

在我的案例中,这个问题是由组内的目标和文件夹名称相同引起的。

只需重命名冲突的文件或文件夹即可解决问题。

这是因为你的“no.png”、“d.png”和“n.png”在资源中重复了。只需查找删除重复文件和删除。

这不是一个bug。Xcode辅助可以帮助你。在项目Navigator的左侧选择目标。点击设置底部的“验证设置”。Xcode会检查设置并删除重复项。

打开项目中的框架文件夹,确保里面只有框架。我错误地添加了整个开发者文件夹!

我找到了一个非常简单的解决方法:

  1. 从项目导航器中选择导致问题的文件
  2. 从文件检查器中取消选中目标成员
  3. 构建项目
  4. 再次检查文件的目标成员

警告不见了!检查此图像作为参考。

enter image description here

几分钟前我也遇到了同样的问题。我提到过改变“部署目标”可以解决我的问题。

如前所述,如果在项目导航器中有多个具有相同名称的文件,但位于不同的组(黄色文件夹),则可以看到此问题。在我的例子中,这是故意的,因为我有多个子目录,每个都有一个“preview.jpg”,我想复制到应用程序包:

group references

在这种情况下,你需要确保Xcode识别目录引用(蓝色文件夹图标),而不仅仅是组。

删除有问题的文件,并选择“删除引用”(这样我们就不会完全删除它们):

删除组引用

< p > < br > 通过将它们拖回项目导航器,将它们重新添加到项目中。在弹出的对话框中,选择“为任何已添加的文件夹创建文件夹引用”: < / >强

add as folder references

< p > < br > 注意,这些文件现在在项目导航器中有一个蓝色的文件夹图标: < / >强

folder references


如果您现在查看目标构建阶段的“Copy Bundle Resources”部分,您将注意到整个文件夹只有一个条目,而不是目录中包含的每个项目都有条目。编译器不会因为这些文件有多个构建命令而报错。

对我来说,目标>构建设置>包装>产品名称被设置为与我的应用程序自定义的.plist文件中引用的另一个值相同的东西。最终,由于我们的构建过程,这创建了重复的文件。

构建阶段有重复时,这种情况的另一个版本也会发生。

要解决这个问题…

  1. 转到您的项目目标
  2. 选择Build Phases
  3. 选择Headers构建阶段
  4. 输入警告中显示的名称
  5. 注意这两个(或更多)项目
  6. 在左下角找到+|-方框
  7. 选择其中一个项目,并单击-按钮

斯威夫特3:(但也包括旧版本)当我有重复的资产时,它会发生。只要用这个问题重命名文件,一切都会顺利进行。

当你创建了Assets.xcassets,并且用新名称重命名了副本时,也可能发生这种情况,因此在时间过去后,你忘记了它,并将其删除以添加文件夹引用,但这又回到了重复文件的问题。

虽然我确信有更好的方法,但核弹只花了我不到60秒的时间,而且是我能找到的唯一有效的方法。

  1. 将repo拖到垃圾桶。
  2. 重新克隆你的回购。
  3. 设置你的回购与正确的远程跟踪。git remote add <url.git>git remote set-url <url.git>

一个简单的方法是,

  • 进入App目标
  • 进入构建阶段
  • 输出文件
  • 删除输出文件的路径,然后构建项目。它将成功运行。

关键是要做pod deintegraterm *.workspace文件!真是浪费时间!

< p > React-Native用户。 Goto文件->工作空间设置->构建系统->将其更改为遗留构建系统。 现在它应该建得很好了。 React-Native与新的文件系统还不兼容

评论use_frameworks !PodFile对我很有用。

#use_frameworks!

注意:这是在XCode 10.1, pod version 1.8.4上做的

这也可能发生在你有多个xcode项目在你的工作空间中引用同一个库的情况下,即使你构建了一个依赖于单个框架的目标,工作空间也会尝试将相同的库复制到BUILD目录。

为了解决这个问题,我使用了: 选择目标,单击: →Edit Sheme enter image description here →在构建中- 取消 Find implicit dependencies enter image description here 在某些情况下,我还必须取消Parallelize Build

“产品Name"在“构建设置”中是空的。因此输出变成了.app,名称为空,引导多个产品。设置一个产品名称就可以了。