dyld:库未加载 cocoapods 0.37 和 Xcode 6.3

dyld: Library not loaded with cocoapods 0.37 and Xcode 6.3

我一直在阅读有关该错误的所有问题:

dyld: Library not loaded: @rpath/Bolts.framework/Bolts Referenced from: /private/var/mobile/Containers/Bundle/Application/1542F906-CCE1-4181-AC7C-B5E3EE50E7D7/eBikeMotion.app/eBikeMotion Reason: no suitable image found. Did find:

这使得我的应用程序无法在真实设备中 运行(但在模拟器中 运行 没有任何问题。 直到某个时候,我认为这是我正在安装的框架的问题,但是在手动安装了抛出错误的原始框架 Alamofire 之后,下一个抛出错误的框架是按字母顺序排列的下一个框架(螺栓,如你可以在代码片段中看到) 所以我得出的结论是确实是 CocoaPods 产生了这些错误。我有最新版本 (0.37) 的全新安装,我尝试创建一个新项目,我已经尝试了所有针对此问题的建议解决方案,但没有任何运气,所以我必须打开一个问题,与希望有人能帮助我。

此致。

在重新安装整个系统但未找到解决方案后,我发现 CocoaPods 必须 运行 正确执行的某些构建阶段缺失。

此问题的解决方案用于后续步骤:

  1. 分解cocoapods项目(可以用sudo gem install cocoapods-deintegrate安装工具)。

cocoapods-deintegrate on Github

  1. 修改您的 Podfile:

    您应该定义目标链接 link_with 'ProjectName'

    您应该为您的 pods 定义目标:target 'ProjectName' do [pods here] end.

  2. 使用 pod install

  3. 安装
  4. 完成此操作后,转到 XCode 并检查以下设置:

    进入项目设置,在 "Configurations" 下检查在调试和发布中你有一个名为 Pods-ProjectName.[debug|release]

    的配置集

    进入你的目标,在 "Build Phases" 下你应该有三个新的阶段,它们应该被命名为:Check Pods ManifestEmbed Pods FrameworksCopy Pods Resources.

  5. 清理,然后构建,然后 运行 到您的设备中。

就是这样。

就我而言,我遵循了@Jorge 的上述回答,但并没有解决问题。确切的错误有点不同,因为丢失的文件是 @rpath Pods.framework/Pods。我终于在 CocoaPods 问题 #3586 的帮助下解决了这个问题:

转到目标 > 常规 > 链接的框架和库部分 将 Pods.framework 和 Pods_target.framework 都设置为 Optional

仍在尝试找出确切原因....这个答案有一些信息:what-does-it-mean-to-weak-link-a-framework

将 pods 添加到 WatchKit 扩展时遇到同样的问题。将主要目标与 Watch 应用程序关联起来根本不是最佳选择。发现 cocoapod 0.37.2 没有将 'Embed Pods Frameworks' 脚本添加到构建阶段。

脚本: "${SRCROOT}/Pods/Target Support Files/Pods-ExtensionName/Pods-ExtensionName-frameworks.sh"

我必须解决两个问题:

  1. 前往每个目标然后 Build Phases 然后 Link Binary With Libraries 和 select Pods.framework。将其设置为 Optional.

  2. Cocoapods 没有为我的第二个目标创建所需的 运行 脚本。我的第一个目标有所有脚本。第二个没有。所以我将所有缺少的 运行 脚本从第一个目标复制到第二个目标。您需要点击左上角的小“+”号,添加一个 运行 脚本并粘贴来自其他目标的脚本。我已经为 Check Pods Manifest.lockCopy Pods ResourcesEmbed Pods Frameworks.

  3. 做到了

然后它在设备上做了 运行。终于。

为了让 cocoapods 生成构建阶段检查 Pods 清单、嵌入 Pods 框架和复制 Pods 资源:

1 - 转到构建阶段并删除所有自定义修改。我不得不删除 Link Binary With Libraries 阶段下的所有内容。

2 - 分解 pod(或者自己删除文件)

3 - 运行 新 pod 安装

这对我有用。没有第一步,它永远不会。

要解决此问题,您需要更改 Link 二进制文件中的状态,其中 pod_projectName.framework 和 Bolt.framework

的库处于构建阶段

我在我的项目中遇到了同样的错误。

get error in CommonCrypto.framework

Resolved error by changing Required to Optional

最简单的方法是确保您的 Protobuf.framework 是构建步骤中目标方案的依赖项。

这告诉 Xcode 在构建目标时编译由您的 pod install/update 创建的 Protobuf.framework。