ios开源框架——如何在iOS SDK中创建一个umbrellaframework(framework库的再封装)

本文分享了如何在iOS SDK中创建伞形框架(umbrella framework)的经验,具体步骤包括创建静态库项目、配置架构、链接子框架等,最终使项目仅通过引用伞形框架即可使用多个子框架的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

难过鉴于客户的无理要求,最近需要完成一个framework库的再封装的工作,今天就把一些经验分享给大家:


需求目的:我有一个framework库叫做 “库a”,我想创建另外一个framework库叫做 “库b”。我想把a封装进b中相当于一个子库并且只引用库b就可以在项目中同时使用2个库的所有功能 。换言之,b库就相当于a库的一个封皮。我参考了Apple 官方以外的有关框架的创作链接:https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

但是并没有完全解决问题,下面我们就一步一步的完成umbrella framework 的创建。


众所周知创建umbrella framework 是Apple 高度不认可的一种行为,但是Apple 也承认通过Xcode是有可能实现的:https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html#//apple_ref/doc/uid/20002254-BAJHGGGA

我曾经在Xcode 5.1上通过简单的途径创建成功过umbrella framework 。最重要的是引入一些特殊的协议来把sub-framework导入到umbrella framework。


1)按照下面的链接中描述的样子创建一个Static iOS Framework  :https://github.com/kstenerud/iOS-Universal-Framework.

现在,你可以在新建选项卡中新建一个“Static iOS Framework”了。enter image description here

2) 创建一个静态库项目并在Target-> Build Settings-> Architectures-> Architectures选项卡中设置为标准架构(Standard architectures)。这将会创建一个包含所有标准架构的framework。

enter image description here

3) 在Target-> Build Phase-> Copy Headers中调整公共头文件,我们可以在下图看到头文件的所在。


enter image description here

4) 在Target->Build Phase -> Link Binary With Libraries连接 子库(SubFramework)到 目标库(UmbrellaFramework)。我们也可能为了使用一些功能导入一些系统的标准库。enter image description here

5)如果必要的话我们还需要在Target-> Build Phase-> Copy Bundle Resources添加资源。enter image description here

6)我们也需要在Target-> Build Settings->Linking-> Other Linker Flag中添加-ObjC,如果我们要加载一个很大的子库subFramework,正如我们有许多类别加载或还需要加载额外的框架。enter image description here

7)在Target-> Build Phases-> +-> New Copy File Build Phase添加 Copy Fileenter image description here

8)把存放文件的类型改为 Frameworks并把SubFramework.framework添加进来。这将会把SubFramework拷贝进Umbrella Framework

enter image description here

enter image description here

9)在demo中我在UmbrellaFramework class中添加了2个demo文件,一个是UmbrellaFramework的示例头文件,另一个实现文件调用子框架subFramework方法

enter image description here

enter image description here

10)选择iOS Device并且在 Menu->Product->ArchiveArchive这个umbrellaframework。然后我们就得到了umbrellaframework的库文件。

enter image description here

11) 现在我们创建一个新的demo,并且把UmbrellaFramework导入进来。

enter image description here

12)仅仅导入UmbrellaFramework的头文件并且调用下面这2个方法。你将在 log窗口 会看到 hello的输出信息。enter image description here



PS: 'iOS Universal Framework' github.com/kstenerud/iOS-Universal-Framework should also add support for Xcode 6。但是,在6上并没有成功。


译文原地址:http://stackoverflow.com/questions/27484997/how-to-create-an-umbrella-framework-in-ios-sdk































































求,最近需要完成一个framework库的再封装的工作,今天就把一些经验分享给大家:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值