在实际的项目开发中,我们会碰到某些静态库只能在真机或者模拟器中的一个上可以运行。为了让静态库在模拟器和真机都可以正常的运行,就涉及到如何把一个工程生成的静态库打包以后生成的framework进行合并。下面简单介绍下合并的过程。

首先,说一下静态库的打包

在Xcode顶部,选中工程,点击列表中的Edit Scheme 如下

iOS合并真机和模拟器framework-LMLPHP

打开后,选择Run->Info 将Debug模式改成Release模式,然后Close

iOS合并真机和模拟器framework-LMLPHP

回到工程,我们分别使用模拟器和真机编译项目,然后来到工程的Products文件 如下所示

iOS合并真机和模拟器framework-LMLPHP

点击后,我们会看到如下的文件

iOS合并真机和模拟器framework-LMLPHP

该文件夹中分别是真机和模拟器生成的。我们需要的是下面这两个文件

iOS合并真机和模拟器framework-LMLPHP

iOS合并真机和模拟器framework-LMLPHP

接着,我们打开终端:

输入lipo -info 加真机和模拟器的文件路径 回车,如果看到armv7 arm64说明是真机,i386 x86_64说明是模拟器

重点:合并

lipo -create 真机路径 模拟器路径 -output 真机路径


因为我这边是合并到真机的路径上,所以合并完成后我们可以按上面的方式进行测试,拖入真机的路径,需要得到的是armv7 i386 x86_64 arm64

这个就代表合并成功了(当然你也可以输出到模拟器路径或者其他路径)

接下来就是把output的路径中以.framework结尾的文件添加到需要的工程中就可以使用了。

好了,上面就是合并framework相关的内容,如有不对的地方,欢迎各位指正,

05-11 22:03