Xcode中指令集相关选项(Build Setting中)

(1)Architectures

Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies more than one architecture, the generated binary may contain object code for each of the specified architectures.

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

(2)Valid Architectures

Space-separated list of identifiers. Specifies the architectures for which the binary may be built. During the build, this list is intersected with the value of ARCHS build setting; the resulting list specifies the architectures the binary can run on. If the resulting architecture list is empty, the target generates no binary.

限制可能被支持的指令集的范围,也就是Xcode编译出来的二进制包类型最终从这些类型产生,而编译出哪种指令集的包,将由Architectures与Valid Architectures(因此这个不能为空)的交集来确定,例如:
比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。

再比如:将Architectures支持arm指令集设置为:armv7,armv7s,对应的Valid Architectures的支持的指令集设置为:armv7s,arm64,那么此时,XCode生成二进制包所支持的指令集只有armv7s

在Xcode6.1.1里的 Valid Architectures  设置里, 默认为 Standard architectures(armv7,arm64),如果你想改的话,自己在other中更改。

原因解释如下: 
使用 standard architectures (including 64-bit)(armv7,arm64) 参数,则打的包里面有32位、64位两份代码,在iPhone5s( iPhone5s的cpu是64位的 )下,会首选运行64位代码包, 其余的iPhone( 其余iPhone都是32位的,iPhone5c也是32位 ),只能运行32位包,但是包含两种架构的代码包,只有运行在ios6,ios7系统上。 
这也就是说,这种打包方式,对手机几乎没要求,但是对系统有要求,即ios6以上。 
而使用 standard architectures (armv7,armv7s) 参数, 则打的包里只有32位代码, iPhone5s的cpu是64位,但是可以兼容32位代码,即可以运行32位代码。但是这会降低iPhone5s的性能。 其余的iPhone对32位代码包更没问题, 而32位代码包,对系统也几乎也没什么限制。 
所以总结如下:

要发挥iPhone5s的64位性能,就要包含64位包,那么系统最低要求为ios6。 如果要兼容ios5以及更低的系统,只能打32位的包,系统都能通用,但是会丧失iPhone5s的性能。

(3)Build Active Architecture Only

指定是否只对当前连接设备所支持的指令集编译

当其值设置为YES,这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本,而设置为no时,会编译所有的版本。 编译出的版本是向下兼容的,连接的设备的指令集匹配是由高到低(arm64 > armv7s > armv7)依次匹配的。比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。  所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。

1)

Architectures:  armv7, armv7s, arm64
ValidArchitectures:  armv6, armv7s, arm64
生成二进制包支持的指令集: arm64

2)

Architectures: armv6, armv7, armv7s
Valid Architectures:  armv6, armv7s, arm64
生成二进制包支持的指令集: armv7s

3)

Architectures: armv7, armv7s, arm64
Valid Architectures: armv7,armv7s

这种情况是报错的,因为允许使用指令集中没有arm64。

注:如果你对ipa安装包大小有要求,可以减少安装包的指令集的数量,这样就可以尽可能的减少包的大小。当然这样做会使部分设备出现性能损失,当然在普通应用中这点体现几乎感觉不到,至少不会威胁到用户体检。

Xcode中指令集相关选项相关推荐

  1. xCode中工程相关的一些处理:一个工程包含多个Target的用途和使用方法【转】...

    [转自:http://www.cocoachina.com/macdev/cocoa/2010/0120/347.html] 对于target,Apple的官方解释是这样的:" Target ...

  2. 在Xcode 中如何打包测试版 给测试工程师使用

    在Xcode 中如何打包测试版 给测试工程师使用 1>创建发布证书: iOS distrution cer 2>创建测试描述文件: AdHoc provisioning file 测试描述 ...

  3. 在Xcode中使用Git进行源码版本控制

      本文翻译自Understanding Git Source Control in Xcode (译者myShire)欢迎您加入我们的翻译小组. 在应用程序开发过程中,很重要的一部分工作就是如何进行 ...

  4. Xcode中的Info.plist字段列表详解

    Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.pli ...

  5. 第四组视频:在bash脚本中使用脚本选项

    马哥教育(http://www.magedu.com)在bash脚本中使用脚本选项.本视频是我们上课过程的实际记录.下载地址:    http://down.51cto.com/data/414002 ...

  6. iOS开发OC基础:Xcode中常见英文总结,OC常见英文错误

    在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思.所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示.多练习,就肯定能基本掌握 ...

  7. Bash中的shopt选项

    Bash中的shopt选项 http://blog.chinaunix.net/uid-20587169-id-1919110.html shopt命令用于显示和设置shell中的行为选项,通过这些选 ...

  8. Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块...

    Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...

  9. python缩进说法_【多选题】关于Python程序中与“缩进”有关的说法中,以下选项中错误的是()。...

    问题:[多选题]关于Python程序中与"缩进"有关的说法中,以下选项中错误的是(). 更多相关问题 因方某将赵某打伤,方某住所地的市劳动教养委员会对方某作出劳动教养2年的决定,并 ...

最新文章

  1. Android如何防止apk程序被反编译
  2. 270亿参数、刷榜CLUE,阿里达摩院发布最大中文预训练语言模型PLUG(开放测试)...
  3. JS实现表格列宽拖动
  4. Spring-Aop-XML实现
  5. 利用Struts拦截器限制上传图片的格式和大小
  6. Struts1 中的 global-forward
  7. java 兔子生仔问题
  8. php yii 海报,php – 找不到Yii2主题集成图像
  9. c#中关于delegate、委托、事件之间的联系、关系
  10. 数据集查找神器!100个大型机器学习数据集都汇总在这了 | 资源
  11. 配置eclipse编写html/js/css/jsp/java时自动提示
  12. Eclipse IDE的安装与配置
  13. 基于python的学生管理系统的设计开题报告_学生信息管理系统_毕业设计论文_开题报告...
  14. 周立功USBCAN资料分享
  15. python爬取二手房信息_使用Scrapy爬取链家二手房信息
  16. javascript音乐播放器
  17. 【Python】Pandas实用技能,数据筛选query函数详细介绍
  18. 前端基础知识学习之-ShadowDOMLightDOM
  19. 在github上写自己的博客
  20. Springboot2.0集成阿里云RocketMQ

热门文章

  1. 狗窝里的小日子- 6 ...
  2. linux7 配置mysql5.7字符集编码
  3. 详解HashMap数据结构实现
  4. HTML5 SVG
  5. 15_采用Pull解析器解析和生成XML内容
  6. CentOS 7 防火墙操作
  7. 扎实的基础是成功的法宝
  8. XCode10 swift4.2 适配遇到的坑
  9. PIX525故障一例,求解
  10. Linux 关闭服务后 鼠标 键盘用不了