升級xcode10.2,swift庫兼容性問題

最近項目頻頻被拒,也是心情煩躁,最新的被拒理由除了老生常談的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)之后運行項目!
不負眾望?。?!先來個警告先?。?!

swift版本沖突.png

意思是當(dāng)前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上有問題,先改他倆
首先我們?nèi)it上查看這兩個庫是否有swift4的支持

pod search  EZSwiftExtensions


WechatIMG20103.jpeg

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

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

Release_detail.jpg
2.0版本支持swift4,頓時心情舒暢了好多,所以提醒各位,在cocoapods集成的時候一定要再三思量,此庫是否會有人持續(xù)維護?。?!

同樣的道理pod 搜索DGElasticPullToRefresh,發(fā)現(xiàn)此庫沒有繼續(xù)維護,最高支持3.0,幸好項目中用到的比較少,索性直接刪除了
pod 更新如下


替換或刪除不支持的swift庫.jpeg
執(zhí)行:

pod install


deleteAndUpdate.jpeg

shift+command+option+k,運行項目,報錯如下:
swift_version_unsupported.png
修復(fù)此庫的問題如下(選擇swift4):
WechatIMG20147.png
再次運行
WechatIMG20150.jpeg
WechatIMG20152.jpeg

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

HanyJson_5.jpeg

HanyJson_4.jpeg

執(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ù)運行

某些刪除的庫找不到錯誤.png

意思是項目中有我們沒有刪除干凈的DGElasticPullToRefresh余黨!??!

我們搜索這個庫試試


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

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


WechatIMG20158.jpeg

執(zhí)行

pod install
pod repo update


至此podfile中的沒刪干凈的DGElasticPullToRefresh刪完了,然后再刪除.xcodeproj文件中沒刪干凈的DGElasticPullToRefresh

找到項目目錄中的. xcodeproj文件->顯示包內(nèi)容->雙擊打開project.pbxproj文件->command+f->輸入DGElasticPullToRefresh->刪除所有搜索到的DGElasticPullToRefresh->done保存

WechatIMG20159.jpeg
WechatIMG20160.jpeg

然后執(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_portrait.jpeg
info_portrait.jpeg

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,029評論 4 61
  • 學(xué)習(xí) 補讀昨日閱讀和今日閱讀 完成知識管理訓(xùn)練營的學(xué)習(xí) 生活 還了借了很久的書,逾期的錢都夠買本書啦,后期盡量不帶...
    灼灼2015閱讀 162評論 0 0
  • 這篇日志上周五的時候,就想寫了,沒有時間記錄下來,都是周五發(fā)生的事情吧,有三個場景。 場景一:我去一個加工廠去實地...
    OO碰到OO閱讀 421評論 0 0

友情鏈接更多精彩內(nèi)容