arm64、armv7、armv7s是指什么?

1. 了解 ARM

ARM 处理器,因为其低功耗和小尺寸而闻名,现在几乎所有的手机处理器都是基于 ARM。
armv6、armv7、armv7s、arm64 都是 ARM 处理器的指令集,并且所有指令集原则上都是向下兼容的,如 iPhone4S的 CPU 默认指令集为 armv7 指令集,但是它同时兼容 armv6 指令集,只是使用 armv6 指令集时无法充分发挥其性能,无法使用 armv7 指令集中的新特性,同理,iPhone5 的处理器标配 armv7s 指令集,同时也支持armv7 指令集,只是无法进行相关的性能优化,从而导致程序的执行效率没那么高。

2. 相关设备的指令集

arm64 armv7s armv7
iPhone6s iPhone5 iPhone4
iPhone6s plus iPhone 5C iPhone4S
iPhone 6 iPad4 iPad
iPhone6s plus - iPad2
iPhone5s - iPad3
iPad Air - iPad mini

我们可能还见过 i386 和 x86_64 的:

  • i386 是针对Intel通用32 位微处理器
  • x86_64是针对 x86 架构的 64 位处理器

所以:

  1. 模拟器32位处理器测试需要i386架构
  2. 模拟器64位处理器测试需要x86_64架构
  3. 真机32位处理器需要armv7,或者armv7s架构
  4. 真机64位处理器需要arm64架构(现在出的设备都是 64 位的了)

3. Xcode 设置支持的指令集

截屏2020-07-28 下午9.44.41.png

结合上图,我们先要认识 3 个设置:

  • Architectures
    该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。

  • Valid Architectures
    该编译项指定可能支持的指令集,该列表和 Architectures 列表的交集,将是 Xcode 最终生成二进制包所支持的指令集,比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。

  • Build Active Architecture Only
    该编译项用于设置是否只编译当前使用的设备对应的arm指令集。

    当该选项设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包。

    当然该选项起作用的前提是你的Xcode必须成功连接了调试设备。如果你没有任何活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依然还会编译Valid Architectures和Architectures指定的二进制包。

    通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。

4. 选择支持的指令集

如果你的软件对安装包大小非常敏感,你可以减少安装包中的指令集数据包,而且这能达到立竿见影的效果。

你可能感兴趣的:(arm64、armv7、armv7s是指什么?)