Xcode删除"DerivedData"后不会添加"Embedded binary"

Xcode won't add "Embedded binary" after deleting "DerivedData"

辅助搜索的替代标题:

概览

中删除“DerivedData”文件夹(或执行“产品 > 清理”)后,我无法将另一个项目的 CocoaTouch 框架添加到“嵌入式二进制文件”部分(在“常规”选项卡下)。

或者,Xcode 遇到一个 linker 错误,因为它找不到以前可以找到的框架。

其他症状

单击“嵌入式二进制文件”下的 + 会显示框架选择器,但在工作区的不同项目中选择一个框架不会执行任何操作。

这是我发现的恢复嵌入式二进制文件的唯一方法,如果您发现不需要某些步骤,请发表评论。

先决条件: 阅读

  1. 从工作区中删除所有框架项目
  2. 执行 "clean build" and/or 删除 "DerivedData"
  3. 将项目添加回工作区
  4. 构建项目(可能是可选的)
  5. 在应用程序目标的常规选项卡中,单击 "Linked Frameworks and Libraries"、select 框架下的 +。
  6. 在模拟器中构建和 运行(构建或 运行ning 应该没有问题)
  7. 为设备构建和运行(这可能会由于框架未正确链接而导致崩溃,请忽略此崩溃)
  8. 单击"Embedded Binaries"、select框架下的+号。这应该将它添加到项目中("Linked Frameworks and Libraries" 下可能重复)
  9. 对所有必需的框架重复
  10. 一旦构建并 运行ning(在设备上)得到确认,您可以在项目导航器或目标常规选项卡中删除任何重复的(and/or 红色)框架

当您将框架添加到 嵌入式二进制文件 时,将会为您的项目添加一个引用。如果您在上述步骤后 select 该引用,您可能会发现它有一个对框架的 绝对路径 引用,而不是我们想要的相对路径。将位置更改为 Relative to Build Products,并且如果执行 "hard" 清理或使​​用另一台计算机等,应该始终可以发现引用

我有 made a video 描述了如何最好地将一个项目的构建框架添加到另一个同级项目的应用程序目标。

补充一下@Daniel 的回答,如果您的“位置”下拉菜单显示为灰色,您可能select输入了错误的文件。确保 select 应用项目中的框架(不是框架项目)。