最近一次的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然后让开发者去决定支不支持

文章转自:http://www.cocoachina.com/ios/20141013/9897.html

iOS开发之Xcode 6更新默认不支持armv7s架构的更多相关文章

  1. iOS开发之 Xcode svn更新代码后,不能打开.xcodeproj,因为该项目文件不能被解析

    http://www.cfanz.cn/?c=article&a=read&id=41565 解决方法:    1.对.xcodeproj 文件右键,显示包内容 2.双击打开 proj ...

  2. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  3. iOS开发之Xcode常见错误

    一."file/file.h" file not found 如果遇到这种类型的问题报错,可以分为三部来解决,由简到复杂一步一步来,直到解决问题位置.1. 点击Xcode -> ...

  4. ios开发之xcode环境介绍

    作为一个刚入门ios开发的人来说,对于ios开发,对于xcode一切都是那么的陌生,那么我们如何开始我们的第一步呢?首先对开发的ide是必须要了解的,其实要对开发的语言要慢慢熟悉起来,今天我们先来熟悉 ...

  5. iOS开发之Xcode常用调试(Debug)技巧总结

    一.Xcode调试技巧之:NSLog 上面也提到了,在我们日常的开发过程中最常见的Debug方式就是打Log.而在OC语言中,打Log是采用NSLog方法.但是NSLog效率低下,具体原因可以看这篇博 ...

  6. 李洪强iOS开发之Xcode快捷键

    14个Xcode中常用的快捷键操作   在Xcode 6中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航.定位Bug以及新增应用特性都是极有效的. 当然,你戳进这篇文章的目的 ...

  7. iOS开发之Xcode 相对路径与绝对路径

    iOS开发之 相对路径与绝对路径 https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/Xcod ...

  8. iOS开发之 Xcode 5 下让你的应用在不同状态(debug, release)有不同的图标

    http://nickcheng.com/post/unique-icons-for-your-app-in-different-state-in-xcode5-debug-release 应用在发布 ...

  9. iOS开发之Xcode 如何使用API帮助

    内容转载自<iOS开发指南 2.6.2 如何使用API帮助> 对于一个初学者来说,学会在Xcode中使用API帮助文档是非常重要的.下面我们通过一个例子来介绍API帮助文档的用法.在编写H ...

随机推荐

  1. java程序 输入10个数字并求和

    课程作业: 模仿JavaAppArguments.java示例,编写编写一个程序,此程序从命令行接受多个数字,求和之后输出结果. 设计思想: 先从命令行读出数字,然后计算各个数字之和.求出结果. 流程 ...

  2. HDU 自动刷题机 Auto AC (轻轻松松进入HDU首页)

    前言: 在写这篇文章之前,首先感谢给我思路以及帮助过我的学长们 以下4篇博客都是学长原创,其中有很多有用的,值得学习的东西,希望能够帮到大家! 1.手把手教你用C++ 写ACM自动刷题神器(冲入HDU ...

  3. JAVA类访问URL

    URI uri = new URI("https://www.baidu.com/");        Desktop desktop = null;        if (Des ...

  4. XMLHttpRequest 2.0与FileReader接口的方法

    jsonpd的实现: var jsonp = function (options) { var url = options.url, params = options.params || {}, ca ...

  5. 循环嵌套,while循环,穷举迭代循环

    一.循环嵌套 简单的就是说,在一个for循环里嵌入多个小for循环. 其中,在打矩形.三角形和乘法口诀表之类的题目中,大for循环一般表示的是行数,其余的小for循环式每一行中的内容. 二.while ...

  6. 未完成的任务之:下载、安装、体验 Gentoo

    Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一. 如果你需要一个桌面 ...

  7. C语言第4天循环,流程控制。

    C语言第四天 :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { borde ...

  8. MSM8974 fastboot烧写软件

    fastboot烧写是在aboot阶段做的,所以空板没有完整烧写aboot及其boot sequence前的image是没法使用fastboot的.在手机开机状态下,执行:        adb re ...

  9. FastReport处理空日期

    [IIf([D.ApproveDate]==DateTime.MinValue,"",[D.ApproveDate])]

  10. Date、String和Timestamp类型转换

    1.String与Date类型转换: 1.获取当前系统时间: Date date1 = new Date();   //获取系统当前时间 Calendar cal = Calendar.getInst ...