关于iOS架构的问题
来源:互联网 发布:算法 布料裁剪问题 编辑:程序博客网 时间:2024/05/16 07:49
最近xcode升级了5.1版本,升级之后程序报关于要适配arm64机器的错。之前对xcode的参数配置,一直不是很了解,但实现先面对问题了,就调查了一下并解决它。
一个一个来吧。
Architectures
这代表,在这个项目里你想要Xcode编译的目标设备列表。
Valid Architectures
还不是太明确这个设置的意图,但是一般来说是不需要更改的,和Architectures一样就可以。
在Xcode5.1里的Valid Architectures 设置里, 默认为 Standard architectures(armv7,armv7s,arm64),如果你想改的话,自己在other中更改。
原因解释如下:
使用 standard architectures (including 64-bit)(armv7,armv7s,arm64) 参数,则打的包里面有32位、64位两份代码,
在iPhone5s(iPhone5s的cpu是64位的 )下,会首选运行64位代码包,
其余的iPhone(其余iPhone都是32位的,iPhone5c也是32位 ), 只能运行32位包,
但是包含两种架构的代码包,只有运行在ios6,ios7系统上。
这也就是说,这种打包方式,对手机几乎没啥要求,但是对系统有要求,即ios6以上。
而使用 standard architectures (armv7,armv7s) 参数, 则打的包里只有32位代码, iPhone5s的cpu是64位,但是可以兼容32位代码,即可以运行32位代码。但是这会降低iPhone5s的性能。 其余的iPhone对32位代码包更没问题, 而32位代码包,对系统也几乎也没什么限制。
所以总结如下:
要发挥iPhone5s的64位性能,就要包含64位包,那么系统最低要求为ios6。 如果要兼容ios5以及更低的系统,只能打32位的包,系统都能通用,但是会丧失iPhone5s的性能。
Build Active Architecture Only
这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
而设置为no时,会编译所有的版本。
这个是设备对应的architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5
arm64:iPhone5s,ipad air,ipad mini2
编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
所以,一般debug的时候可以选择设置为yes,release的时候要改为no,以适应不同设备。
通过对以上参数配置的了解,我解决了问题。
xcode5.1你的程序如果支持了arm64,那么你的所有静态库或者framework都要支持才可以,所以你要重新编译一遍。
以下是参考博客:
http://my.oschina.net/shede333/blog/172785
http://www.tuicool.com/articles/aeiaUr
http://www.cocoachina.com/applenews/devnews/2014/0527/8566.html
http://www.cocoachina.com/ask/questions/show/87781
http://blog.sina.com.cn/s/blog_45e2b66c0101bgep.html
http://www.cnblogs.com/hrhguanli/p/3916500.html
http://blog.csdn.net/wowxavi1/article/details/24335597
- 关于iOS架构的问题
- 关于iOS开发CPU架构的问题
- 关于iOS应用的架构
- 关于iOS 架构的文章
- 关于iOS的问题
- 转载的关于iOS架构的东西
- 关于iOS系统架构的理解
- 关于IOS面试的问题
- iOS关于多线程的问题
- 关于iOS的一些问题
- 关于iOS通话记录的问题
- iOS 关于webView的问题
- IOS中关于UIButton release的问题
- iOS指南系列:关于进度条的问题
- 关于IOS伪类:hover的问题
- ios 关于UITableView UITableViewCellAccessoryCheckmark 混乱的问题
- 关于iOS sqlite3_prepare_v2 调用失败的问题
- IOS 关于对象的复制问题
- 使用httpClient进行接口测试
- web应用开发基本的几个方面
- js中日期创建
- 执行nginx报错,找不到库./sbin/nginx: error while loading shared libraries: libcrypto.so.6: cannot open share
- iptables配置实例
- 关于iOS架构的问题
- CocoaPods 手把手五分钟教你制作自己的podspec文件
- 黑马程序员--'1封感人的来信—穷的只剩下梦想,1个黑马程序员的追梦之旅
- Convert Sorted Array to Binary Search Tree
- NAPI 技术在 Linux 网络驱动上的应用和完善
- google protocol buffer -2-.proto 定义规则
- android 后台附件下载
- LoadRunner权限不足无法添加新的liecense
- 在App_Code文件夹中同时使用两种语言编程的方法