Xcode 6配置里定义${ARCHS_STANDARD}为armv7, arm64以及错误
转发:http://www.cocoachina.com/ios/20141013/9897.html
最近一次的Xcode 6更新默认不再支持arm7s架构,究竟是要废除不用呢还是仅仅只是一个疏忽?
目前的Xcode 6配置里定义${ARCHS_STANDARD}为armv7, arm64,当然这个定义前提是它会一再要求你删除掉你原本设定的构建架构。如果你选择按它所做的,你会发现你再也不能编译任何armv7s架构的东西。
当前iPhone5的A6和iPad4的A6X两款CPU都是armv7s架构,而之后在iPhone 5S、iPad Air以及iPad Mini Retina采用的A7处理器则是属于64位的arm64架构。
之 前苹果为Xcode提供了armv7s架构支持的时候使得很多采用第三方库的开发者感到困扰,比如想使用Google Analytics,为了构建一个App就要求链接器所链接的所有静态库都必须支持CPU的架构。当第三方库竞相更新以支持最新架构的同时开发者们不得令 自己的App停止了对armv7s的支持。
这倒不是什么大问题,虽然或多或少存在一些瑕疵,A6一样可以运行基于armv7架构的代码。会让人感到不爽的可能就是某天你的Xcode突然无法构建代码然后告诉你一个关于丢失某架构链接库的错误,其实不过就是因为你升级了你的Xcode而已。

想要消灭这个错误轻而易举。作为一个开发者你应该知道怎么打开Xcode的recommendation然后删除掉你在架构设置里写过的东西。如果设置显示为粗体,可用"Command+Backspace"组合键使其恢复为项目范围内的设置。

如果你是提供组件而非开发的话,需要的方案可能会有所不同。你会让开发者自行决定是否支持armv7s,因此你需要在你的静态库和框架内提供对armv7s架构的支持。
而 后开发者的链接器会选择出应用所需的架构,你会发现在"Build Active Architecture Only"设置为No的情况下会好有好几种架构被囊括在内。调试版本的构建默认这一设置为Yes而且只会支持当期设备或者模拟器的架构,而发行版本则默认 该项为No而且支持所有处理器架构。
在静态库构建日志里面你会发现一行有关所有库及架构的,紧随其后的一行则是关于将所有独立库整合进一个"硕大"的通用库中去的。

