在咱们作
iOS开发中
, 有时候咱们会本身动手写一些库, 方便本身去调用, 可是咱们又不想这个库的内部实现代码被别人知道, 这个时候咱们就须要把这个库打包成Framework
或者是lib.a
文件, 这里咱们只作Framework
的打包教程,lib.a
的打包方式和Framework
趋同差别, 若是有须要, 后面我再补上.git
###做者感言github
为了写这篇文章, 我翻查了许多资料, 都没有找到详细点的可参考资料, 外国的文章就不用说了, 光是看鸡肠就头晕了, 因此我本身总结了一些经验, 整理了一番, 决定分享出来, 但愿你们喜欢xcode
最后: 若是你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考大家的意见再进行修改, 联系我时, 请备注
Framework
若是以为好的话, 但愿你们也能够打赏一下~嘻嘻~祝你们学习愉快~谢谢~app
Cain(罗家辉)学习
zhebushimengfei@qq.com: 联系方式测试
350116542: 腾讯QQspa
在开始合成以前, 咱们确定是须要建立一个生成
Framework
的工程, 这里推荐用WorkSpace
来建立, 由于能够方便咱们去测试Framework
库.3d
添加新的工程code
选择建立
Cocoa Touch Framework
cdn
给
Framework
命名, 喜欢啥名字, 本身看着办呗, 我我的的习惯就是, 这个是什么库, 我就命名是啥
建立完以后, 咱们会看到
Framework
里有一个头文件, 头文件里有一堆不明因此的代码, 这个时候咱们不须要管, 直接干掉它
这样子, 咱们就建立
Framework
完毕了, 下面让咱们来建立一个测试类.
给这个测试类, 添加一个类方法
添加完测试类以后, 下面让咱们来配置一下整个
Framework
工程, 让它同时支持模拟器和真机.
Xcode默认是会把Framework变成Debug模式, 这时候咱们须要去改为Release模式
而后咱们去配置项目工程, 首先咱们来添加一个模拟器的支持
修改Framework最低支持iOS的版本, 我这里最低支持的是iOS7
把默认的动态库, 切换成静态库
配置须要暴露的
.h
文件
最后, 咱们在
Test.h
中导入TestClass.h
, 固然, 咱们也不须要这么作, 由于咱们已经在配置中暴露了TestClass.h
文件, 因此不须要引用也是能够的
这个时候, 咱们先来测试一下能不能生成
Framework
库
最终测试, 是成功生成
Framework
库的, 但这个是模拟器库, 若是你须要支持真机的话, 那么只要切换运行的选项就行了
这时候咱们再去查看文件夹, 就会有两个
Framework
文件夹了
虽然咱们把
Framework
都打包好了, 可是咱们须要检测一下是否符合咱们的需求, 这是咱们要打开Terminal
, 而且输入命令.lipo -info (Framework二进制文件地址)复制代码
检测真机Framework包
检测模拟器Framework包
前面作了那么多的事情, 就为了如今这一步, 就是将模拟器与真机两个Framework包合成一个通用的Framework包, 因为我这里没有通用的Shell脚本, 只能用最笨的办法合成两个包了, 下面让咱们一块儿来看看.
打开终端输入合成命令
lipo -create (真机Framework路径) (模拟器Framework路径) -output (真机/模拟器路径)复制代码
检测合成后的通用Framework, 只有看到
armv7 arm64 i386 x86_64
这四个同时存在, 才真正的合成成功
这里有一个注意事项, 有时候用
lipo
合成会报一个错误(我这里没有发现)
crun: error: active developer path (“/Applications/Xcode 2.app/Contents/Developer”) does not exist, use xcode-select --switch path/to/Xcode.app to specify the Xcode that you wish to use for command line developer tools (or see man xcode-select)复制代码
这时候不要慌, 只要再输入下面的命令, 输入电脑密码后, 而后再次运行合成
Framework
的命令, 就能够合成了
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer复制代码
既然咱们那么辛苦的合成了一个通用的
Framework
, 不用用, 怎么对得起咱们的付出呢? 再次回到Workspace
, 新建一个测试工程.
注意, 建立测试工程的时候, 不要新建到
Framework
的工程内
模拟器测试
真机测试
GitHub地址: github.com/CainRun/Cre…
其实我这个方法比较麻烦一些, 毕竟我还没找到怎么用脚本去合成一个的方法, 若是找到这样子方法的朋友但愿能够告知一声, 感激涕零~~~
好啦, 教程到这里就结束了, 谢谢你们的耐心观看