iOS封装FrameWork最全教程

第一部分:封装frameWork
1.首先准备好,我们要封装的功能模块,我这里是一个录制面部信息和声音信息的功能模块(这个模块要上传视频到服务器,所以需要用到AFNetworking这个库)。


要封装的功能模块.png

注意下这个库里面有资源文件:xib和图片文件,图片文件,我们后面会用bundle将其单独拉出来。
2.新建Framework工程,开始封装


新建工程

工程界面

3.把我们要封装的功能模块,直接拖进项目
拖入功能模块.png

我这里是直接拖到文件夹外侧的


项目展示

4.我们进行相关项目的配置(都在Build Settings中设置)
(1)设置frameWork支持的架构,由于ARCHS这个宏,默认已经有armv7,arm64了,那我们再新增一个armv7s即可


设置支持的架构

增加armv7s

(2)设置Framework支持的系统版本,我这里选择的是9.3


设置系统版本

(3)由于我们是创建静态库,所以选择Static Library


设置Mach-O Type

5.下面我们将要暴露给别人使用的文件拖到Public中


拖动前

拖到后

6.将我们第5步中所有暴露在Public中的头文件,都写在我们创建Framework项目时生成的头文件中,这个文件后面会自动暴露给用户


增加头文件

7.编译一下,发现了AFNetwoking报错


缺少AFNetwoking的报错

由于我们的功能使用了AFNetwoking,所以我们pod安装下。
(1)创建pod file


先pod init

(2)找到pod file文件并写入pod 'AFNetworking'
找到pod File

写入pod指令

(3)pod install


执行安装

8.在我们的pch中写入import。至于创建pch文件以及如何设置路径和以前一样,不再赘述


pch文件写入import

9.重新打开项目,进行编译,编译成功


打开项目

10.我们创建bundle,并把功能模块中的图片拖到bundle,再把bundle移除项目。最后创建一个文件夹,把frameWork和bundle同级放置
(1)新建bundle


新建bundle

(2)拖入图片


拖入图片

(3)将项目中涉及到拖入bundle的图片,全部修改加载方式。否则会加载不出图片
image.png

(4)移除bundle 资源
copy bundle Resources中移除

11.我们在真机,测试机环境下分别编译一次。(这里说明下,网上说的使用Aggregate自动生成的方法,我这边没有尝试成功。)
(1)然后我们show in Finder


查看文件

(2)分别找到真机和模拟器下 Framework中的无后缀文件


找到没有后缀的文件

(3)利用"lipo -create 真机路径1 模拟器路径2 -output 存放路径3 "指令合并真机和模拟器的frameWork到一个文件中


合并指令和生成文件

(4)组装终极Framework
(1)我们先建一个文件夹,并把刚才的图片bundle资源拖进去


image.png

(2)然后我们将生成的真机的Framework拷贝到这个文件夹FaceVideoFrameWork2
image.png

(3)将我们刚才合并生成的文件移除后缀名,复制到我们的Framework中,提示时,直接选择替换

复制并替换

12.查看我们合并之后的framework 支持的架构,lipo -info指令


查看支持的架构

13.到此为止,我们完整的frameWork就已经完成了,我们只要给别人FaceVideoFrameWork2这个文件夹,就可以使用我们的Framework了。


image.png

第一部分:新建测试项目,使用封装的Framework
(1)将上面封装出来的FaceVideoFrameWork2文件夹直接拖入项目


拖入项目

(2)编译下,会提示缺少AF的相关文件,因为我们的frameWork中使用到了AF,所以我们测试项目中要进行 pod install下

(3)解决了缺少AF的报错以后,再编译-运行 一次发现下面的崩溃。提示说:在bundle中没有找到CTIDFMVideoViewController这个nib文件
运行崩溃

这是由于我们的framework中有xib资源文件,所以要将Framework也加入到copy Bundle Resources


添加framework到资源文件中

(4)加入到资源文件以后,再运行一次,发现已经可以成功使用
成功获取framework在bundle中的path
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容