 
        最近需要将公司项目中的公共代码给提取出来,打包成
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 类和分类都加载到最后的可执行文件中。 | 
 
         
        