iOS--Architectures设置

打开配置界面的操作如下:

1.打开工程,然后选择工程导航面板上的工程文件
2.在编辑器面板上选择--TARGETS--,再选择--Build Settings--选项卡,在搜索条中搜索--Architectures--

iOS--Architectures设置_第1张图片
配置步骤.png
1.Architectures配置

指定工程被编译成可支持哪些指令集类型,而支持的指令集越多,就会编译出包含多个指令集代码的数据包,对应生成二进制包就越大,也就是ipa包会变大

iOS--Architectures设置_第2张图片
Architectures.png
2.Base SDK配置

Base SDK-->指的是当前编译所用的SDK 版本
Base SDK设置会引导编译器使用该版本的SDK编译和构建应用,也就是说,它会直接控制应用使用哪些API. 默认情况下,Xcode中创建的新工程总是使用最新版本的SDK,而苹果会处理API的废弃,如下图:

iOS--Architectures设置_第3张图片
Base SDK.png
3.Build Active Architectures Only配置

该编译项用于设置是否只编译当前使用的设备对应的arm指令集
1.设置成YES时,你连上一个armv7指令集的设备,就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依然只会生成一个armv7指令集的二进制包.(该选项起作用的前提是你的Xcode必须成功连接了调试设备! 如果你没有任何活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依然还会编译Valid Architectures和Architectures指定的二进制包.)
2.通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO
[图片上传中...(Snip20180523_16.png-dab853-1527045783606-0)]

iOS--Architectures设置_第4张图片
Build Active Architectures Only.png
4.Valid Architectures配置

指定可能支持的指令集, 该列表和Architectures**列表的交集,将是Xcode最终生成二进制包所支持的指令集 **(因此这个不能为空)

iOS--Architectures设置_第5张图片
Valid Architectures.png

5.Supported Platform 配置

指定支持的设备平台


iOS--Architectures设置_第6张图片
Supported Platform.png

概念

1.ARM

ARM处理器,特点是体积小、低功耗、低成本、高性能, 所以几乎所有手机处理器都基于ARM,在嵌入式系统中应用广泛

2.ARM处理器指令集

armv6|armv7|armv7s|arm64都是ARM处理器的指令集,这些指令集都是向下兼容的,例如armv7指令集兼容armv6,只是使用armv6的时候无法发挥出其性能,无法使用armv7的新特性,从而会导致程序执行效率没那么高。
i386|x86_64 是Mac处理器的指令集,i386是针对intel通用微处理器32架构的. x86_64是针对x86架构的64位处理器. 所以当使用iOS模拟器的时候会遇到i386|x86_64, ios模拟器没有arm指令集

3.目前iOS的ARM处理器指令集及其支持的设备:

arm64: iPhone5S以上| iPad Air| iPad mini2(iPad mini with Retina Display)

armv7s: iPhone5|iPhone5C|iPad4(iPad with Retina Display)

armv7: iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4

armv6: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch(一般不需要去支持)

5.Mac处理器的指令集:

i386: iPhone4s~5
x86_64: iPhone5s~

详解:

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

模拟器32位处理器测试需要i386架构,
模拟器64位处理器测试需要x86_64架构,
真机32位处理器需要armv7,或者armv7s架构,
真机64位处理器需要arm64架构。

你可能感兴趣的:(iOS--Architectures设置)