利用终端指令合并支持模拟器和真机的静态库

Posted 鬼神杀破狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用终端指令合并支持模拟器和真机的静态库相关的知识,希望对你有一定的参考价值。

制作.a静态库时,需生成了支持模拟器和真机的静态库,然后在开发中我们在模拟器和真机上测试时,就需要来还更换静态库,造成极大的麻烦,因此,我们可以通过终端指令将支持模拟器和真机的静态库合并一个静态库,这样在模拟器和真机上都可以使用

当我们在模拟上使用真机的静态库时,就会报如下错误,这种错误我们在以后的开发中会经常遇到:

该错误大体意思是该静态库不支持x86_64,原因是因为模拟器的处理器是x86_64架构的,而真机的都是采用的arm7,arm7s,arm64架构的,相反在真机上使用模拟器的静态库会报相反的错误

现在我们就将支持模拟器和真机的静态库通过终端指令合并为一个静态库

假设我们当前目录下有两个文件夹,一个为libDev,一个为libPro,两个文件夹下各有一个static.a静态库和一个xxx.h头文件

打开终端,进入libdev和libPro所在的目录

通过cd libDev进入libDev目录

通过lipo -info static.a指令查看当前静态库支持的平台如下

同样,进入libPro目录,通过lipo -info static.a指令查看当前静态库支持的平台如下

 

通过lipo -create libDev/static.a libPro/static.a -output common.a合并为一个静态库,common.a就是合并完的静态库,默认放在当前目录下

注意:虽然将真机和模拟器的静态库合并在一起之后,以后我们就不用关心当前是允许在模拟器还是真机了,但是如果在程序发布时还是建议大家使用真机的静态库,减少不必要的空间占用

(补充:生成的静态库有四个版本:真机-Debug版本,真机-Release版本,模拟器-Debug版本,模拟器-Release版本,在升级静态库时要注意些)

以上是关于利用终端指令合并支持模拟器和真机的静态库的主要内容,如果未能解决你的问题,请参考以下文章

IOS::.a的生成,以及模拟器和真机.a 的合并

iOS 静态库和动态库相关

iOS真机和模拟器CPU架构

iOS打包.a静态库步骤

如何判断Android设备是真机还是模拟器

appium连接模拟器和真机