美文网首页
iOS Xcode8 framework的封装以及热更新

iOS Xcode8 framework的封装以及热更新

作者: 天明天 | 来源:发表于2017-08-16 13:39 被阅读0次

近期项目中可能会用到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

屏幕快照 2017-08-16 上午10.55.52.png
注意:如果项目设置的最低版本支持是7.0 则还需要 在Build Settings->Linking->Mach-O Type->Static Library。8.0以上则不必设置。
  1. 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 就是你需要的。

屏幕快照 2017-08-15 下午2.57.18.png.png
命令lipo -info 二进制文件路径 :查看它支持的架构,需要支持这几个才可以:armv7 armv7s i386 arm64 X86_64
添加到主工程 Debug

最后你要做的就是 把替换掉二进制文件之后的framework 拷贝出来 添加到工程中即可。
我封装好的Framework 参见我的开源项目:Cxm的Github
封装好后为后面的热更新做准备 参见我的下一篇文章
参考文章:

相关文章

网友评论

      本文标题:iOS Xcode8 framework的封装以及热更新

      本文链接:https://www.haomeiwen.com/subject/wqnbrxtx.html