lipo命令合并和拆分IOS静态库

1.合并模拟器和真机通用静态库

在Xcode中选择模拟器编译出来的静态库是i386架构的,选择真机编译出来的静态库是armv7架构的。当我们是用这些静态库导入到其他工程里开发的时候很麻烦,其他工程在模拟器下要用需要把i386架构的静态库加到工程里,真机调试的时候又要把armv7 arm64架构的静态库加到工程里。这里介绍个lipo命令可以简单的将两个不同框架的静态库合并起来,这样只需要加一个合并后的静态库到工程里就行了。

 

假设我们有 libSyncSDK.i386.a (i386架构)和libSyncSDK.arm.a (armv7架构)

我们只需要在terminal中输入以下命令

 

<span style="font-size:14px;">lipo -create /Users/zyh/Desktop/libSyncSDK.i386.a /Users/zyh/Desktop/libSyncSDK.arm.a -output /Users/zyh/Desktop/libSyncSDK.a</span>

 

这样生成的libSyncSDK.a就是含有 i386 arm7 arm64 3个架构的,大家可以使用file 命令查看

 

<span style="font-size:14px;">file libSyncSDK.a</span>

 

可以放心加到工程中使用了

 

那么如果是framework形式的要怎么搞呢?

下图是需要拿出来合并的文件位置

将模拟器和真机编译出来的framework中得这个文件拿出来,执行上面描述的操作,然后将合并好的文件在放回到原来的位置 这个framework就支持多个架构了。注意文件名要和合并前的一样

 

2.拆分多架构支持的静态库

上面说了合并是为了提高开发效率,那么当我们发布app的时候,如果将i386架构打包进入静态库会变大将近一倍(如果一共支持两个架构),那么如果工程使用了多个这类静态库,会导致整个包的大小没必要的增长。我们也可以通过lipo命令为静态库瘦身

 

还是拿LoginSDK为例子,用file命令查看静态库支持几个架构

 

发现有i386 armv7 armv7s,实际安装到真机上我们只需要armv7就可以了,我们就用lipo命令将armv7的提取出来

 

lipo LoginSDK.a -thin armv7 -output arm/LoginSDK.a


这样在arm文件夹中得LoginSDK.a 就是armv7架构了,大家可以用lipo -info 命令查看

 

 

瘦身前(左)和 瘦身后(右)的大小比较

       

转自:https://blog.csdn.net/xiaozhu2001/article/details/40181681

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值