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里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大,但是如果你把工程发给别人,别人就要在改这个绝对路径,这 ...
随机推荐
- Zabbix3.0 客户端搭建
zabbix客户端安装 我们这边使用编译安装 软件包版本 zabbix-3.0.3.tar.gz 添加用户组 #groupadd zabbix #useradd -s /sbin/nologin -g ...
- C++11 半同步半异步线程池的实现
#include <list> #include <mutex> #include <thread> #include <condition_variable ...
- String s = new String("aa") 创建了几个对象?
1 最近几个同学面试的时候出现了这样一个问题 刚听到这个题目的时候的确是不知所措: 经过网上的查找和自己的理解来解释一下这个题目的答案 答案是: 为什么呢??? 1 实现我们都知道创建实例有两种方法 ...
- 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2012)
1.如果格林威治时间时间是date类型.(这种格式最简单) SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd") ...
- iOS 判断奇偶数
if (_bigUrlArray.count%2==0) {//如果是偶数 a = i*(_bigUrlArray.count/count);//每个线程图片初始数 b = (i+1)*(_bigUr ...
- php 图片压缩处理
<?php require dirname(__FILE__).'/../includes/common.inc.php'; $_clean = array(); $_info = array( ...
- javaweb 国际化
国际化又称为 i18n:internationalization 软件实现国际化,需具备哪些特征:对于程序中固定使用的文本元素,例如菜单栏.导航条等中使用的文本元素.或错误提示信息,状态信息等,需要根 ...
- HDU 1540<线段树,区间并>
题目连接 参考 题意: 维护各个点的连续的最大连续长度. 思路: 主要是维护一个区间的三个变量ll,f[i].l为起点向右的最大连续 长度,rl:f[i].r为起点向左的最大连续长度,ml:[l,r] ...
- 编辑距离算法详解:Levenshtein Distance算法
算法基本原理:假设我们可以使用d[ i , j ]个步骤(可以使用一个二维数组保存这个值),表示将串s[ 1…i ] 转换为 串t [ 1…j ]所需要的最少步骤个数,那么,在最基本的情况下,即在i等 ...
- hdu_4897_Little Devil I(树链剖分)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4897 题意:有三种操作,1是在树上的两个节点之间的路径改变当前的颜色,2是改变树上有且只有一个端点在u ...