iOS 8及以上版本的框架,带有嵌套的嵌入式框架。

16

我创建了一个自定义的iOS框架LoginKit。它又嵌入了Alamofire框架。在模拟器上,一切都正常,但是在尝试在设备上运行时,我收到以下错误消息:

Dyld错误信息:

  Library not loaded: @rpath/Alamofire.framework/Alamofire
  Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/506B47DE-804F-477F-AA90-69DF039E07FA/data/Containers/Bundle/Application/26D0CA8F-7284-42B5-8091-E5915736DCDB/Bingo.app/Bingo
  Reason: image not found 
在父应用程序中,在“嵌入式档案”部分,我只有LoginKit.framework。现在,如果我还嵌入Alamofire.framework(从LoginKit底部获取),那么错误就会消失。 这种行为是否符合预期?这难道不是破坏封装的整个目的吗?

1
我也遇到了这个问题。标记一下。 - MsrButterfly
2
这正是我一直面临的问题,目前我找到的唯一解决方法。 - Yevhen Dubinin
你的应用程序也引用了Alamofire吗? - iOSAddicted
1个回答

3
你正在尝试创建的是一个名为Umbrella Framework的框架。通过一些技巧和使用自定义bash脚本,您可以按照此处所述的方式创建具有嵌套框架的框架。
然而,苹果强烈反对创建伞形框架,因为这种方法可能会导致各种奇怪的运行时和/或链接错误。此外,如果应用程序包含多个嵌入相同框架甚至不同版本的相同框架的框架,则显然应用程序将变得更大且更难维护。关于这些问题的很好的解释可以在此处找到。
目前,在应用程序开发中,包含框架的框架仍然是一个大问题,因为苹果没有提供良好的框架处理方式。在这个问题最终得到解决之前,我强烈建议直接将所有框架和子框架嵌入应用程序中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接