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

Posted

技术标签:

【中文标题】升级到 Xcode 10 后的问题:找不到构建输入文件【英文标题】:Problems after upgrading to Xcode 10: Build input file cannot be found 【发布时间】:2019-02-23 09:24:33 【问题描述】:

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

我收到此错误:

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

在我升级之前不存在,我很想恢复,但如果我能解决这个问题,我想坚持使用版本 10。

【问题讨论】:

【参考方案1】:

尝试切换回Legacy Build System (File > Project Settings > Workspace Settings > Legacy Build System)

【讨论】:

不错。但我仍然想知道以后会发生什么?我们需要修复我们的项目,但如何解决? @schmidt9 脱帽致敬,非常感谢你救了你一命。其次,我不能相信这个新的构建系统是问题所在。这几天我一直在为此苦苦挣扎。更新到 ios 12 和 XCode 10 后,自动签名被破坏。我尝试了一切,甚至撤销并重新创建了所有证书。和配置文件。签名已修复,但配置文件始终为 NONE。我可以手动签署应用程序并且它可以工作,但是发布的应用程序中缺少 iCloud 容器和其他实体元素。无论如何,解决了我的问题。天哪,苹果每次更新都让我感到沮丧。干杯! 这解决了我的自动签名和分析问题。但我仍然在使用 iCloud 容器时遇到问题。当我将应用程序直接安装到我的手机时,它工作正常。我有一个 iCloud 容器并使用 iCloud 文档从 iCloud 存储中附加文件。但是当我将应用程序发布到 TestFlight 时,它不起作用。静默失败,好像 iCloud 容器甚至不存在于分布式应用程序的配置文件中。令人难以置信的沮丧。 @Nexus 自 Apple 推出新构建系统(xcode 8 或 9)以来,此问题一直存在。抱歉没有处理 iCloud 容器,不能说可能是什么问题 @schmidt9 无论如何,谢谢,切换回旧版构建系统解决了我的自动签名问题。但我仍然坚持使用我的 iCloud 容器 T_T【参考方案2】:

对于 Swift 文件或属于项目的文件如:

Build input file cannot be found: PATH/TO/FILE/FILE.swift

当文件或文件夹在项目中被删除或移动时,可能会发生此问题。

修复它:

    进入项目导航器,选择你的项目

    选择Build Phasestab

    Compile Sources 部分,检查 Xcode 抱怨的文件

    注意文件路径错误,点击减号删除它们

    通过单击加号图标并在项目中搜索来重新添加文件。

    产品 > 清理构建文件夹

    构建

您通常会在项目树中 Xcode 的 Recovered References 文件夹中找到这些丢失的文件(在 Xcode 左下角的搜索栏中查找您的抱怨文件):

从该文件夹中删除它们也可以解决错误。

【讨论】:

有时当我从 XCode 中重命名时,'Finder' 中的文件仍然保留旧名称。在“Finder”中找到文件并将其重命名为新名称。【参考方案3】:

对我来说,在 Xcode 10 中,这个解决方案非常有效。只需转到 Recovered References 文件夹并删除所有红色文件,然后使用适当的参考再次添加。 如果未找到 Recovered References 文件夹:检查项目中所有丢失的文件(红色文件)并尝试再次添加文件引用。

【讨论】:

我在我的项目中找不到“Recovered References” 在我们删除红色文件后,“在适当的参考下再次添加”是什么意思? @PrimeTimeTran 我的意思是您可以通过拖放或复制粘贴在您的项目中再次添加这些文件引用。就像在项目中添加一个新文件一样。 @davidmlee 我认为这家伙的意思是:“打开项目中的所有文件夹,删除红色的东西,然后重新添加。”不需要有已恢复的引用文件夹。【参考方案4】:

这在 Xcode 10 中对我有用:

单击 Xcode 项目中的项目图标/名称 转到常规选项卡 单击身份部分下的[选择 info.plist 文件] 选择 info.Plist 文件 检查 Info 选项卡以查看 info.plist 是否已成功加载 构建并运行

【讨论】:

在我的情况下,我更改了项目文件夹名称,但找不到我的 info.plist。这对我有用。干杯【参考方案5】:

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

