本文参考Bart_Simpson 的swift——创建自己的framework,以及真机和模拟器两版本的合并!文章,感谢该作者。
编译环境
macOS Sierra 版本 10.12.6
Xcode版本 9.0
序言
本文直接滤过如何生成自己的Framework,如果有不清楚的同学自己去网上搜索资料,本文直接从已经生成了一个Swift版本的Framework,现在如何打包合并并提供给工程使用。
1.将编译环境替换成release环境。
点击run 选择Edit Scheme
将Debug改为Release,点击Close
2.回到工程中,选择Framework的工程,先选择模拟器进行编译 ,command+B ,编译完成以后再次在真机上选择编译,编译成功以后。
先选择模拟器进行编译
再选择真机进行编译
3.分别打开Framework文件目录然后合并
打开Framework文件目录
显示Framework文件目录
终端输入 lipo -create 真机路径 模拟器路径 -output 真机路径(ps:这几个路径就是上图拖动到终端后的路径)
然后输入lipo -info加上面提到的合并后的这个文件路径,打印这些内容
几个重要概念
1、模拟器指令集
i386|x86_64 是Mac处理器的指令集,i386是针对intel通用微处理器32架构的。x86_64是针对x86架构的64位处理器。所以当使用iOS模拟器的时候会遇到i386|x86_64,iOS模拟器没有arm指令集。
2、目前iOS移动设备指令集
arm64:iPhone5S| iPad Air| iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
armv6 : iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch(一般不需要去支持)
然后将生成的文件替换真机中对应的文件,即将合并后生成的文件替换真机中原有的文件
但是并没有完,不知道为什么,终端这样合并只是假象,你需要手动去将真机中Modules里的swiftdoc文件和模拟器Modules里的swiftdoc文件合并到一起
将模拟器的这些东西拷贝,复制上图对应的真机文件夹里面去。文件合并到一块后结果如下图:
现在大功告成!这个时候就可以将Framework拖到对应工程中使用了,oc和swift混编的framework也可以这样合并!