dyld:图书馆没有加载框架内的框架

我想embedded一个框架,正在使用另一个框架,这在模拟器中工作得很好,但它在iOS设备上崩溃:

dyld:Library未加载:@ rpath / FrameworkB.framework / FrameworkB引用自:/private/var/mobile/Containers/Bundle/Application/B072CD7C-8595-4AE4-A506-26832A0F4402/FrameworkTest.app/Frameworks/FrameworkA.framework/ FrameworkA原因:找不到图片

这是我在Xcode中的结构:

  • FrameworkTest.xcodeproj(应用程序项目)
    • FrameworkA.xcodeproj(cocoa触摸框架)
      • FrameworkB.xcodeproj(cocoa触摸框架)

应用程序(FrameworkTest)使用FrameworkA(embedded在FrameworkTest应用程序中)的一个类AA使用FrameworkB中的类B (它在FrameworkA中链接)。

这在模拟器中工作得很好,但在设备上不起作用。

这个结构看起来可能有点奇怪,但是当我开发应用程序时,我正在开发框架,这就是为什么我要在我的应用程序项目中添加框架项目的原因。

我已经上传了GitHub上的项目给你看,如果你需要仔细看看。 (类A在AppDelegate.m文件中被调用)

为什么这是在iOS模拟器,而不是在设备上工作? 我怎样才能使它在设备上工作?

编辑:

正如simonthumperbuild议在评论中,我也尝试添加FrameworkB.framework Copy Files作为框架目标在构build阶段FrameworkA,但是这给了我在控制台中的这个错误:

dyld:Library未加载:@ rpath / FrameworkB.framework / FrameworkB引用自:/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework/ FrameworkA原因:没有find合适的图像。 find了:/private/var/mobile/Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework/Frameworks/FrameworkB.framework/FrameworkB:mmap()error 1 at地址= 0x10012C000,大小= 0x00008000段= __ TEXT在Segment :: map()映射/ private / var / mobile / Containers/Bundle/Application/2A38A2BC-9CD7-4AF6-9E50-42C16D92D6B2/FrameworkTest.app/Frameworks/FrameworkA.framework /Frameworks/FrameworkB.framework/FrameworkB

我与这个问题联系了苹果,并find了解决我的问题。 Apple的技术支持明确表示,我需要将FrameworkB.xcodeproj添加到我的应用程序项目中,所以我的项目结构是:

  • FrameworkTest.xcodeproj(应用程序项目)
    • FrameworkA.xcodeproj(cocoa触摸框架)
      • FrameworkB.xcodeproj(cocoa触摸框架)
    • FrameworkB.xcodeproj(cocoa触摸框架)

当我完成这个工作时,应用程序项目可以包含FrameworkB.framework作为embedded式库: FrameworkTest.xcodeproj构建阶段

这解决了我的问题,使它可以在iOS设备上运行。

如果构build版本崩溃:撤销您的企业分发证书,并创build一个新的解决问题。 一旦我做到了,它完美的工作。

我也有类似的问题与embedded式框架,我只是从GitHub尝试你的代码。

选项1 (不适合团队合作)

错误消失的原因是将FrameworkB添加到FrameworkTest目标的常规选项卡中的embedded式二进制文件xcode  - 嵌入式二进制文件

选项2

那么,与其他开发人员共享项目肯定是重要的:)。 你尝试过这种方法吗? 添加新的复制文件阶段在FramewrokA的构build阶段并将FrameworkB添加到框架目标中。 新的复制阶段

但我不知道为什么它在模拟器上工作。 如果有人知道,请随时发表评论。

干杯