最近项目频频被拒,也是心情烦躁,最新的被拒理由除了老生常谈的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遇到了一些问题,意思是说文件不完整或者损坏,删除重新更新),一切准备妥当之后运行项目!
不负众望!!!先来个警告先!!!
意思是当前cocoapods集成的EZSwiftExtensions以及DGElasticPullToRefresh这两个库支持的是swift3.x,而我们的xcode(10.2)支持的swift版本如下:
说人话就是,这两个库过时了,不能用在xcode10.2上!
ok,打开我的podfile文件看看
cd 项目根目录
open -e podfile
目前来说,只有这两个库在xcode10.2上有问题,先改他俩
首先我们去git上查看这两个库是否有swift4的支持
pod search EZSwiftExtensions
我们发现,项目中使用的是1.11版本,此版本库最新版本是2.0,复制链接去git上看看,这个2.0新版是否支持swift4
excuse me ?我项目中好多布局用到了这个库,顿时懵逼,点击Release看看
2.0版本支持swift4,顿时心情舒畅了好多,所以提醒各位,在cocoapods集成的时候一定要再三思量,此库是否会有人持续维护!!!
同样的道理pod 搜索DGElasticPullToRefresh,发现此库没有继续维护,最高支持3.0,幸好项目中用到的比较少,索性直接删除了
pod 更新如下
执行:
pod install
shift+command+option+k,运行项目,报错如下:
修复此库的问题如下(选择swift4):
再次运行
此问题看这里(https://blog.csdn.net/weiwandaixu_/article/details/88842491),
更新pod中的HanyJson到最新版
执行
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库的错误,修改过来,继续运行
意思是项目中有我们没有删除干净的DGElasticPullToRefresh余党!!!
我们搜索这个库试试
发现podfile文件中还是有这个库,什么情况???
打开podfile文件
发现还真有,删除
执行
pod install
pod repo update
至此podfile中的没删干净的DGElasticPullToRefresh删完了,然后再删除.xcodeproj文件中没删干净的DGElasticPullToRefresh
找到项目目录中的. xcodeproj文件->显示包内容->双击打开project.pbxproj文件->command+f->输入DGElasticPullToRefresh->删除所有搜索到的DGElasticPullToRefresh->done保存
然后执行
shift+command+k && shift+command+option+k
运行项目
build success!
至此,一些不兼容的swift3.x问题得到解决(其他库如有相似问题,按照上面步骤解决就好了)
项目能运行了,可是我运行在自己的ios12.2系统ipad上布局并没有错乱啊,苹果审核人员是在跟我开玩笑?他们遇见了我十年都难复现的问题?运行了十几遍布局并无问题啊~啊~啊,就在我块崩溃的时候bug重现了,将ipad横屏放置运行项目,果真错乱了,才发现我犯了一个低级错误,如下:
除了general中设置只支持竖屏之外,info.plist中也应该做此单选portrait设置,如图删除相应的模块就好了,至此,布局错乱的问题得到解决!