第一部分:封装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下
这是由于我们的framework中有xib资源文件,所以要将Framework也加入到copy Bundle Resources
添加framework到资源文件中
(4)加入到资源文件以后,再运行一次,发现已经可以成功使用 成功获取framework在bundle中的path
网友评论