iOS 8动态框架:未加载库

Aar*_*egh 10 xcode ios ios-frameworks

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

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".完成.

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

遵循这篇优秀作品中的建议并查看开发论坛中提供的完全相同问题的解决方案,我完全陷入困境.还有什么我可以尝试的吗?

Aar*_*egh 8

我通过将已知良好的(Apple的Lister应用程序)与我自己的Build Settings进行比较来实现它.通过比较框架的安装路径,然后比较我的应用程序目标的搜索路径,我能够让它运行起来.综上所述:

  1. 在Framework Target的动态库安装名称库中,使用"@rpath"
  2. 在Framework Target的动态库安装名称中,使用"$(DYLIB_INSTALL_NAME_BASE:standardizepath)/ $(EXECUTABLE_PATH)" - 这会自动解析为框架的名称.
  3. 在Application Target的Runpath搜索路径中,使用"@ executable_path/Frameworks".
  4. 确保"始终搜索用户路径"设置为否.框架搜索路径也可以为空白.
  5. 如果是在午餐时间之后,倒入三个苏格兰威士忌的手指.这是你应得的.

既然早上还在,我会温柔地哭泣.

  • 您应该使用“复制框架”构建阶段而不是“复制文件”构建阶段。 (2认同)