iOS 8动态框架:未加载库

时间:2014-11-27 15:44:54

标签: ios xcode ios-frameworks

我一直在开发包含共享扩展程序的iOS 8应用程序。应用和扩展目标都使用新的iOS 8风格动态框架。昨天为了让该死的东西进入TestFlight Beta App Review(参见herehere),我对我的构建配置进行了一些更改。该商店最终接受了该应用程序的审查,但今天,当我试图在我的设备上运行时,我收到以下错误:

dyld: Library not loaded: /Users/aaron/Library/Developer/Xcode/DerivedData/VideoGrabber-gpyzpfvbijsnuyglzzvynckkuwee/Build/Products/Debug-iphoneos/MyAppKitiOS.framework/MyAppKitiOS Referenced from: /private/var/mobile/Containers/Bundle/Application/4C6CFF22-0595-4222-A515-D0D5A1696DBF/MyApp.app/MyApp Reason: image not found

在别处寻求帮助,我遇到了一些建议的解决方案:

  • 将框架添加到“常规”选项卡的“应用程序目标”的“嵌入式二进制文件”部分。完成。

  • 在App Target上的Build Settings的Runpath Search Paths部分输入“@ executable_path / Frameworks”。完成。

  • 确保“复制文件”构建阶段中有一个条目。第一步实际上是为你做的,所以...完成。

按照this otherwise-excellent piece中的建议并查看Dev Forums中提供的完全相同问题的解决方案,我完全陷入了困境。还有什么我可以尝试的吗?

1 个答案:

答案 0 :(得分:8)

我通过将已知良好的东西(Apple的Lister app)与我自己的构建设置进行比较来实现它。通过比较框架的安装路径,然后比较我的应用程序目标的搜索路径,我能够让它运行起来。总结:

  1. 在Framework Target的动态库安装名称库中,使用“@rpath”
  2. 在Framework Target的动态库安装名称中,使用“$(DYLIB_INSTALL_NAME_BASE:standardizepath)/ $(EXECUTABLE_PATH)” - 这会自动解析为您的框架名称。
  3. 在Application Target的Runpath搜索路径中,使用“@ executable_path / Frameworks”。
  4. 确保“始终搜索用户路径”设置为否。框架搜索路径也可以为空白。
  5. 如果是在午餐时间之后,给自己倒三个苏格兰威士忌。你已经获得了它。
  6. 因为早上还在,我会温柔地哭泣。