近期项目中可能会用到framework的封装,所以抽时间学习了一下。网上有许多关于这方面的文章,这里介绍下我自己的封装方式以及需要注意的地方。还有就是从服务端下载framework加载到项目中实现热更新的目的。
创建framework的步骤:
- 选择Cocoa Touch Framework 创建
- 配置各种Xcode 设置
- 添加要封装的代码
- 编译framework 合并二进制文件
- 添加到主工程 Debug
选择Cocoa Touch Framework 创建
屏幕快照 2017-08-16 上午10.53.39.png配置各种Xcode 设置
1.设置framework 的最低支持版本 General
-> Deployment info
注意:如果项目设置的最低版本支持是7.0 则还需要 在Build Settings->Linking->Mach-O Type->Static Library。8.0以上则不必设置。
- Bitcode支持设置 让其支持bit code。在TAGETS的Build setting中搜索Other C Flags,添加命令“-fembed-bitcode”。同样的设置在PROJECT中。如果不进行以上操作,别人在集成你的framework时可以编译,亦可以真机测试。唯独在打包时会发出警告并打包失败。警告为framework不支持bitcode!
屏幕快照 2017-08-16 上午11.08.36.png
3.设置 需要暴露的头文件 无论SDK还是Framework都需要暴露公共的头文件以供使用者读取和。在TARGETS->Build Phases->Headers里面,有三种类别。Public(公共的),这里存放公开的头文件。Private(私有的)这里存放私有的Header,虽然说是私有的,但是还是公开的头文件,编译之后仍然可以framework包里面找到。所以有些Header是不想给别人看到的,必须要放在Project中。
屏幕快照 2017-08-16 上午11.27.18.png
4.设置armv7s
支持 Build Settings -> Architecture - > Architectures 添加armv7s
并选中。然后设置Build Active Architecture only
-> NO
编译framework 合并二进制文件
选择模拟器与真机分别编译你的框架
屏幕快照 2017-08-16 上午11.42.48.png 屏幕快照 2017-08-16 上午11.42.37.png然后在工程目录中选择framework
Show in finder
屏幕快照 2017-08-16 上午11.44.47.png
看到两个文件夹 分别是真机与模拟器在
Debug
模式下生成的二进制文件
屏幕快照 2017-08-16 上午11.45.01.png
然后需要合并这两个文件夹下的 跟你framework同名的二进制文件 就是这个
屏幕快照 2017-08-16 上午11.51.27.png方法:终端 输入:lipo -create 模拟器下二进制文件路径 真机下二进制文件路径 -output 文件夹路径
在文件夹路径下会生成一个***.lipo 的文件 然后 重命名为你framework的名称 最后拖入真机或者模拟器生存的文件下 替换原来的二进制文件即可。此时的framework 就是你需要的。
命令
lipo -info 二进制文件路径
:查看它支持的架构,需要支持这几个才可以:armv7
armv7s
i386
arm64
X86_64
添加到主工程 Debug
最后你要做的就是 把替换掉二进制文件之后的framework 拷贝出来 添加到工程中即可。
我封装好的Framework 参见我的开源项目:Cxm的Github
封装好后为后面的热更新做准备 参见我的下一篇文章
参考文章:
网友评论