博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS项目更新之升级Xcode7 & iOS9
阅读量:5116 次
发布时间:2019-06-13

本文共 2731 字,大约阅读时间需要 9 分钟。

 

前言

Apple 的WWDC所发布内容在给大家带来惊喜之际,给各位iOS开发的同仁却也带来了不同程度的麻烦。首先不讲新功能,就单指原来老版本的项目升级、代码升级,就是一堆问题,而且是不得不面临的问题。下面就跟着笔者一起来回顾下,此次在项目升级过程中,所遇到的各个问题点,以及解决方案,与各位已经做过和正在做iOS代码升级的同仁共勉,也给各位将要做Xcode 7和iOS9兼容的同仁以参考。

开发环境安装

原本运行得好好的项目,要升级Xcode7,首先就得安装Xcode7,具体的可以从开发者官网下载(目前最新版本是Xcode_7_GM_seed).下载好后,就双击下载好的dmg包,当然,前提还是需要我们的Mac环境升级到Mac OS 10.10.4+(图1.1),就可以打开Xcode安装镜像,如图1.2:

图1.1 Mac OS 更新示意图

图1.2 Xcode 7 GM安装

接下来,我们只要将图1.1所示的Xcode拖动到指定文件夹,即可完成安装,接下来,我们只要双击运行即可。

 

开发环境运行

各位可能会觉得,笔者在此还要讲开发环境的运行,是不是多此一举。其实并非如此,综合笔者这几年iOS开发经验的总结,运行新版本,特别是测试版本的Xcode是一个需要格外小心的事情,讲起来都是血泪史。

在运行Beta 版本Xcode时,我们需要特别注意以下几个方面:

- 在运行Beta版本Xcode前,务必要退出原来正式版本Xcode(如Xcode 6.4)

- 在运行Beta版本Xcode时,务必要避免双击打开工程文件(也是为了避免新旧版本同时运行)。

- 如果要切换回原来版本时,一定要先退出Beta版本,而且尽可能将Xcode的缓存数据清除。

当然,可能在实际的过程中,还是会有不少朋友就这么干了,当然,如果我们App后续只需要使用新版本Xcode,自然是没有太大关系,只是对于还需要用旧版本来开发或者发布App的朋友,可能就会有点麻烦,可能在用旧版本编译App在运行的时候,就会出现各种诡异的现象(如打印信息明明是正常,App运行逻辑却不正常等)。这时,可能大家要考虑的就是把Xcode删除掉,重新来过,甚至是重装操作系统。当然,不知道是否有朋友有更好的方案。不过笔者是不再想经历这种事情了。

App 项目运行

待项目运行,首先会碰到的问题就是配置兼容,会出现如下错误

图2.1 BitCode 错误

当我们看到App编译报错的时候,首先想项目不兼容Xcode7,再仔细一看

ld: ‘/Volumes/MacintoshHD/…/AnimationDesk Universal/Sources/AnimaitonDesk Universal/Classes/Supporting Files/GoogleLibrary/libGoogleAnalyticsServices.a(TAGDataProvider.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

其中 ENABLE_BITCODE 吸引了我们的注意,看结合其它的描述信息,基本可以确定是我们使用的第三方静态库(.a)不支持BitCode,当然,我们对应就有如下两种方案来解决:

方法一:更新对应的第三方静态库(现在更新的静态库,基本都能支持BitCode)

方法二:可以将Xcode7默认开启的BitCode功能关闭,如图2.2所示

图2.2 关闭BitCode 操作示意图

当然,除了上面的问题外,当我们在添加Framework的时候,会发现此前导入的动态链接库(dylib)他部变成了红色,如图2.3所示,所幸的是,就算不替换成Xcode 7新的动态库文件(.tbd),仍然可以正常运行.

图2.3 动态链接库丢失示意图 

最后,部分App在编译的时候,可能还会收到如下报错,小编也遇到过一次

All interface orientations must be supported unless the app requires full screen.

看到这句提示,就是说App默认是有开启了多任务功能,而多任务功能是需要App支持所有方向,如果我们App是有需要支持多任务,则需要开启App对各个方向(上、下、左、右)的支持;如果App不需要开启多任务,则只需要将如下示意图的 requires full screen 勾选上就ok(如图2.4)。

图2.4 勾选 Requires full screen示意图

不出意外,接下来,App应该是能正常编译运行(小编的AnimationDesk Cloud接下来是可以正常运行),但紧接着,发生了更诡异的事情,以前的的网络访问,现在完全访问不通;大家也许会觉得这可能是服务器挂了,或是外网被墙了,小编最初也是这么想的,但事实上,服务器(从Safari)还是能照常被访问,只是App访问不了,于是后来联想到iOS9 WWDC讲到的网络数据传输安全部分,经过一翻折腾,最终,网络访问的部分也恢复了正常。

其实只要在App的Info.plist里面加入如下信息就可以

NSAppTransportSecurity
NSAllowsArbitraryLoads

添加成功后的示意图如下图(图2.4)

图2.4 添加Transport Security 示意图 

其它事项

可能还有部分朋友跟小编一样,有碰到另外一个现象,就是UITextView,无论怎么设置它的textColor显示的总会是黑色,小编已找到具体的原理,准确地讲,应该是Xcode的一个Bug。

当小编在App开发时,在Xib上面设置过UITextView的背景色(BackgroundColor)为非默认颜色(WhiteColor)时,UITextView的文字颜色(textColor)无论怎么设置,都将会是黑色,如果想要颜色值正常,可以在设置好文本后,再重设一次颜色即可正常。

转载于:https://www.cnblogs.com/feijietongti/p/5019139.html

你可能感兴趣的文章
linux的java安装目录
查看>>
mysql基本操作
查看>>
项目知识学习篇———PostgreSQL数据库
查看>>
HTML5元素整理
查看>>
变量 运算符笔记
查看>>
Android--打开指定程序(微博/微信/QQ等)
查看>>
RGB色彩空间和HSV色彩空间的理解
查看>>
牛的障碍Cow Steeplechase
查看>>
BZOJ2733: [HNOI2012]永无乡
查看>>
组态软件基础知识概述
查看>>
JAVA 多线程(一)
查看>>
Zookeeper选举算法原理
查看>>
嵌入式成长轨迹52 【Zigbee项目】【CC2430基础实验】【在PC用串口收数并发数】...
查看>>
函数随笔
查看>>
哈尔滨工程大学ACM预热赛(A,C,H,I)
查看>>
3月29日AM
查看>>
全局光照模型与Rendering Equation(全局光照的最为基础的核心理论) .
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
二叉树的遍历
查看>>
安装Boost
查看>>