Xcode 警告:“输出文件的多个构建命令”
Posted
技术标签:
【中文标题】Xcode 警告:“输出文件的多个构建命令”【英文标题】:Xcode warning: "Multiple build commands for output file" 【发布时间】:2011-02-12 16:17:42 【问题描述】:我收到这样的错误:
[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png的多个构建命令
[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png的多个构建命令
[WARN]警告:输出文件/Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png的多个构建命令
但我检查了 Xcode,根本看不到此类文件的任何重复项。正如 Apple 邮件列表中的 this post 所说,没有重复。
【问题讨论】:
【参考方案1】:在我的情况下,构建设置中的“产品名称”为空。因此,输出变为 .app 名称为空,导致多个产品。设置产品名称,您就可以开始了。
【讨论】:
【参考方案2】:这也可能发生在您有多个 xcode 项目在工作区中引用相同库的情况下,即使您构建依赖于单个框架的目标,工作空间也会尝试将相同的库复制到 BUILD 目录.
为了解决这个问题,我使用了:
选择您的目标并单击:
-> Edit Sheme
-> 正在构建中 - UNCHECK Find implicit dependencies
在某些情况下,我还必须取消选中 Parallelize Build
【讨论】:
【参考方案3】:评论use_frameworks!在 PodFile 中为我工作。
#use_frameworks!
注意:在 XCode 10.1,pod 版本 1.8.4 上执行此操作
【讨论】:
【参考方案4】:React-Native 用户。 转到文件-> 工作区设置-> 构建系统-> 将其更改为旧版构建系统。 现在应该可以正常构建了。 React-Native 还不兼容新的文件系统。
【讨论】:
【参考方案5】:其实这个问题的答案很简单。
在您的 Xcode 项目中搜索引发警告的文件,然后删除其中一个。
Xcode 将在搜索结果中只显示该文件的一个引用,但不要停在那里,继续删除它。 (最好在删除之前备份您的项目文件)
现在再次构建项目。警告现在应该消失了。 (这个答案是针对以前版本的xcode)
【讨论】:
但是文件不再出现在 XCode 的组和文件窗格中。这有什么关系? 如果您仍然遇到此问题,只需从 Xcode 中删除所有文件(不要在磁盘上删除它们)。然后将它们全部拖回。如果之后仍然有问题,那么您实际上有一些具有相同名称的资源(可能在不同的文件夹中) - 查找并重命名/删除。 Xcode 输出进入一个平面文件夹,因此目录结构被忽略。【参考方案6】:虽然我确信有更好的方法,但使用核武器只用了不到 60 秒的时间,而且是我发现唯一可行的方法。
-
将 repo 拖到回收站。
重新克隆您的存储库。
使用正确的远程跟踪设置您的存储库。
git remote add <url.git>
,或git remote set-url <url.git>
【讨论】:
【参考方案7】:关键是做pod deintegrate
和rm *.workspace
文件!真是浪费时间!
【讨论】:
【参考方案8】:一种简单的方法是,
转到应用目标 转到构建阶段 输出文件 删除输出文件的路径,然后构建项目。它将成功运行。【讨论】:
【参考方案9】:在项目导航器中,选择您的 Xcode 项目文件。这将向您显示项目设置以及项目中的目标。查看“复制捆绑资源”构建阶段。您应该在该列表中找到有问题的文件两次。删除重复的引用。
Xcode 抱怨您试图将同一个文件与您的应用程序捆绑两次。
【讨论】:
当我从构建文件夹中删除一些资产时(使用 Finder)发生在我身上。将资产替换为使用相同名称更新的资产,并将它们拖到 XCode 中标记“添加到目标”选项。似乎 XCode 不同步复制了 Copy Bundle Resources 中的这些条目 我想为此添加一件事。如果您最终以某种方式得到大量重复引用(就像我所做的那样),您只需单击“验证设置”,它就会自动删除重复引用。比手动查找要容易得多 我遇到了类似的问题。这个答案是最接近的。Swift 3:(还有旧版本)当我有重复的资产时会发生这种情况。只需重命名此问题的文件,一切顺利。
当您创建Assets.xcassets
并且您已用新名称重命名重复项时,也可能发生这种情况,因此在一段时间后您忘记了它并将其删除以添加文件夹引用,但这又回到了重复文件问题..
【讨论】:
【参考方案11】:当 Headers 构建阶段存在重复时,可能会出现这种情况的另一种版本。
解决这个问题……
-
转到您的项目目标
选择
Build Phases
选择Headers
构建阶段
输入警告中显示的名称
注意两个(或更多)项目
在左下角找到+|-
框
选择其中一项,然后点击-
按钮
【讨论】:
【参考方案12】:对我来说,Target > Build Settings > Packaging > Product Name 设置为与我的应用程序自定义的 .plist 文件中引用的另一个值相同的值。最终由于我们的构建过程,这会创建重复文件。
【讨论】:
【参考方案13】:这不是 Xcode 错误,尽管警告消息不足以描述真正的原因。
当您的项目中有多个同名文件时,会出现此错误消息。您只需删除或重命名重复名称的文件即可解决问题。
【讨论】:
是的,这是正确的答案。当你有资源文件时,情况很容易出现,例如具有相同名称但在文件系统上的单独目录中的 png - 在构建过程中,它们都被复制到 1 个目录,即应用程序包。 @Brynjar 是否有解决方法来允许具有相同名称的图像?还是防止图像捆绑在一起? 其实我发现你可以创建文件夹引用来避免捆绑。 这是一种查找具有重复名称的文件的方法,不管目录find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort
但是,这并没有解决我的问题【参考方案14】:
如前所述,如果您在项目导航器中有多个同名但位于不同组(黄色文件夹)中的文件,则会出现此问题。就我而言,这是故意的,因为我有多个子目录,每个子目录都有一个“preview.jpg”,我想将其复制到应用程序包中:
在这种情况下,您需要确保 Xcode 识别 目录 引用(蓝色文件夹图标),而不仅仅是组。
删除有问题的文件并选择“删除参考”(这样我们就不会完全删除它们):
通过将它们拖回到项目导航器中,将它们重新添加到项目中。在出现的对话框中,选择“为任何添加的文件夹创建文件夹引用”:
请注意,文件现在在项目导航器中有一个蓝色文件夹图标:
如果您现在查看目标构建阶段的“复制捆绑资源”部分,您会注意到整个文件夹只有一个条目,而不是目录中包含的每个项目的条目。编译器不会抱怨这些文件的多个构建命令。
【讨论】:
最佳答案!它适用于 Xcode 12.2【参考方案15】:几分钟前我遇到了同样的问题。我已经提到更改“部署目标”解决了我的问题。
【讨论】:
【参考方案16】:我找到了一个非常简单的解决方案:
-
从项目导航器中选择导致问题的文件
从文件检查器中取消选中目标成员
构建项目
再次检查文件的目标成员身份
警告消失了!检查此图像以供参考。
【讨论】:
【参考方案17】:这不是错误。 Xcode 助手可以为您提供帮助。选择项目导航器左侧的目标。单击设置底部的“验证设置”。 Xcode 将检查设置并尽可能删除重复项。
【讨论】:
【参考方案18】:打开项目中的 Frameworks 文件夹,确保里面只有框架。我错误地添加了整个 Developer 文件夹!
【讨论】:
【参考方案19】:这是因为你的“no.png”“d.png”和“n.png”在资源中重复。只需寻找删除重复文件并删除即可。
【讨论】:
【参考方案20】:在我的情况下,问题是由组内目标和文件夹的相同名称引起的。
只需重命名冲突的文件或文件夹即可解决问题。
【讨论】:
这和我的差不多。我有 2 个具有相同模块名称的单独目标。【参考方案21】:关于这个问题的另一个变体。我收到了同样的消息,以前建议的解决方案都没有解决问题(例如,我肯定只有一份有问题的文件)。
我的解决方案是在文本编辑器中编辑 project.pbxproj 文件(当然是在退出 XCode 并备份文件之后)并删除对有问题文件的所有引用。然后,再次启动 XCode 后,我手动将文件添加回项目中,一切正常。
(我的怀疑是这个问题发生在我身上是因为一个手册,即:非XCode,项目文件的合并。)
【讨论】:
【参考方案22】:我很确定这可能是由 XCode 4 错误引起的,至少在我遇到的情况下是这样。
如果您同时将多个语言相关文件添加到项目中,就会发生这种情况。我通过查看 git 差异发现了这一点。我在提交中什么也没做,只是添加了一些新的本地化 nib 文件。但是回顾 project.pbxproj 文件的不同之处,它显示了为之前已经在项目中的文件添加的一堆新的重复引用。它这样做的文件对我来说也是随机的。
我多次重现了同样的行为。
从项目中删除这些文件并不能解决问题,因为它只会删除原始引用并保留重复项。修复它的唯一方法是返回提交并重新开始,或者手动编辑项目文件,这是一个非常好的方法来搞砸它,因为很难说出要删除哪些重复项,你必须这样做在很多不同的地方。
Xcode 4 让我非常失望。
【讨论】:
看起来这在 XCode 4.2 中已修复。在早期版本中,您可以通过首先将要为其添加本地化的文件放入它自己的“组”(项目中的虚拟文件夹)中来避免此错误。添加完本地化后,您可以将其放回原来的位置并删除您创建的临时组。 这不是错误。这是由于您的项目中有多个同名文件。 当你本地化一个文件时,你应该为每个本地化使用相同的文件名,除了在不同的目录中。这确实是一个错误。【参考方案23】:当您添加基于 git 的子项目时,这很容易引起。 Xcode 不够聪明,无法忽略 .git 子文件夹,即使您无法从 finder 中看到它,所以如果有多个名为“master”或“exclude”的文件(标准 git repo 文件),它会非常困惑。使用 Xcode4,转到项目(左侧树的根目录),然后单击您的应用程序目标并展开“复制捆绑资源”,然后删除对 .git 的所有引用,无论如何您都不需要将它们烘焙到您的应用程序中。
【讨论】:
我摸索了一秒钟,所以这可能对某人有所帮助:应用目标 -> 构建阶段 -> 复制捆绑资源 我的 Xcode 项目中有多个同名的文件(但在不同的目录中)。不小心我的一个在 Copy Bundle Resources 步骤中同时拥有它们,这将导致其中一个在生成的应用程序包中被覆盖。只需删除其中一个即可。【参考方案24】:当您对同一文件有多个引用时,似乎会出现该错误。 我有 2 个同名文件并收到此错误。当我删除其中一个错误消失..
【讨论】:
【参考方案25】:如果项目中有 2 个同名文件,就会发生这种情况。即使在编译项目时文件在 XCode 中的组中,所有文件最终都在同一个目录中。换句话说,如果你有 /group1/image.jpg 和 /group2/image.jpg 编译的项目将只有两个 image.jpg 文件之一。
【讨论】:
以上是关于Xcode 警告:“输出文件的多个构建命令”的主要内容,如果未能解决你的问题,请参考以下文章
在 xcode 中为新项目 React Native 100 多个问题