【问题标题】:dyld: Library not loaded with cocoapods 0.37 and Xcode 6.3dyld:库未加载 cocoapods 0.37 和 Xcode 6.3
【发布时间】:2018-11-07 16:57:39
【问题描述】:

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

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 之后,下一个引发错误的框架是按字母顺序排列的下一个框架(螺栓,如你可以在代码sn-p中看到) 所以我得出的结论是确实是 CocoaPods 产生了这些错误。我有一个全新安装的最新版本(0.37),我试图创建一个新项目,我已经尝试了所有针对这个问题提出的解决方案,但没有任何运气,所以我必须打开一个问题,使用希望有人可以帮助我。

问候。

【问题讨论】:

  • 你有什么解决办法吗?
  • 试试我在@neoD1下面发布的解决方案
  • 是的,我现在就试着让你

标签: ios xcode6 cocoapods


【解决方案1】:

在重新安装整个系统并没有找到解决方案后,我发现缺少一些强制 CocoaPods 正常运行的构建阶段。

这个问题的解决方案是接下来的步骤:

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

cocoapods-deintegrate on Github

  1. 修改你的 Podfile:

    您应该使用link_with 'ProjectName' 定义您的目标链接。

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

  2. 使用pod install进行安装

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

    进入项目设置,在“配置”下检查调试和发布中是否有一个名为 Pods-ProjectName.[debug|release] 的配置集

    在您的目标中,在“构建阶段”下,您应该有三个应该命名的新阶段:Check Pods ManifestEmbed Pods FrameworksCopy Pods Resources

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

就是这样。

【讨论】:

  • link_with 不再受支持:C
【解决方案2】:

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

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

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

【讨论】:

  • 在 Xcode 7beta3 及更高版本中,Enable Bitcode 选项默认设置为 true。然后您仍然会收到警告-weak_framework is treated as -framework when ENABLE_BITCODE=YES,换句话说,将框架标记为可选被忽略,因此在设备上运行仍然失败。目前我已经禁用了 Bitcode,但以后会出现问题。
  • 一小时后,这是唯一对我有帮助的解决方案!谢谢@suz
  • 这让我更进一步——可执行文件启动——但在它实际想要使用框架时失败并显示dyld: lazy symbol binding failed
  • 我试过这个,但我仍然收到错误。尤其是 GTMSessionFetcher
【解决方案3】:

我必须解决两个问题:

  1. 转到每个目标然后Build Phases 然后Link Binary With Libraries 并选择Pods.framework。将其设置为Optional

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

然后它确实在设备上运行了。最后。

【讨论】:

  • 0.38.2 版也有同样的问题。似乎它仍然是一个问题......在我的情况下,它没有为我的两个目标创建 Embed Pods Frameworks 脚本。
  • 在这上面花了将近一天的时间,而我缺少的一件事是 Embed Pods Frameworks 脚本。你在睡觉前拯救了我的一天
【解决方案4】:

将 pod 添加到 WatchKit Extension 时遇到同样的问题。将主要目标与 Watch 应用程序链接根本不是最佳选择。发现 cocoapod 0.37.2 没有在构建阶段添加“Embed Pods Frameworks”脚本。

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

【讨论】:

    【解决方案5】:

    为了让 cocoapods 生成构建阶段,请检查 Pods Manifest、Embed Pods Frameworks 和 Copy Pods Resources:

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

    2 - 对 pod 进行解集成(或者自己删除文件)

    3 - 运行新的 pod 安装

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

    【讨论】:

      【解决方案6】:

      要解决此问题,您需要在 pod_projectName.framework 和 Bolt.framework 的构建阶段更改 Link Binary with Libraries 中的状态

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

      get error in CommonCrypto.framework

      Resolved error by changing Required to Optional

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-23
          • 2017-04-09
          • 2018-11-07
          • 1970-01-01
          • 1970-01-01
          • 2023-03-03
          相关资源
          最近更新 更多