最近需要将公司项目中的公共代码给提取出来,打包成
Framework
来使用,这样可以使得我们的公共代码易于分享,并且可以在多个工程中易于复用,而且将这些代码给别人使用时,可以隐藏实现细节,控制公开的头文件,下面分享一下打包成Framework
的步骤。
如果你要打包的代码需要用到别的第三方库的话,可以转到我的另一篇文章:【iOS 开发】打包 Framework 时使用 CocoaPods 引入第三方库的方法
创建 Framework 工程
1. 创建打包工程
- 打开
Xcode
新建一个工程,选择Framework & Libray
选项中的Cocoa Touch Framework
,这里说一下我的Xcode
版本是8.3.2
。
- 因为要打包所需的文件,所以这里我自己创建了一个测试类,在实际的打包过程中,直接把需要打包的所有文件拖到该工程中即可。
2. 添加公开头文件
- 选中
Target
,选择Build Phases
-Headers
,可以看出有三个选项,分别是Public 、Private 、Project
,把需要公开给别人的.h
文件拖到Public
中,把不想公开的,即为隐藏的.h
文件拖到Project
中。
- 完成上述步骤之后,在默认生成的
.h
文件中,我的是TestFramework.h
,把所有需要暴露的.h
文件都用#import <TestFramework/PublicHeader.h>
引入,记住一定要将所有需要暴露的.h
文件都引入,也就是上面Headers
-Public
中加的所有.h
文件,不然编译后生成的.framework
在引用的时候会有警告。
3. 更改设置参数
- 选中
Target
,选择Build Settings
,在Architectures
下增加armv7s
。
- 选中
Target
,选择Build Settings
,在搜索栏搜索Mach-O Type
,将Mach-O Type
修改为Static Library
。
工程打包成 Framework
1. 创建 Aggregate
- 新建一个
Target
,选择Cross-platform
-Aggregate
,名字随便起一个。
- 选中新建的
Target
,点击Build Pharas
中的+
,选择New Run Script Phase
。
- 点开
Run Script
,添加以下的脚本代码。
# Sets the target folders and the final framework product. |
2. 编译所有文件
- 按照下图将编译的
Target
选择为刚才创建的Aggregate
,Device
选择为Generic iOS Device
,然后按下Command + B
开始编译。
- 编译完成后会自动弹出已经创建完成的
Framework
包内容,最终打包完的.framework
会在项目下的Products
文件夹下。
测试打包完的 Framework
- 新建一个测试工程
TestDemo
,将打包完的TestFramework.framework
拖到工程中,测试一下刚才创建的TestClass
类,可以看到信息打印出来了,测试成功。
- 如果使用打包完的
Framework
有出现崩溃的情况,可以考虑在项目Other linker flags
中加入一些参数,下面介绍三个常用参数:
-ObjC // 加了这个参数后,链接器就会把静态库中所有的 Objective-C 类和分类都加载到最后的可执行文件中。 |