升级到Xcode 10后出现的问题:找不到构建输入文件。

164

昨晚我将我的Xcode SDK升级到10版本,现在发现我无法构建。

我收到以下错误消息:

找不到构建输入文件: '/Users/call01/Library/Developer/Xcode/DerivedData/Comp-Lite-Apps-gytvmossqptokeafrddvvmnlzadk/Build/Products/Debug-iphoneos/SG11.app/SG11'

这个文件在我升级前不存在,我想回退,但希望解决这个问题并保留版本10。

32个回答

162

尝试切换回 传统构建系统 (文件 > 项目设置 > 工作区设置 > 传统构建系统)


2
不错。但我仍然想知道接下来会发生什么?我们需要修复我们的项目,但是怎么做呢? - Teddy
3
@schmidt9,我非常感谢你,你是我的救命恩人。其次,我简直无法相信这个新的构建系统竟然是问题所在。我已经为此苦苦挣扎了数天。在升级到iOS 12和XCode 10后,自动签名就崩溃了。我尝试了各种方法,甚至吊销和重新创建了所有证书和配置文件,签名问题得到了解决,但配置文件始终是NONE。我可以手动签名应用程序,它可以工作,但是发布的应用程序缺少iCloud容器和其他实体元素。总之,我解决了我的问题。天哪,每次更新都会让我对苹果感到沮丧。干杯! - Nexus
这解决了我自动签名和配置文件的问题,但iCloud容器还是有问题。当我直接将应用程序安装到手机上时,它可以正常工作。我有一个iCloud容器,并使用iCloud文档从iCloud存储附加文件。但是当我发布应用程序到TestFlight时,它无法工作。默默地失败,好像分发的应用程序配置文件中甚至没有iCloud容器存在。非常令人沮丧。 - Nexus
1
@Nexus,自从苹果推出新的构建系统(Xcode 8或9)以来,这个问题一直存在。很抱歉我没有处理iCloud容器,无法确定那里可能出现的问题。 - schmidt9
对我没用。对我有用的是:
  1. 清理项目并删除“DerivedData”文件夹。2. 从项目中删除未找到的输入文件(仅引用而不删除)。3. 构建。4. 再次添加文件。5. 构建。
- Ricardo Barroso
显示剩余5条评论

156
针对Swift文件或项目中的文件,例如: Build input file cannot be found: PATH/TO/FILE/FILE.swift 当项目中的文件或文件夹被移除或移动时可能会遇到此问题。
解决方法如下:
  1. 进入项目导航器,选择您的项目
  2. 选择 Build Phases 选项卡
  3. Compile Sources 部分,检查 Xcode 所报告的文件
  4. 注意到文件具有错误路径,并通过单击减号图标删除它们
  5. 点击加号图标重新添加文件,并在项目中搜索
  6. 选择Product > Clean Build Folder
  7. 进行构建
通常,您可以在Xcode项目树中的Recovered References 文件夹中找到这些丢失的文件(在Xcode底部左侧查找搜索栏并搜索您想要解决的文件):
从该文件夹中删除文件也可以解决错误。

有时,当我在XCode内部重命名文件时,在“Finder”中的文件仍然保留旧名称。请在“Finder”中找到该文件并将其重命名为新名称。 - Tony

81
在Xcode 10中,对我来说这个解决方案非常有效。只需进入“Recovered References”文件夹,删除所有红色文件,并使用正确的引用重新添加它们即可。 如果找不到“Recovered References”文件夹:检查项目中所有缺失的文件(红色文件),并尝试重新添加文件引用。

enter image description here


21
我找不到我项目中的“Recovered References”。 - david m lee
5
在我们删除了红色文件之后,你所说的“使用适当的参考再次添加它”的意思是什么? - PrimeTimeTran
@PrimeTimeTran 我的意思是您可以通过拖放或复制粘贴的方式将这些文件引用再次添加到您的项目中,就像添加新文件一样。 - Krishna Kumar Thakur
3
@davidmlee,我觉得这个人的意思换一种说法就是:“打开项目中的所有文件夹,删除红色的内容,然后重新添加进去。” 不需要创建一个已恢复引用文件夹。 - bearacuda13

30

只需检查目标的构建设置中的.plist文件路径

输入图片描述


1
是的 - 我已经将 plist 文件移动到一个单独的文件夹中。我认为这些文件夹以前是虚拟的,现在它们是真实存在的(旧的蓝色/黄色文件夹)。无论如何,你的答案非常准确 :-) - Peter
1
XCode 13 开始显示缺少 Info.plist 文件的错误,结果是这样的。我必须在项目的构建设置中更新文件的位置。谢谢。 - damianmr
这是唯一对我有效的解决方案。非常感谢。 - undefined

