文章目录
- Apple 指令集
- ARM架构
- 指令集对应设备
- Architectures
- Build Active Architecture Only
- Valid Architectures
Apple 指令集
iOS测试分为模拟器测试和真机测试,处理器分为32位和64位。
ARM架构
ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine
,更早称作艾康精简指令集机器,Acorn RISC Machine
),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,符合其主要设计目标为低成本、高性能、低耗电的特性。
参考维基百科
指令集对应设备
Architecture 指令集 | 对应设备 | 说明 |
---|---|---|
armv6 | iPhone、iPhone 3G、iPod 1G/2G | 32位,09年之前出的iOS设备 |
armv7 | iPhone 3GS、iPhone 4(S)、iPod 3G/4G/5G、iPad、iPad 2、iPad 3、iPad Mini | 32位,A5X及更早版本 |
armv7s | iPhone 5、iPhone 5c、iPad 4 | 32位,A6和A6X芯片中使用。 (iOS6.0及更高版本中可用) |
arm64 | iPhone 5s、iPhone 6s(Plus)、iPhone 6(Plus)、iPhone 7(Plus)、iPhone 8(Plus)、iPhone X、iPad Air(2)、Retina iPad Mini(2,3)、Apple TV 4 20年末及之后推出的基于Apple Silicon的新型Mac使用的体系结构 | 64位,A7及更高版本开始使用。 (iOS7.0及更高版本中可用) |
arm64e | iPhone XS/XR/XS Max/XR/11/11 Pro/11 Pro Max…… | 64位,A12处理器的新指令集 |
i386 | iPhone5、iPhone5s及以下的模拟器。(macOS) | 32位 Intel 处理器 iOS6.1及更低版本上的唯一选项 |
x86_64 | iPhone6及以上的模拟器。(macOS) 05-21年间交付的所有Intel Mac的体系结构 | 64位 Intel 处理器 iOS7.0开始可用 |
iOS11放弃支持32位应用,Modern Objective-C Runtime
未在32位上受支持,是ARC模式
支持的先决条件
- ARM处理器和Intel处理器的区别
ARM处理器:使用精简指令集(RISC)
Intel处理器:使用复杂指令集(CISC)
- ARM处理器指令集
ARM指令集:计算机ARM操作指令系统
armv6、armv7、armv7s、arm64、arm64e 都是arm处理器的指令集,所有指令集原则上都是向下兼容的。
(比如:你的设备是armv7s指令集,那么它可以兼容运行比armv7s版本更低的指令集:armv7、armv6,只是使用armv6指令集时无法充分发挥其性能,即无法使用armv7指令集中的新特性)
Xcode4.5起不再支持armv6。
苹果的A7处理器支持两个不同的指令集:
- 32位ARM指令集(armv6、armv7、armv7s)
- 64位ARM指令集(arm64)
另外:
- i386:通常被用来作为Intel 32位微处理器的统称。
- x86_64:可在同一时间内处理64位的整数运算,并兼容x86_32架构,是针对x86架构的64位处理器。
注意:
iOS模拟器没有运行arm指令集,用到的是 i386 或 x86_64,所以只有在iOS设备上才会执行设备对应的arm指令集。
Architectures
表示项目编译的时候支持的指令集的集合,如果设置多个architecture
,则编译出的二进制数据包及ipa包 会包含多个指令集代码,体积会变大。
设置:Xcode -> Build Settings -> Architectures
默认是:$(ARCHS_STANDARD)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-huVqBf8u-1613575098536)(blob:file:///e6cddb72-6605-4ffb-943a-69f19f9ec675)]
参考值:Xcode构建设置参考
Build Active Architecture Only
是否只编译当前连接设备所支持的指令集。这个设置主要用在Debug
的时候,默认Debug
为YES
,Release
为NO
。
Debug
模式为YES
:编译时只编译连接设备的处理器版本,会大大缩短编译时间。
Release
模式为NO
:需要适配市面上大部分手机,这也是为什么Release
编译时需要花费更多时间的原因。(如果为YES
,那么生成的安装包只能安装在你当前连接设备的编译类型的手机上)
Valid Architectures
表示项目所支持的处理器架构列表,Architectures
与Valid Architectures
的交集 确定最终的数据包包含的指令集代码。
Xcode 12 已弃用,不再包含此设置,不鼓励使用它。而是有一个新的Excluded Architectures
(EXCLUDED_ARCHS
)代替。如果项目包含Valid Architectures
(VALID_ARCHS
),那么这个设置将显示在Build Settings
-> User-Defined
中。
参考:
CPU Architectures
iOS 指令集架构 armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
Xcode 12 Release Notes
iOS 指令集架构Architectures armv6、armv7、armv7s、arm64、arm64e、x86_64、i386
iOS和iPadOS设备列表