【讨论】:

是的 - 我已将 plist 移动到一个单独的文件夹中。我认为这些文件夹曾经是虚拟的,现在它们是真实的(旧的蓝色/黄色文件夹)。无论哪种方式,您的答案都是正确的:-) XCode 13 开始向我显示丢失的 Info.plist 文件的错误,结果是这样的。我必须在项目的构建设置中更新文件的位置。谢谢。【参考方案6】:

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

【讨论】:

我还删除了派生数据,但简单地关闭/重新打开可能就足够了。 我认为这是 Visual Studio 的一种修复方式……但它对我有用。 对我没用【参考方案7】:

上述解决方案最终对我有用;但是,我需要做一些额外的步骤才能最终成功编译。 (即使在 Xcode 9 上也需要这些额外的步骤。)

    Xcode:文件 -> 工作区设置 -> 构建系统:旧版构建系统 Xcode:产品 -> 清洁 通过不同的模拟器类型旋转编译,例如“iPhone 8”、“iPhone 8 Plus”等(它们可能会失败,也可能不会。) 最终在“通用 iOS 设备”上编译

【讨论】:

我也需要完成其中一些步骤才能使其正常工作。【参考方案8】:

我通过这种方式解决了这个问题:转到您项目的构建阶段(单击顶部的项目图标,然后单击构建阶段)。在那里搜索您的文件。如果它在那里(它将变灰),请将其删除。然后清理(shift + alt + command + k),然后运行!希望对您有所帮助。

【讨论】:

【参考方案9】:

如果错误提示找不到 Info.plist 并且它正在寻找错误的路径,请执行以下操作:

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

【讨论】:

如果您重命名应用文件夹/结构,此答案也适用。谢谢@keverly【参考方案10】:

这是一个架构问题。不要更改为旧版构建系统!

我遇到了同样的错误,但是为我解决了这个问题:

顶部表示 VALID_ARCHS 中的架构也被排除在 EXCLUDED ARCHS 中。我正在和他们搞混,以获得一个在 Xcode 12 中编译的 Swift 包,并为此花费了几个小时。

它将在模拟器上编译,而不是在设备上。

解决方案:

转到构建设置 确保“架构”包含 1 个条目:$(ARCHS_STANDARD) 确保“排除的架构”中没有

现在向右滚动到构建设置的底部。 确保 VALID_ARCHS 与此屏幕截图完全相同。 手臂的东西又是 $(ARCHS_STANDARD)。 如果 VALID_ARCHS 不存在,请使用 + 按钮添加。

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

【讨论】:

如何在 Xcode 12 中添加 VALID_ARCHS?我找不到任何 + 按钮来添加它 @PersianBlue 这是顶部的 + 按钮 - 不是很直观!我已在原始帖子中添加了屏幕截图。 我有带有 Apple Silicon 的 mac。如果我尝试构建应用程序,则会收到错误显示所有错误仅构建输入文件找不到:'/Users/name/Library/Developer/Xcode/DerivedData/helloapp-dhdivlzaazbnhtguhlgnkkglsibo/Build/Products/Debug-iphonesimulator/你好 App.app/你好应用程序'。有什么解决方法吗? 这应该是最佳答案!谢谢!【参考方案11】:

以上方法都不适合我,但这确实有效:

    在 Finder 中打开项目,右键单击您的 .xcodeproj 文件并显示包内容 在文本编辑器中打开 project.pbxproj 找到对丢失文件的引用 将path = "path/to/file.swift" 编辑到磁盘上的实际位置并保存文件。 重建项目

【讨论】:

【参考方案12】:

就我而言,我有一个生成 .app 二进制文件 (Buck) 的构建脚本。 Buck 构建脚本与 Swift Embed 构建步骤并行运行。因为尚未生成 .app 二进制文件,所以 Swift 步骤会失败。

在我的构建脚本中,我在"Output Files" 下添加了"$BUILD_PRODUCTS_DIR/$EXECUTABLE_PATH"

这告诉 Xcode 的新构建系统该脚本将输出应用程序二进制文件,而 Xcode 将确保同步依赖此工件的任何构建步骤。

