最近一次的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. 哈希-Snowflake Snow Snowflakes 分类: POJ 哈希 2015-08-06 20:53 2人阅读 评论(0) 收藏

    Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 34762 Accepted: ...

  2. A simple problem 分类: 哈希 HDU 2015-08-06 08:06 1人阅读 评论(0) 收藏

    A simple problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...

  3. Maya Calendar 分类: POJ 2015-06-11 21:44 12人阅读 评论(0) 收藏

    Maya Calendar Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 70016   Accepted: 21547 D ...

  4. java提高篇---Iterator

    迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...

  5. byte,bitmap,image互转

    /// <summary> /// 将图片Image转换成Byte[] /// </summary> /// <param name="Image"& ...

  6. Jquery easyui 教程

            Jquery easyui教程                 目  录 1基本拖放... 4 2构建购物车型拖放... 5 3创建课程表... 8 4菜单和按钮Menu and Bu ...

  7. MySQL的存储过程1

    来源:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html MySQL的存储过程 2. 关于MySQL的存储过程存储过程是数据库存储的一个重要的功能 ...

  8. Linux Shell脚本面试25问

    Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件( ...

  9. 关于group by 两个或以上条件的分析

    关于group by 两个或以上条件的分析     原文地址:http://uule.iteye.com/blog/1569262 博客分类: 数据库   首先group by 的简单说明: grou ...

  10. TCP服务器不回复SYN的问题

    个人问题发生环境: 1.TCP服务器是虚拟机,IP地址是192.168.8.12. 2.TCP客户端是宿主机,IP地址是192.168.8.11. 3.从宿主机(192.168.8.11)上启动Soc ...