最近在做一个iOS的统计SDK,需要从零开始做一个framework,同时为了方便开发,花了点时间折腾,于是顺便总结一下iOS framework的开发流程,不同的Xcode版本流程会有些小区别,以下使用的是7.3.1。
建立framework工程
建framework工程之前,要先了解framework
framework和.a
iOS一直只对用户开放静态库,直到iOS8用户才能用动态库,然而这个动态库貌似也只能是进程内,无法跨进程共享。
我们用的更多的还是静态库,iOS静态库有两种类型,framework和.a,看过linux系统方面的人对.a和.so应该都不陌生,事实上苹果下的.a和linux下的.a从格式上来看不是同一个东西,一个是Mach-O,一个是ELF,但其实Mach-O只是苹果在ELF的基础上添加一些额外的段,可以认为基本一样。那么framework呢?可以认为framework只是对.a的一层额外的封装,类似苹果对ipa的封装,把.a文件包装进一个结构化的目录结构,这样就是一个framework。由于framework本身是一个目录,于是可以把属于framework内部的一些资源也放进去,比如头文件、图片、音视频文件等等,从封装的角度来看,framework是比.a更好的选择。
其实,我们不需要了解这么多,也不需要自己建这些目录层次,xcode已经帮我们做了大部分的工作,我们需要的只是改几个配置。
基本设置
新建framework工程:

填好framework名称,确定,就生成了一个完整的framework工程:

运行一下,红色的framework就变黑,说明framework已经生成了。但这个framework并不是我们想要的

这个framework只有arm7和arm64两种架构的指令内容,如果直接发布这个framework,开发者将无法在模拟器上编译,后续我们会说到多架构指令的必要。另外,这是一个动态库,我们需要的是静态库。
在Build Setting里设置以下几个参数