27

有趣的是,关闭Xcode并重新打开它也可能足够。


1
我也删除了派生数据,但简单地关闭/重新打开可能已经足够了。 - Adam Johns
我以为这是 Visual Studio 修复问题的方式...但它对我起作用了。 - SEG.Veenstra
没有一种方法适用于我。 - dokind
只有在苹果工作的人才觉得好笑。 - Steve Moretz

25

以下方法适用于Xcode 10:

  • 在你的Xcode项目中点击项目图标/名称
  • 进入“General”选项卡
  • 在“Identity”部分下点击“[选择info.plist文件]”
  • 选择info.Plist文件
  • 检查“Info”选项卡,确保info.plist已成功加载
  • 编译并运行

1
在我的情况下,我更改了项目文件夹的名称,导致找不到我的info.plist文件。这对我起作用了。干杯! - Ivan Lopes

22

这是一个架构问题。不要改变到传统的构建系统!

我也遇到了同样的错误,但解决方法是这样的:

你看到了吗?

顶部显示的是在VALID_ARCHS中的架构也被排除在EXCLUDED ARCHS之外。我对它们进行了调整以使Swift Package能够在Xcode 12中编译,花费了数小时的时间。

它可以在模拟器上编译而无法在设备上编译。

解决方案:

  • 转到“Build Settings”
  • 确保“Architectures”包含1个条目:$(ARCHS_STANDARD)
  • 确保“Excluded Architectures”中没有任何内容

Build Settings

  • 现在滚动到Build设置的底部。
  • 确保VALID_ARCHS与此截图完全相同。
  • arm的东西再次是$(ARCHS_STANDARD)
  • 如果VALID_ARCHS不存在,请使用+按钮添加它。

VALID_ARCHS的添加按钮

VALID_ARCHS

  • 清理 (cmd-shift-K)
  • 现在你的项目应该可以完美地在模拟器和设备上构建了!
  • 如果不起作用,您需要确保您的目标构建设置和项目构建设置中所有这些设置都是相同的。
  • 请注意,如果您有一台带有苹果芯片的 Mac,则可能不需要执行任何此操作。

如何在Xcode 12中添加VALID_ARCHS?我找不到任何+按钮来添加它。 - Khadija Daruwala
@PersianBlue,它在顶部的“+”按钮 - 不是很直观!我已经在原帖中添加了截图。 - derbs
1
我有一台搭载苹果芯片的 Mac。如果我尝试构建应用程序,会出现以下错误: 仅显示所有错误 无法找到构建输入文件:'/Users/name/Library/Developer/Xcode/DerivedData/helloapp-dhdivlzaazbnhtguhlgnkkglsibo/Build/Products/Debug-iphonesimulator/Hello App.app/Hello App'。是否有任何解决方法? - sejn
这应该是最佳答案!谢谢! - Jim Holland
我之前将arm64添加到模拟器的排除架构中,因为否则它在M1上无法工作,但现在看来这似乎是同时适用于模拟器和设备的解决方案。谢谢! - Aleksi Sjöberg
请确保“排除的架构”中没有任何内容 - 已解决。谢谢! - Volodymyr Kulyk

15

对我来说,以上解决方案最终有效;但是,我需要做更多额外的步骤才能最终成功编译。(即使在 Xcode 9上也需要执行这些额外的步骤。)

  1. Xcode:文件 -> 工作区设置 -> 构建系统:传统构建系统
  2. Xcode:产品 -> 清理
  3. 通过不同的模拟器类型进行编译,例如“iPhone 8”,“iPhone 8 Plus”等。(它们可能会失败或可能不会。)
  4. 最终在“通用 iOS 设备”上编译

我也需要经历一些步骤才能使其正常工作。 - Liwen Zhao

14

我通过以下方式解决了这个问题:前往你的项目“构建阶段”(点击顶部的项目图标,然后点击“Build Phases”)。在那里搜索你的文件。如果它在那里(会被变灰),则删除它。然后清理(shift + alt + command + k)并运行!希望有所帮助。


11

如果错误提示找不到Info.plist文件,而且是在错误的路径中查找,请按照以下步骤操作:

  1. 从导航器中选择您的项目,然后选择您的目标
  2. 选择“构建设置”,搜索“plist”
  3. 应该有一个名为Info.plist File的选项。将位置更改为正确的位置。

如果您重命名了应用程序文件夹/结构,则此答案也适用。感谢@keverly。 - XY Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接