转发: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 architectures
libBarCodeKit.a (for architecture armv7):current ar archive random library
libBarCodeKit.a (for architecture arm64):current ar archive random library
libBarCodeKit.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 architectures
DTRichTextEditor (for architecture armv7):current ar archive random library
DTRichTextEditor (for architecture armv7s):current ar archive random library
DTRichTextEditor (for architecture arm64):current ar archive random library
DTRichTextEditor (for architecture i386):current ar archive random library
DTRichTextEditor (for architecture x86_64):current ar archive random library

总结一下:苹果又在此迫使我们做出新选择:放弃对armv7s的支持,这一架构已经随着两代64位产品的出现而遭报销。不过作为一个组件开发人员我认为仍然应该包括armv7s然后让开发者去决定支不支持。

Xcode 6配置里定义${ARCHS_STANDARD}为armv7, arm64以及错误的更多相关文章

  1. 细聊 Cocoapods 与 Xcode 工程配置

    前言 文章比较长,所以在文章的开头我打算简单介绍一下这篇文章将要讲述的内容,读者可以选择通篇细度,也可以直接找到自己感兴趣的部分. 既然是谈 Cocoapods,那首先要搞明白它出现的背景.有经验的开 ...

  2. Xcode SVN配置

    Xcode SVN配置 编辑 ~/.subversion/config 文件  注意:假设".subversion"文件夹不存在.请执行"svn status" ...

  3. 在Xcode 6 beta里编译Cocos2d-x iOS项目时失败

    转载 在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwr ...

  4. 为什么在Spring的配置里,最好不要配置xsd文件的版本号

    为什么dubbo启动没有问题? 原文链接:http://www.tuicool.com/articles/YRn67zM 这篇blog源于一个疑问: 我们公司使了阿里的dubbo,但是阿里的开源网站h ...

  5. Spring XML配置里的Bean自动装配

    Spring自动装配 这段是我们之前编写的代码,代码中我们使用了P命名空间 并且使用手动装配的方式将car <bean id="address" class="cn ...

  6. 为什么不要在Spring的配置里,配置上XSD的版本号

    为什么不要在Spring的配置里,配置上XSD的版本号?因为如果没有配置版本号,取的就是当前jar里的XSD文件,减少了各种风险.而且这样约定大于配置的方式很优雅.

  7. windows8.1中组件服务DCOM配置里属性灰色不可修改的解决办法

    由于电脑升级,更换成了windows8.1的64位操作系统,今天遇到组件服务中DCOM配置里IIS Admin Service属性呈现灰色,不能修改. 查找官方文档,原来这是win8.1 x64的安全 ...

  8. XCODE中配置使用boost

    1.  开发平台:os x 2.  boost安装目录: 3.  xcode中配置:    4. 测试  

  9. xcode工程配置绝对路径与相对路径

    1.问题描述 一般我们在xcode里面配置包含工程目录下头文件的时候,都要关联着相对路径和绝对路径,如果只是自己用这个项目,用绝对路径的问题不大,但是如果你把工程发给别人,别人就要在改这个绝对路径,这 ...

随机推荐

  1. shell中exec解析

    参考:<linux命令.编辑器与shell编程> <unix环境高级编程> exec和source都属于bash内部命令(builtins commands),在bash下输入 ...

  2. sql关键字过滤C#方法

    /// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...

  3. UML类图图示样例

    下图来自<大话设计模式>一书:

  4. sql server 数据库导出表里所有数据成insert 语句

    有时候,我们想把数据库的某张表里的所有数据导入到另外一个数据库或另外一台计算机上的数据库,对于sql server有这样的一种方法 下面我以sql server 2008 R2,数据库是Northwi ...

  5. 转 oracle 如何停下oracle 服务

    设置SET ORACLE_SID=ORCL ORCL--实例名称 --停止oracle实例服务 C:\Users\Administrator>net stop oracleserviceORCl ...

  6. ActionResult的其它返回值

    我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Inde ...

  7. 转载:数位DP模板

    // pos = 当前处理的位置(一般从高位到低位) 2 // pre = 上一个位的数字(更高的那一位) 3 // status = 要达到的状态,如果为1则可以认为找到了答案,到时候用来返回, 4 ...

  8. ReactiveX序列——RxSwift 浅析

      ReactiveX序列——RxSwift Swift是苹果公司新推出的一门现代化的编程语言,并且将其开源出来了,Swift具有很多的优点,这也使得这门语言推出的短时间引起了很大反应的原因,在最近的 ...

  9. java 数据结构 队列的实现

    java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...

  10. Python -- OOP高级 -- 定制类

    __str__ 和 __repr__ :实例对象直接显示字符串 class Student: def __init__(self, name): self.name = name def __str_ ...