另一查看某一架构是否支持的方法是使用file命令:
|
1
2
3
4
5
|
file libBarCodeKit.a libBarCodeKit.a: Mach-O universal binary with 3 architectureslibBarCodeKit.a (for architecture armv7):current ar archive random librarylibBarCodeKit.a (for architecture arm64):current ar archive random librarylibBarCodeKit.a (for architecture armv7s):current ar archive random library |
这个库支持了目前所有移动架构。如果你构建的是包括了模拟器架构的可运行版本的静态库或者静态架构的话,那么应该是会像下面这样:
|
1
2
3
4
5
6
7
|
file DTRichTextEditor DTRichTextEditor: Mach-O universal binary with 5 architecturesDTRichTextEditor (for architecture armv7):current ar archive random libraryDTRichTextEditor (for architecture armv7s):current ar archive random libraryDTRichTextEditor (for architecture arm64):current ar archive random libraryDTRichTextEditor (for architecture i386):current ar archive random libraryDTRichTextEditor (for architecture x86_64):current ar archive random library |
总结一下:苹果又在此迫使我们做出新选择:放弃对armv7s的支持,这一架构已经随着两代64位产品的出现而遭报销。不过作为一个组件开发人员我认为仍然应该包括armv7s然后让开发者去决定支不支持。
Xcode 6配置里定义${ARCHS_STANDARD}为armv7, arm64以及错误的更多相关文章
- 细聊 Cocoapods 与 Xcode 工程配置
前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...
- Xcode SVN配置
Xcode SVN配置 编辑 ~/.subversion/config 文件 注意:假设".subversion"文件夹不存在.请执行"svn status" ...
- 在Xcode 6 beta里编译Cocos2d-x iOS项目时失败
转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwr ...
- 为什么在Spring的配置里,最好不要配置xsd文件的版本号
为什么dubbo启动没有问题? 原文链接:http://www.tuicool.com/articles/YRn67zM 这篇blog源于一个疑问: 我们公司使了阿里的dubbo,但是阿里的开源网站h ...
- Spring XML配置里的Bean自动装配
Spring自动装配 这段是我们之前编写的代码,代码中我们使用了P命名空间 并且使用手动装配的方式将car <bean id="address" class="cn ...
- 为什么不要在Spring的配置里,配置上XSD的版本号
为什么不要在Spring的配置里,配置上XSD的版本号?因为如果没有配置版本号,取的就是当前jar里的XSD文件,减少了各种风险.而且这样约定大于配置的方式很优雅.
- windows8.1中组件服务DCOM配置里属性灰色不可修改的解决办法
由于电脑升级,更换成了windows8.1的64位操作系统,今天遇到组件服务中DCOM配置里IIS Admin Service属性呈现灰色,不能修改. 查找官方文档,原来这是win8.1 x64的安全 ...
- XCODE中配置使用boost
1. 开发平台:os x 2. boost安装目录: 3. xcode中配置: 4. 测试
- xcode工程配置绝对路径与相对路径
1.问题描述 一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大,但是如果你把工程发给别人,别人就要在改这个绝对路径,这 ...
随机推荐
- shell脚本字符串截取
假设有变量 var=http://www.google.com/test.htm 一 # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,# 号是运算符,*/ ...
- Shell学习笔记 ——第一天
1.程序第一行 指定执行Shell的程序 #!/bin/sh #!用来告诉系统它后面的参数是用来执行该文件的程序 2.在控制台输出信息 echo "Hello Shell" #! ...
- Content-Type小解
在Http请求中,经常用Content-Type来定义网络文件的类型和网页的编码,在发送请求,返回数据时决定浏览器将以什么形式,什么编码来读取此文件. 常用类型: text 文本类型 1.text/p ...
- 【SQL】SQL
SQL基础 本文参照:http://www.w3school.com.cn/sql/ SQL 结构化查询语言(Structured Query Language). 对于大小写不敏感. SQL 使用单 ...
- CSS Day04 css核心基础
1.在HTML中引入CSS的方法 (1)行内式 行内式即在标记的style属性中设定CSS样式,这种方式本质上没有体现出CSS的优势,因此不推荐使用. 例如: <h1 style=“colo ...
- OC与Swift桥接问题
入职新公司后,接手了一个Swift项目.项目质量已经吐槽过一次就略过了,感兴趣的可以看我之前的博客.当然我之前对Swift只是略有了解,略到只看过没写过的程度,主要语言还是OC.不过嘛其实语言都是相通 ...
- poi设置excel表格边框、字体等
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...
- openwrt+ndp+ndppd+radvd+dhcpv6,ipv6穿透配置指南
要用ipv6首先你的openwrt路由内核必须已经支持ipv6,且能安装相关软件! 首先说说最简单的ndp手工ipv6穿透,很简单,看代码详解: 环境: wan口 eth1 lan口 br-lan w ...
- LoadRunner 技巧之协议分析(五)
在做性能测试的时候,协议分析是困扰初学者的难题,选择错误的协议会导致Virtual User Generator 录制不到脚本:或录制的脚本不完整,有些应用可能需要选择多个协议才能完整的记录 客户端与 ...
- GameUnity 2.0 文档(四) 网格+四叉树 最优碰撞检测
在写之前,必须对 前一篇文档补充一下. Camera2DAngle类是 摄像机旋转 2d人物360度,PlayerMove是人物移动. 这两个类 都可以 360 ° 场景旋转人物也跟着旋转. 但不能 ...