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

dyld: Library not loaded: @rpath with iOS8

我正在用xcode6和ios8创建iOS框架。当我将此链接到iOS应用程序并尝试在设备上运行时,我会收到此错误

1
2
3
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

框架的"运行路径搜索路径"生成设置默认设置为

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

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


为了让这个工作

  • 在框架项目设置中,将安装目录从"/library/frameworks"到"@executableu path/../frameworks"

  • 在包含此框架的项目中,添加复制文件阶段并将此框架复制到"frameworks"文件夹。一旦你这样做了,确保这个框架列在"嵌入的二进制文件"部分下面。


  • 使用此答案解决了问题。根据@vladof81:

    在目标的"常规"选项卡中,有一个嵌入的二进制文件字段。当您在其中添加框架时,崩溃将得到解决。

    参考资料在苹果开发者论坛上。


    我在通过cocoapods安装的库中得到这个错误。清理build文件夹(cmd + option + shift + k)然后执行clean(cmd + shift + k操作),最终解决了这个问题。


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

    构建阶段>嵌入框架>

    如果不只是在项目目录的"框架"部分添加框架之后,在"嵌入框架"中添加框架。enter image description here


    对我来说,这是因为SSL的问题,我已经将我的开发人员、Mac(keychain)上的分发证书设置为"始终信任"我的另一个项目。我不得不把它们改回"使用系统默认值"。那时候对我有用!!


    如果你用的是迦太基

    在终端上运行carthage update

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

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

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


    当这些解决方案不起作用时:

  • (可选)从这里获得关于不同搜索路径类型的清晰知识
  • 确保您的.framework文件路径已添加到Build Settings -> Framework Search Paths中。您可以将所有框架文件保存在App/libs/中的某个位置,然后添加此文件夹并递归启用。
  • 确保您的.a文件路径已添加到Build Settings -> Library Search Paths中。
  • enter image description here


    除上述解决方案外,请重新检查应用程序中包含的框架路径

    生成设置——>搜索路径——>框架搜索路径


    使显示未加载的库在链接的二进制文件和框架中从必需更改为可选。它现在工作得很好


    我用cocoapod安装了第三方库。同样的错误,尝试了所有的方法,但最终意识到我没有使用框架!在我的POD文件中。

    所以删除了当前安装的库,添加了使用框架!行在pod文件,重新安装库,所有工作为我。


    我也遇到了同样的问题,我无法启动应用程序,应用程序崩溃,上面的消息:

    未加载dyld:library:@rpath/frameworkname.framework/frameworkname引用自:/private/var/mobile/containers/bundle/application/XXXXXXXXXXXXXXXXX

    原因:找不到图像

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

    1.请从设备中删除您的应用程序,清理生成并重新生成,然后在设备上运行。

    2.如果上述步骤对您没有帮助,请检查以下设置:从"target">"build settings">"runpath search path"&;然后检查值"$(inherited)"&;"@executable_path/frameworks",如果它们不存在,请随意添加。

    构建应用程序并在设备上运行