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

时间:2014-12-15 13:16:57

标签: ios objective-c iphone frameworks

我想在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

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

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

2 个答案:

答案 0 :(得分: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)从此处描述的方法在Xcode 5.1上安装真实Static iOS Framework: - https://github.com/kstenerud/iOS-Universal-Framework

现在可以使用Xcode中的新选项创建“静态iOS框架”。

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here enter image description here

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

enter image description here

6)我们可能还需要将-ObjC添加到Target-> Build Settings->Linking-> Other Linker Flag,因为我们可能需要加载一个大的子框架,其中有许多要加载的类别或者还需要加载其他框架。

enter image description here

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

enter image description here

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

enter image description here enter image description here

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

enter image description here enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

答案 1 :(得分:1)

要创建包含子框架的基于Swift的Umbrella Framework,您可以按照此处记下的分步指南进行操作:http://localhost:8080/