升级xcode10.2,swift库兼容性问题

最近项目频频被拒,也是心情烦躁,最新的被拒理由除了老生常谈的5.2.1,就是运行在12.2系统ipad上布局错乱的问题了,同样涉及到了swift版本迁移

你们也知道,17-18年P2P频频暴雷,不可避免的,我们做的小额贷款类app也告一段落,从18年9月份便开启了使用swift开发医美的生涯,号称集团19年重点项目,绕不开的圈圈依旧是没有资质(目前)---心累!!!
本项目纯swift开发,当然也用到了一些OC的三方库,比如SDWebimage、MBProgressHud、环信、支付宝、微信等,当然还有一些半野生的cocoapods集成的git库,本文就来介绍,升级xcode版本遇到的swift版本库兼容性问题

正题

苹果的反馈是app运行在最新的ios12.2系统ipad上布局错乱,没办法,只能将ipad升级到12.2,运行~~~提示需要将xcode升级到10.2(当前10.1),事实上10.2也是最近刚出的,好吧,我升级,然后又遇见了10.2的xcode需要10.14.4的系统版本支持,继续升级(这里说下,升级mac os 10.14.4遇到了一些问题,意思是说文件不完整或者损坏,删除重新更新),一切准备妥当之后运行项目!
不负众望!!!先来个警告先!!!

swift版本冲突.png

意思是当前cocoapods集成的EZSwiftExtensions以及DGElasticPullToRefresh这两个库支持的是swift3.x,而我们的xcode(10.2)支持的swift版本如下:

xcode10.2支持的swift版本.png

说人话就是,这两个库过时了,不能用在xcode10.2上!
ok,打开我的podfile文件看看

cd 项目根目录
open -e podfile


podfile中的库.jpeg

目前来说,只有这两个库在xcode10.2上有问题,先改他俩
首先我们去git上查看这两个库是否有swift4的支持

pod search  EZSwiftExtensions


WechatIMG20103.jpeg

我们发现,项目中使用的是1.11版本,此版本库最新版本是2.0,复制链接去git上看看,这个2.0新版是否支持swift4
WechatIMG20128.jpeg

excuse me ?我项目中好多布局用到了这个库,顿时懵逼,点击Release看看
Release.jpeg

Release_detail.jpg
2.0版本支持swift4,顿时心情舒畅了好多,所以提醒各位,在cocoapods集成的时候一定要再三思量,此库是否会有人持续维护!!!

同样的道理pod 搜索DGElasticPullToRefresh,发现此库没有继续维护,最高支持3.0,幸好项目中用到的比较少,索性直接删除了
pod 更新如下


替换或删除不支持的swift库.jpeg
执行:

pod install


deleteAndUpdate.jpeg

shift+command+option+k,运行项目,报错如下:
swift_version_unsupported.png
修复此库的问题如下(选择swift4):
WechatIMG20147.png
再次运行
WechatIMG20150.jpeg
WechatIMG20152.jpeg

此问题看这里(https://blog.csdn.net/weiwandaixu_/article/details/88842491),
更新pod中的HanyJson到最新版

HanyJson_5.jpeg

HanyJson_4.jpeg

执行

pod install


会显示

Installing HandyJSON 5.0.0-beta.1 (was 4.2.1 and source changed to `https://github.com/CocoaPods/Specs.git` from `https://github.com/cocoapods/specs.git`)


再次运行项目报了一些用到DGElasticPullToRefresh库的错误,修改过来,继续运行

某些删除的库找不到错误.png

意思是项目中有我们没有删除干净的DGElasticPullToRefresh余党!!!

我们搜索这个库试试


屏幕快照 2019-04-04 下午1.43.19.png

发现podfile文件中还是有这个库,什么情况???
打开podfile文件
发现还真有,删除


WechatIMG20158.jpeg

执行

pod install
pod repo update


至此podfile中的没删干净的DGElasticPullToRefresh删完了,然后再删除.xcodeproj文件中没删干净的DGElasticPullToRefresh

找到项目目录中的. xcodeproj文件->显示包内容->双击打开project.pbxproj文件->command+f->输入DGElasticPullToRefresh->删除所有搜索到的DGElasticPullToRefresh->done保存

WechatIMG20159.jpeg
WechatIMG20160.jpeg

然后执行
shift+command+k && shift+command+option+k
运行项目
build success!

至此,一些不兼容的swift3.x问题得到解决(其他库如有相似问题,按照上面步骤解决就好了)

项目能运行了,可是我运行在自己的ios12.2系统ipad上布局并没有错乱啊,苹果审核人员是在跟我开玩笑?他们遇见了我十年都难复现的问题?运行了十几遍布局并无问题啊~啊~啊,就在我块崩溃的时候bug重现了,将ipad横屏放置运行项目,果真错乱了,才发现我犯了一个低级错误,如下:

general_portrait.jpeg
info_portrait.jpeg

除了general中设置只支持竖屏之外,info.plist中也应该做此单选portrait设置,如图删除相应的模块就好了,至此,布局错乱的问题得到解决!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,196评论 4 61
  • 学习 补读昨日阅读和今日阅读 完成知识管理训练营的学习 生活 还了借了很久的书,逾期的钱都够买本书啦,后期尽量不带...
    灼灼2015阅读 1,027评论 0 0
  • 这篇日志上周五的时候,就想写了,没有时间记录下来,都是周五发生的事情吧,有三个场景。 场景一:我去一个加工厂去实地...
    OO碰到OO阅读 2,854评论 0 0