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 必须 运行 正确执行的某些构建阶段缺失。
此问题的解决方案用于后续步骤:
- 分解cocoapods项目(可以用
sudo gem install cocoapods-deintegrate
安装工具)。
cocoapods-deintegrate on Github
修改您的 Podfile:
您应该定义目标链接 link_with 'ProjectName'
。
您应该为您的 pods 定义目标:target 'ProjectName' do
[pods here] end
.
使用 pod install
安装
完成此操作后,转到 XCode 并检查以下设置:
进入项目设置,在 "Configurations" 下检查在调试和发布中你有一个名为 Pods-ProjectName.[debug|release]
的配置集
进入你的目标,在 "Build Phases" 下你应该有三个新的阶段,它们应该被命名为:Check Pods Manifest
、Embed Pods Frameworks
和 Copy Pods Resources
.
清理,然后构建,然后 运行 到您的设备中。
就是这样。
就我而言,我遵循了@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"
我必须解决两个问题:
前往每个目标然后 Build Phases
然后 Link Binary With Libraries
和 select Pods.framework
。将其设置为 Optional
.
Cocoapods 没有为我的第二个目标创建所需的 运行 脚本。我的第一个目标有所有脚本。第二个没有。所以我将所有缺少的 运行 脚本从第一个目标复制到第二个目标。您需要点击左上角的小“+”号,添加一个 运行 脚本并粘贴来自其他目标的脚本。我已经为 Check Pods Manifest.lock
、Copy Pods Resources
和 Embed Pods Frameworks
.
做到了
然后它在设备上做了 运行。终于。
为了让 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。
我一直在阅读有关该错误的所有问题:
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 必须 运行 正确执行的某些构建阶段缺失。
此问题的解决方案用于后续步骤:
- 分解cocoapods项目(可以用
sudo gem install cocoapods-deintegrate
安装工具)。
cocoapods-deintegrate on Github
修改您的 Podfile:
您应该定义目标链接
link_with 'ProjectName'
。您应该为您的 pods 定义目标:
target 'ProjectName' do
[pods here]end
.使用
pod install
安装
完成此操作后,转到 XCode 并检查以下设置:
进入项目设置,在 "Configurations" 下检查在调试和发布中你有一个名为
的配置集Pods-ProjectName.[debug|release]
进入你的目标,在 "Build Phases" 下你应该有三个新的阶段,它们应该被命名为:
Check Pods Manifest
、Embed Pods Frameworks
和Copy Pods Resources
.清理,然后构建,然后 运行 到您的设备中。
就是这样。
就我而言,我遵循了@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"
我必须解决两个问题:
前往每个目标然后
Build Phases
然后Link Binary With Libraries
和 selectPods.framework
。将其设置为Optional
.Cocoapods 没有为我的第二个目标创建所需的 运行 脚本。我的第一个目标有所有脚本。第二个没有。所以我将所有缺少的 运行 脚本从第一个目标复制到第二个目标。您需要点击左上角的小“+”号,添加一个 运行 脚本并粘贴来自其他目标的脚本。我已经为
Check Pods Manifest.lock
、Copy Pods Resources
和Embed Pods Frameworks
. 做到了
然后它在设备上做了 运行。终于。
为了让 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。