【讨论】:

【参考方案13】:

我在重命名文件后遇到了这个错误。不知何故,Xcode 没有正确重命名磁盘上的实际文件。

所以它无法找到该文件。有时文件会以红色文本颜色突出显示。在其他时候,文件前面的 Swift 图标会出现灰色覆盖。

修复很简单。

查看错误并准确查看它无法找到的文件。 选择找不到的文件。 转到“文件检查器”。它位于 Xcode 的右侧导航窗格中。 单击文件夹图标。 选择正确的文件。 清理构建并再次运行它。

【讨论】:

【参考方案14】:

我在构建单元测试时遇到了这种情况。这可能是因为我删除了示例测试。

我删除了单元测试包,然后重新添加它,如下图所示,一切都很好。

【讨论】:

【参考方案15】:

最近升级到新的 swift 版本后,我遇到了类似的问题。 四处移动文件导致我的 xcode 项目引用项目目录中不再存在的项目,从而导致我找不到错误代码构建输入文件。

在我的情况下,我不知何故有多个文件/图像被引用,如下所述:

在上图中。

导航到您的目标页面。 然后单击顶部的构建阶段选项卡。 向下滚动以复制捆绑资源 找到受影响的文件并将其删除。 (点击删除或选择它们并点击减号按钮)

在这里,我不知何故有多个文件和图像被其他文件夹引用,构建将失败,因为他们无法再找到它们。我也找不到它们!或者 Xcode 是如何引用它们的

我希望这对其他人有帮助!

【讨论】:

【参考方案16】:

打开项目文件所在的右侧导航窗格 或者只需单击 cmd + 1。然后搜索“Recovered References”文件夹。打开它并删除所有红色文件,然后一切正常。

【讨论】:

【参考方案17】:

我有同样的问题。问题是我在 Target > Build Phases > Compile Sources 下没有任何文件。在我将至少一个文件添加到 Compile Sources 后,问题就解决了。

【讨论】:

【参考方案18】:

并不是说我做错了什么,而是我出于完全不同的原因遇到了这个问题,而且我知道是什么原因造成的。

我之前使用 finder 并将文件拖到我项目的目录/文件夹中。我没有拖入 Xcode。为了让 Xcode 将该文件包含到项目中,我不得不稍后再将它自己拖到 Xcode 中。

但是当我切换到一个没有该文件(也不需要)的新分支时,Xcode 给了我这个错误:

找不到构建输入文件: '/Users/honey/Documents/xp/xpios/powerup/Models Extensions/CGSize+Extension.swift'


我确实清理了构建文件夹并删除了我的派生数据,但直到我重新启动我的 Xcode 后它才起作用。

【讨论】:

【参考方案19】:

这对我有用

    尝试删除红色文件 删除派生数据中的文件 清理构建文件夹 然后尝试使用文件->工作区设置中的“新构建系统”进行构建

【讨论】:

【参考方案20】:

在我的情况下,XCode 提到的文件(和目录)不正确,并且在 Git 与相对较大的分支合并后开始出现问题。为了解决这个问题,我做了以下步骤:

在 XCode 的目录系统中搜索文件。 找到以红色突出显示的错误文件(即丢失)。 右键单击该文件并删除该文件。 我尝试再次构建我的代码,瞧,它成功了。

我希望这些步骤对某人有所帮助。

【讨论】:

【参考方案21】:

Xcode 抱怨的是一个 XIB 文件,我通过转到项目 -> 构建阶段 -> 复制捆绑资源,删除“有问题的”XIB,清理 (CMD+Shift+K),构建并添加它来使其工作再次回来。

【讨论】:

【参考方案22】:

还有一种可能性是,有时当您将文件移动到不同的文件夹时,尤其是当您将 info.plist 移动到其他文件夹时,您需要定义该文件的位置。要解决此问题,只需单击顶部的项目蓝色图标,您将看到一个按钮代替项目名称和捆绑包 ID,单击它并在那里找到 info.plist 文件,清理并愉快地编译。

【讨论】:

【参考方案23】:

我在升级到 Xcode 10 后不久就遇到了这个问题,但这不是问题。

