$通用二进制(Universal binary)
苹果电脑公司提出的一种程序代码,在同一个程序包中同时为两种架构提供最理想的性能,当程序在操作系统中运行后,将自动检测通用二进制代码,然后根据使用的架构自动选择合适的代码来执行,因此实现无损的本地程序运行速度。
Xcode编译可以指定生成哪些类型的MachO文件.是根据Architectures和Valid Architectures交集决定的,在Debug模式下,会根据手机的系统决定生成与手机系统对应的架构,在release模式下会默认生成armv7和arm64两种架构的合并.
architercture.png
$lipo命令
我们可以通过lipo -info xxx 或 file xxx 查看MachO可执行文件有哪些架构
$lipo -info xxx
或者
$file xxx
如果包含多种架构,我们可以给二进制文件的瘦身,拆分多种架构的二进制文件
$lipo xxx -thin armv7 -output xxx输出的文件名 // armv7架构
$lipo xxx -thin arm64 -output xxx输出的文件名 // arm64架构
也可以把多种架构的二进制整合成一个包含多种架构的二进制文件
$lipo -create xxx xxx -output xxx输出的文件名 // 参数1: 第一种架构的文件名 参数2:第二种架构的文件名 ...
网友评论