36

我正在开发一个现有的 iOS 应用程序,我必须为这个项目编写单元测试用例。它正在模拟器 6.0 中构建和运行。每当我尝试测试项目时,它都会显示下面的错误消息。我无法弄清楚确切的错误。

id: file not found: /Users/Yuva/Library/Developer/Xcode/DerivedData/FlyApp-aexukpgtbathuadgxlnm/Build/Products/Debug-iphonesimulator/FlyApp.app/FlyApp
clag: error: linker command failed with exit code 1 (use -v to see invocation)

你能帮我解决这个链接器错误并测试应用程序吗?

4

10 回答 10

90

解决步骤:

  1. 创建具有不同名称的新方案
  2. 删除旧方案

  3. 添加新方案

问题出在哪里:

我更改了产品名称并禁用了快照选项。然后,突然,这个错误弹出:

ld: file not found:.././previousproductname.app/previousproductname

我未能成功调试的步骤:

  1. 删除派生数据,重新启动 Xcode。- 没有解决。

  2. 遵循以下步骤:链接http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/ - 相同的错误;没有解决。

  3. 最后,我更改了方案名称,删除了旧方案并添加了新方案,解决了我的问题。

于 2014-10-12T15:14:16.083 回答
35

我遇到了同样的错误信息。原来我已经重命名了我的应用程序目标,并且没有将测试目标、构建设置、捆绑加载器设置更新为我的新应用程序名称。

可以在使用 Xcode 4 将单元测试添加到现有 iOS 项目中找到有关此设置的更多详细信息。我查看了相同的步骤,它帮助我在 Xcode 5 中修复了我的项目。

于 2013-11-07T15:47:25.350 回答
21

您必须更改了产品名称。由于您的工作区名称和产品(应用程序)名称不匹配,会发生此错误。

您只需在 ProjectName-Tests 目标的 TEST HOST Build 设置中将工作区名称替换为产品(应用程序)名称,如图所示。为了赶上这一点,选择 ProjectName-Tests 目标,选择 Build Settings,搜索 Test Host 术语。

在此处输入图像描述

这是此错误的标准配置解决方案。

干杯!!

于 2015-05-28T12:16:55.267 回答
18

删除您的方案然后重新创建它(单击新图标或使用 xcode 的自动创建)。这个对我有用。

于 2014-10-31T02:41:34.260 回答
6

在 xcode 6 上,您需要:

  1. 转到产品文件夹
  2. 点击文件 .xctext
  3. 在“目标”上选择测试
  4. 并在主机应用程序上选择您的应用程序。
  5. 单击构建应用程序。

为我工作!

于 2015-09-22T07:33:12.107 回答
1

啊!这是我的 XCode 8.2 突然出现的一个非常令人沮丧的问题

在我的情况下,它归结为从方案中删除我的测试目标,构建并运行主应用程序,然后将测试目标读取到“测试”部分。

似乎测试目标试图在尚未构建的派生数据中找到它想要的东西。在不尝试构建测试的情况下运行应用程序也可以准备以前丢失的派生数据。

...Insanity 在 XCode 中做同样的事情两次并期待同样的结果:|

于 2017-01-23T23:50:44.420 回答
0

您的链接器正在以下位置查找文件:/Users/Yuva/Library/Developer/Xcode/DerivedData/FlyApp-aexukpgtbathuadgxlnm/Build/Products/Debug-iphonesimulator/FlyApp.app/FlyApp

您是否按照路径确定文件是否存在?请注意,FlyApp.app 可能是一个包,如果您从 Finder 中查看,则必须“查看包内容”。如果它不存在,要么 1)您需要先构建 FlyApp.app,或者 2)您的测试代码中有一些东西取决于它是否存在,这无法从您的问题中确定。

于 2013-04-11T15:46:14.410 回答
0

答案在于您的 Build Settings > Library Search Paths 条目。确保那里没有列出完全限定的路径。用 $SRCROOT 成语装饰它们,并用双引号将路径括起来。如果有任何转义反斜杠,请确保也将其删除。

做一个清洁然后构建,你应该重新开始工作。这似乎是 Xcode 5.x 的问题

于 2013-11-01T04:39:24.577 回答
0

创建一个新方案。捆绑包 id / 目标名称 / 可执行文件 / 项目名称等都是略有不同的概念。如果您更改一个(如我所做的那样),旧方案可能仍设置为查找旧值作为可执行文件的名称,而构建过程可能已更新为不再构建该可执行文件。

于 2015-08-13T15:30:22.060 回答
-2

在 Xcode 11 中选择产品 -> 方案 -> 新方案

这对我有用。 图片

于 2019-12-11T11:21:41.407 回答