如何在iOS SDK中创建一个伞形框架?

Has*_*han 21 iphone frameworks objective-c ios

我想在iOS SDK中创建一个伞形框架.我的要求是:

我有一个名为"Framework A"的框架,我想创建另一个名为"Framework B"的框架.我想将"框架A"添加到"框架B"作为子框架,用户只需在其项目中导入"框架B"以使用"框架A"和"框架B".换句话说,"框架B"将作为"框架A"的包装器.我通过以下有关框架创建的链接从Apple读出:

https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

但它没有揭示创建伞形框架的方式.

请建议一步一步的方法来创建一个伞形框架.

Moh*_*shi 36

我们都知道,Apple非常不鼓励创建伞形框架.但苹果也表示可以通过Xcode实现.https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html#//apple_ref/doc/uid/20002254-BAJHGGGA

我通过Xcode 5.1上的这些简单方法实现了创建伞形框架.我们只需要处理一些特殊的配置来将子框架链接到伞框架.这是我的方法: -

1)Static iOS Framework通过此处描述的方法在Xcode 5.1上安装real : - https://github.com/kstenerud/iOS-Universal-Framework.

现在可以使用Xcode中的新选项创建"静态iOS框架".

在此输入图像描述

2)创建Static iOS Framework并将Target-> Build Settings-> Architectures-> Architectures设置更改为标准体系结构.这将创建具有所有标准体系结构的框架.

在此输入图像描述

3)调整公共头文件Target-> Build Phase-> Copy Headers.我们可以在这里设置头文件可见性.

在此输入图像描述

4)将SubFramework链接到UmbrellaFramework中Target->Build Phase -> Link Binary With Libraries.我们可能还需要根据我们的用途链接其他标准框架.

在此输入图像描述 在此输入图像描述

5)如果需要,我们可能还需要添加Bundle Resources Target-> Build Phase-> Copy Bundle Resources.

在此输入图像描述

6)我们还可能需要添加-ObjCTarget-> Build Settings->Linking-> Other Linker Flag,因为我们可能需要加载一个大的子框架那里有很多类别加载或还需要加载额外的框架.

在此输入图像描述

7)添加Copy File使用Target-> Build Phases-> +-> New Copy File Build Phase.

在此输入图像描述

8)将其目的地更改为Frameworks并在那里添加SubFramework.framework.这会将SubFramework复制到Umbrella Framework.

在此输入图像描述 在此输入图像描述

9)对于演示,我在UmbrellaFramework类中添加了两个演示方法.一个用于演示伞框架方法调用,另一个用于调用subFramework方法.

在此输入图像描述 在此输入图像描述

10)iOS Device从中选择并存档UmbrellaFramework项目Menu->Product->Archive.这将创建我们的伞形框架,就是这样.

在此输入图像描述

11)现在是时候创建一个新的演示项目,并将其与UmbrellaFramework链接起来.

在此输入图像描述

12)只需导入UmbrellaFramework标头并调用这两种方法.它将在日志窗口中显示Hello消息.

在此输入图像描述

  • 在最终应用程序中使用伞框架时,有人尝试过这个问题吗?dyld:库未加载:@rpath/embeddedframework.framework/embeddedframework 引用自:/private/var/containers/Bundle/Application/EA127B01-9444-4660-B0F6-1A75A74CB330/sampleapp.app/Frameworks/umbrellaframework.framework/umbrellaframework 原因: 找不到图片 (2认同)