iOS11后32位应用升级

今天接受了一个改造旧项目的任务,据说项目唯独在iOS11上无法运行。这很容易就让我们想到与最近苹果iOS11放弃支持32位应用的事件有关。确实我在平时开发的项目中也没怎么涉及这个问题,这次在升级应用支持64位的过程中还是遇到了些问题,所以在这里总结一下,也许还会有同行的朋友遇到。

一、iOS11停止支持32位的来由

苹果于2013年9月推出了iPhone 5S新手机,采用的全新A7处理器其最大特色就是支持64位运算。64位A7处理器的使用意味着iPhone性能会大有提高,性能和速度更加出色;而要到达到这样的性能,开发者就要开发64位的应用了。因为即使64位的处理器再出色,如果还是安装32位的应用,那么64位处理的性能也不能发挥出来。

2018年1月1日开始,苹果在iOS 11系统上停止了32位应用程序的服务支持,使用iOS11系统的用户将无法再在Appstore中搜索到32位应用。同时32位的应用不顺应趋势也会停止继续开发,所以iPhone5s以下的机型也都面临着App停止更新的情况,因为从iPhone5s之后的iOS设备才是64位设备,而iPhone5以下都是32位设备,。

二、了解iOS的CPU架构

我们说到了32位和64位的处理器,它们本质的区别还是在于,64位多出2个寄存器,而这两个寄存器在运行32位应用的时候是关闭的,只有在运行64位应用的时候才会激活,才会用上。

这个区别对我们开发产生的影响在于,如果我们在项目中设置了支持不同的CPU架构,那么我们使用的静态库,动态库、以及打包的大小都会受到影响。关于在Xcode中设置不同CPU架构的支持可以参考下另一篇文章:(https://www.jianshu.com/p/441caa1138af)

三、升级32位应用支持64位

其实升级应用支持64位并不复杂,主要有以下两个步骤:

1.修改ARchitectures,设置项目支持64位CPU

我们在Xcode中选择将要设置的target,然后打开build setting, 可以看到有关指令集设置的Architectures选项。 修改Vaild Architectures选项,增加arm64支持。

屏幕快照 2018-01-05 下午7.17.44.png
2.更换各个平台的SDK

在经过上面的修改之后,我们的应用会编译失败。因为我们设置了项目需要支持arm64的架构,但是代码中使用的各个平台的SDK静态库还是只支持32位的。这就需要我们耐心的一个个更换了。这里有三个问题可能我们会遇到:

  1. Xcode提示Build failed,但是没有明显的报错 解决:打开Xcode左侧导航栏选择最后一项,我们会在这里看到编译错误。
  2. 编译报错Undefined symbols for architecture x86_64 解决:这就是我们不支持64位的sdk报的错,我们可以从这里找到它并将其更换
  3. 如何判断一个SDK静态库是否支持64位? 解决:我们找到这个静态库文件(如百度分析的静态库),使用命令行:lipo -info libBaiduMobStat.a ,我们就可以看到其所支持的类型

四、其他可能遇到的问题

1.XIB报错:compiling IB documents for earlier than ios 7 is no longer supported 我们修改的这类项目通常也是比较旧的代码了,如果使用最新的Xcode打开我们可能会遇到上面的报错。我们可以进行如下的设置来修改这个错误。如果我们在Target->Deployment info ->Deployment Target 设置的是8.0的话,我们对于每个XIB文件也要做如下的修改:

屏幕快照 2018-01-05 下午7.45.49.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT米粉

Apple 系统正式版要发布了,有你期待的功能吗?

Apple操作系统每年例行升级时间到,每年都说的那么牛B,不管是IOS还是Mac os功能已经曝光的差不多了,你需要的功能有出现吗? 每年对系统的升级,其实还是...

34160
来自专栏C语言及其他语言

【优秀题解】蓝桥杯ACM输入输出问题的

背景,对于参加蓝桥杯ACM竞赛的同学,输入输出很常见, 咱们网站(www.dotcpp.com)1562这个题对于这道题目 用cin,cout来进行输入输出的操...

29450
来自专栏IT米粉

React Native 常见问题

应该是最近有进行升级导致,0.29之前的版本文件是MainActivity.java,0.29之后是两个文件MainActivity.java 和MainApp...

41790
来自专栏MixLab科技+设计实验室

关于编程语言OC之9个基础知识点

这是《给自己的一份自学IOS开发的学习清单》中的《关于编程语言OC》读书笔记系列的第1篇。 入门务必记住这9点。 1、MAC操作系统上的整个开发环境成为Coco...

39880
来自专栏MixLab科技+设计实验室

App之应用图标标记

以下为正文: ? 1、概念 应用图标标记,称为Badge App Icon。 Badge,徽章,具象来说, 就是佩带在身上用来表示身份、职业的标志。 它有着悠久...

75870
来自专栏罗超频道

智能手机操作系统混战:看似扑朔迷离实则大局已定

基于昨天的Super快报,Super昨晚赶制了一篇博文(弄到2点早晨飞机误点了),明天虎嗅会发。因今天在北京出差,没时间整理Super快报,就先发这篇文...

297120
来自专栏向前进

【笔记】移动端H5数字键盘input type=number的处理(IOS和Android)

在Vue中的项目,基于VUX-UI开发,一个常见的需求: 1、金额输入框 2、弹出数字键盘 3、仅支持输入两位小数,限制最大11位数,不允许0开头   后续...

5.7K60
来自专栏MixLab科技+设计实验室

给自己的一份自学IOS开发的学习清单

1、关于工具Xcode: -熟悉xcode的界面及开发流程。 -学习资料: Xcode7互动教程app -学习方法: 使用手指学...

36670
来自专栏服务端技术杂谈

【死磕iOS】处理不等高TableViewCell的小花招

地址://www.jianshu.com/p/a0342ee86431 嗨大家,好久不见~ 今天来和大家一起聊聊处理不等高TableViewCell的那些小花招...

38580
来自专栏罗超频道

1万元的iPhone X太贵买不起?至少中国富人穷人都买得起

iPhone X发布已有2天,在中国收到的评论呈现出前所未有的两极分化。 好的给予了溢美之词: “苹果 iPhone 发布会超全记录:iPhone X 技术颠...

38870

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励