最近項目頻頻被拒,也是心情煩躁,最新的被拒理由除了老生常談的5.2.1,就是運行在12.2系統(tǒng)ipad上布局錯亂的問題了,同樣涉及到了swift版本遷移
你們也知道,17-18年P(guān)2P頻頻暴雷,不可避免的,我們做的小額貸款類app也告一段落,從18年9月份便開啟了使用swift開發(fā)醫(yī)美的生涯,號稱集團19年重點項目,繞不開的圈圈依舊是沒有資質(zhì)(目前)---心累?。?!
本項目純swift開發(fā),當(dāng)然也用到了一些OC的三方庫,比如SDWebimage、MBProgressHud、環(huán)信、支付寶、微信等,當(dāng)然還有一些半野生的cocoapods集成的git庫,本文就來介紹,升級xcode版本遇到的swift版本庫兼容性問題
正題
蘋果的反饋是app運行在最新的ios12.2系統(tǒng)ipad上布局錯亂,沒辦法,只能將ipad升級到12.2,運行~~~提示需要將xcode升級到10.2(當(dāng)前10.1),事實上10.2也是最近剛出的,好吧,我升級,然后又遇見了10.2的xcode需要10.14.4的系統(tǒng)版本支持,繼續(xù)升級(這里說下,升級mac os 10.14.4遇到了一些問題,意思是說文件不完整或者損壞,刪除重新更新),一切準備妥當(dāng)之后運行項目!
不負眾望?。?!先來個警告先?。?!

意思是當(dāng)前cocoapods集成的EZSwiftExtensions以及DGElasticPullToRefresh這兩個庫支持的是swift3.x,而我們的xcode(10.2)支持的swift版本如下:

說人話就是,這兩個庫過時了,不能用在xcode10.2上!
ok,打開我的podfile文件看看
cd 項目根目錄
open -e podfile

目前來說,只有這兩個庫在xcode10.2上有問題,先改他倆
首先我們?nèi)it上查看這兩個庫是否有swift4的支持
pod search EZSwiftExtensions

我們發(fā)現(xiàn),項目中使用的是1.11版本,此版本庫最新版本是2.0,復(fù)制鏈接去git上看看,這個2.0新版是否支持swift4

excuse me ?我項目中好多布局用到了這個庫,頓時懵逼,點擊Release看看


2.0版本支持swift4,頓時心情舒暢了好多,所以提醒各位,在cocoapods集成的時候一定要再三思量,此庫是否會有人持續(xù)維護?。?!
同樣的道理pod 搜索DGElasticPullToRefresh,發(fā)現(xiàn)此庫沒有繼續(xù)維護,最高支持3.0,幸好項目中用到的比較少,索性直接刪除了
pod 更新如下

執(zhí)行:
pod install

shift+command+option+k,運行項目,報錯如下:

修復(fù)此庫的問題如下(選擇swift4):

再次運行


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


執(zhí)行
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庫的錯誤,修改過來,繼續(xù)運行

意思是項目中有我們沒有刪除干凈的DGElasticPullToRefresh余黨!??!
我們搜索這個庫試試

發(fā)現(xiàn)podfile文件中還是有這個庫,什么情況???
打開podfile文件
發(fā)現(xiàn)還真有,刪除

執(zhí)行
pod install
pod repo update
至此podfile中的沒刪干凈的DGElasticPullToRefresh刪完了,然后再刪除.xcodeproj文件中沒刪干凈的DGElasticPullToRefresh
找到項目目錄中的. xcodeproj文件->顯示包內(nèi)容->雙擊打開project.pbxproj文件->command+f->輸入DGElasticPullToRefresh->刪除所有搜索到的DGElasticPullToRefresh->done保存


然后執(zhí)行
shift+command+k && shift+command+option+k
運行項目
build success!
至此,一些不兼容的swift3.x問題得到解決(其他庫如有相似問題,按照上面步驟解決就好了)
項目能運行了,可是我運行在自己的ios12.2系統(tǒng)ipad上布局并沒有錯亂啊,蘋果審核人員是在跟我開玩笑?他們遇見了我十年都難復(fù)現(xiàn)的問題?運行了十幾遍布局并無問題啊~啊~啊,就在我塊崩潰的時候bug重現(xiàn)了,將ipad橫屏放置運行項目,果真錯亂了,才發(fā)現(xiàn)我犯了一個低級錯誤,如下:


除了general中設(shè)置只支持豎屏之外,info.plist中也應(yīng)該做此單選portrait設(shè)置,如圖刪除相應(yīng)的模塊就好了,至此,布局錯亂的問題得到解決!