dyld:未加载库:带有iOS8的@rpath

时间:2015-01-30 20:56:06

标签: ios frameworks ios8 xcode6

我正在使用Xcode6和iOS8创建一个iOS框架。当我将其与iOS应用程序链接并尝试在设备上运行时,我收到此错误

dyld: Library not loaded: @rpath/FrameworkName.framework/FrameworkName
  Referenced from: /private/var/mobile/Containers/Bundle/Application/0F2C2461-A68B-4ABA-A604-B88E6E9D1BB1/AppName.app/AppName
  Reason: image not found

框架的“Runpath搜索路径”构建设置默认设置为

'@executable_path/Frameworks', '@loader_path/Frameworks'

我找不到任何与此相关的文档。这是Xcode6引入的新功能,我希望它只需将框架包含在任何需要它的应用程序中即可。

13 个答案:

答案 0 :(得分:67)

使这项工作

  1. 在框架项目设置中更改安装目录 '/ Library / Frameworks'到'@executable_path /../ Frameworks'

  2. 在包含此框架的项目中,添加复制文件阶段并将此框架复制到“Frameworks”文件夹。执行此操作后,请确保此框架列在“嵌入式​​二进制文件”部分下。

答案 1 :(得分:29)

使用this answer解决了问题。根据@ vladof81:

在目标常规标签中,有一个嵌入式二进制文件字段。当你添加框架时,崩溃就解决了。

Apple Developer论坛上的参考是here

答案 2 :(得分:7)

我在通过CocoaPods安装的库上遇到此错误。清理构建文件夹(cmd + option + shift + k)然后执行干净(cmd + shift + k)最终解决了这个问题。

答案 3 :(得分:4)

检查您是否可以在上下文中找到框架:

构建阶段>嵌入框架>

如果不是在项目目录的“框架”部分中添加该框架后在“嵌入框架”中添加该框架。
enter image description here

答案 4 :(得分:3)

对我而言,由于SSL问题,我已经将我的Mac(Keychain)上的开发人员,分发证书设置为我的其他项目中的“Always Trust”。我不得不将它们改回“使用系统默认值”。它对我有用!!

答案 5 :(得分:2)

如果您使用的是迦太基

在终端上运行carthage update

转到项目设置->构建阶段->迦太基复制框架

输入文件中添加行: $(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.framework

将此行添加到输出文件$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/TTTAttributedLabel.framework

答案 6 :(得分:1)

除上述解决方案外,还要重新检查

下应用程序中包含的框架的路径

构建设置 - >搜索路径 - >框架搜索路径

答案 7 :(得分:1)

我也有同样的问题,我无法启动应用程序&应用程序崩溃了以上消息:

dyld:未加载库:@ rpath / FrameworkName.framework / FrameworkName   参考自:/ private / var / mobile / Containers / Bundle / Application / xxxxxxxxxxxxxxxxxxx

原因:未找到图片

以下是帮助我解决此错误的方法:

1.请从设备中删除您的应用,清理构建并重建并在设备上运行。

2.如果以上步骤对您没有帮助,请检查以下设置:
从“TARGET”>“Build Settings”>“Runpath Search Paths”&然后检查值“$(inherited)”& “@ executable_path / Frameworks”,随意添加它们不存在。

构建您的应用并在设备上运行

答案 8 :(得分:1)

当非解决方案有效时:

  1. (可选)从here获取有关不同搜索路径类型的明确知识
  2. 确保.framework中添加了Build Settings -> Framework Search Paths个文件路径。您可以将所有框架文件保存在App/libs/中的某个位置,然后添加此文件夹并以递归方式启用。
  3. 确保.a中添加了Build Settings -> Library Search Paths个文件路径。
  4. enter image description here

答案 9 :(得分:0)

我使用Cocoapods安装了第三方库。遇到了同样的错误,尝试了一切,但终于意识到我还没有use_frameworks!在我的pod文件中。

因此删除了当前安装的库,添加了use_frameworks!在pod文件中排成一行,重新安装了库,一切都对我有用。

答案 10 :(得分:0)

使显示未加载的库从“链接的二进制文件和框架”中的“ 必需”更改为“可选”。现在可以正常使用

答案 11 :(得分:0)

我也遇到同样的问题,我无法启动该应用程序,并且应用程序崩溃并显示上述消息:

模型:库未加载:@ rpath / FrameworkName.framework / FrameworkName引用自:/ private / var / mobile / Containers / Bundle / Application / xxxxxxxxxxxxxxxxxxx

原因:找不到图片

这是我的方法,可以帮助我解决此错误:

  1. 在“常规”标签中
  

框架,库和嵌入式内容

  • 添加框架,并确保使其嵌入并签名

General Tab

  1. 从构建阶段开始
  

依赖性

  • 向其添加框架

Build Phases

答案 12 :(得分:0)

我测试的方法很好。

在“Linked Binary With Libraries”中,将缺少的框架更改为“嵌入式框架”。

因为“Do not Embedded”不会复制到应用程序中,但嵌入式框架会复制到其中。