我尝试更改构建系统,但这给了我一个单独的错误,这意味着同样的事情。一般说“找不到文件X”。

当找不到文件时,需要检查多项内容。

    恢复的参考文​​件夹 Apple 做了一件好事,如果它检测到对不存在的文件的引用,它会将这个引用添加到一个名为“Recovered References”的组中

这对 Apple 来说很好,但它并不总是有效。

    构建阶段编译源 在此列表中,可能存在项目假定要编译的文件的元数据,但该文件实际上并不存在,它正试图在给定路径中查找该文件。在此列表中,它将变暗,删除它们并通过切换文件的目标依赖项或手动将其删除并拖入来重新添加它们。

    文件路径 仔细检查打印出错误的文件路径和查找器中文件的文件路径。您可以通过单击 Xcode 中的文件并选中“显示文件检查器”选项卡(最左侧的选项卡)轻松看到这一点。如果这些路径是正确的,那么你很好!

    项目中未恢复的引用或红色的文件变暗 这让我很生气,因为发生的事情并不明显,但基本上如果你进入 finder 并将文件移动到不同的位置而不更新项目中的引用,它会抛出错误,因为文件不再存在。我发现的唯一迹象是“项目导航器”选项卡(最左侧的选项卡)中的文件非常暗淡,但是当您删除此文件时,Xcode 不会提示您删除引用或发送到垃圾。您可以通过删除文件并将其重新添加到项目中或转到“文件检查器”选项卡并单击路径旁边的文件夹图标并将其更改为正确的位置来解决此问题。

无论哪种方式,错误都表明它找不到文件,切换到旧的构建系统是针对更具体问题的创可贴。作为开发人员,我们知道编译器只希望将工件列在文件路径的末尾。某处路径不正确!我们必须找到那个地方!

上面列出的第 4 项解决了我的问题。希望这对某人有所帮助。

【讨论】:

【参考方案24】:

就我而言,我不小心删除了我在应用中使用的一个第三方 xcodeproj 文件夹。

【讨论】:

【参考方案25】:

如果您尝试分析,然后它不起作用,现在您无法构建,请进入您的目标窗格(通过项目图标),切换到构建设置选项卡,搜索 PROFILE - 并将 CLANG_USE_OPTIMIZATION_PROFILE 设置为“没有”。

【讨论】:

【参考方案26】:

在我的例子中,我创建了一个新的测试目标并删除了默认的 swift 文件,所以它只剩下info.plist。添加一个新文件解决了这个问题。

【讨论】:

【参考方案27】:

“旧版构建系统”解决方案对我不起作用。它的工作原理是:

    清理项目并删除“DerivedData”。 从项目中删除未找到的输入文件(仅引用,不要删除文件)。 构建(=> 将生成与丢失文件相关的错误)。 再次将文件添加到项目中。 构建(=> 应该成功)。

【讨论】:

【参考方案28】:

我知道这是一个老话题,但我发现了 xcode 12.3 的问题,并且与在编译期间执行 main.Storyboard 的 CopyPlist 时出现错误有关。

实际上,将构建设置更改为“旧版构建设置”是可行的,但它已被弃用,所以我放弃了它,因为它是一个短期解决方案。

检查一下:

使用该设置,对我有用。在我有“复制 plist”之前。

【讨论】:

【参考方案29】:

我删除了一个 Pod 文件夹以修复错误。如果您使用的是可可豆荚,请运行:

    pod 解体 pod 安装

这应该重建您的 pod 和其中的所有文件。

【讨论】:

【参考方案30】:

随机,对于 Cocoapods:我没有将我的测试目标添加到我的 Podfile。

【讨论】:

以上是关于升级到 Xcode 10 后的问题:找不到构建输入文件的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 打包上线 iTunes Connect 找不到构建版本

升级到 Xcode 12 后的词法或预处理器问题

Xcode 8 打包上线 iTunes Connect 找不到构建版本

XCode 4.3 找不到要运行的构建应用程序

xcode7.3 升级 xcode8.0 后权限设置问题(升级xcode 8.0 后构建版本不显示问题)

升级到 xcode 6 后,找不到 OpenGLES/gltypes.h