终端命令lipo进行拆包合包

作为iOS开发,我们经常会遇到业务告诉我们安装包过大了,我们需要怎么样让APP瘦身,

       这里很多人就会想到,我们工程里面有很多的自己封装的静态库(.a文件)下手了,直接给静态库只放一个真机(.a文件<armv7+arm64>),这样会导致我们在开发过程中没有模拟器文件,导致不能用模拟器进行测试。

这里需要注意的是iOS系统在10系统以下可以使用armv7 在11之后都是arm64和arm64e,模拟器上一般使用电脑的cpu(x86)

这里容我介绍以下如何对macho文件(.a,.framework都属于macho文件),如何查看macho文件是什么格式,我这里提供2中问方式查看终端命令:file  和lipo -info:

$file MachDemo    查看当前文件包结构
输出结果:
MachODemo: Mach-O universal binary with 4 architectures: [arm_v7:Mach-O executable arm_v7] [arm_v7s:Mach-O executable arm_v7s] [arm64:Mach-O 64-bit executable arm64] [arm64e:Mach-O 64-bit executable arm64e]
MachODemo (for architecture armv7):	Mach-O executable arm_v7
MachODemo (for architecture armv7s):	Mach-O executable arm_v7s
MachODemo (for architecture arm64):	Mach-O 64-bit executable arm64
MachODemo (for architecture arm64e):	Mach-O 64-bit executable arm64e


$lipo -info MachODemo  查看文件包含架构
输出结果
Architectures in the fat file: MachODemo are: armv7 armv7s arm64 arm64e

能够查看文件格式之后,我们需要知道的是如何对文件进行拆包,合包,合包可能很多人都会使用,在制作.a文件的时候很多帖子上面都会把模拟器和真机的包合成一个,但后期上线的时候,都是再打一个真机包,其实我们可以使用合起来的包进行拆包,这里提供一个macho文件包含4中格式(armv7,armv7s,arm64,arm64e,4中格式),可以随便的进行拆包合包,


命令:lipo 原有包名 -thin 要提取出的格式 -output  提取出来文件名称
$lipo MachODemo -thin armv7 -output macho_armv7  从原有包中获取armv7架构文件
从原有包中拆除armv7,输出文件为macho_armv7(文件名称),这样就会多出一个只有arv7格式的文件
通过这种方式我们可以把armv7s,arm64,arm64e,都分别拆分出来

然后使用lipo -create 包名1  包名2 包名3 -output 整合包名
$lipo -create macho_armv7 macho_armv7s -output macho_armv7and_armv7s   合并文件

通过这种方式整合出来的包和原有包是一样的
我们可以通过md5方式得到哈希值,来看一下原有文件和,拆分文件再整合后文件的哈希值是相同的;

md5 文件名  可以得到文件的hash值
$md5 macho_all  查看hash值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值