Cordova最新版本6.1.0升級(jí)攻略

最近一段時(shí)間,為了項(xiàng)目適配 Apple 的最新條例而頭疼,UIWebView 要全部替換為 WKWebView。

先說(shuō)一下目前項(xiàng)目背景,項(xiàng)目是2014年開(kāi)啟的,我在去年接手,然后今年年底就要完全替換 UIWebView,項(xiàng)目中使用的 SDK 大部分都是當(dāng)年集成之后再也沒(méi)有更新過(guò)的,所以看著就心煩。

客戶端的項(xiàng)目剛開(kāi)始是用 Cordova 搭建的跨平臺(tái)應(yīng)用,之后在項(xiàng)目主體架構(gòu)不變的情況下,一步步的將 webAPP 轉(zhuǎn)換成了原生 APP
,項(xiàng)目中的 js 文件全部保留,配置文件也在使用,目前熱更新相關(guān)的已經(jīng)廢棄,在使用的就是以 CDViewController 為基類而實(shí)現(xiàn)的 WebView功能,

項(xiàng)目目錄

此項(xiàng)目的 Cordova-ios 的版本是 4.1.1,內(nèi)核自然也就是 UIWebView,而此次的目標(biāo)就是將版本升級(jí)到 6.1.0,這樣內(nèi)核就切換成了 WKWebView。

google 了一遍之后發(fā)現(xiàn)沒(méi)有適合我這個(gè)項(xiàng)目的升級(jí)攻略,之前官網(wǎng)放出過(guò)臨時(shí)策略,也就是升級(jí)到5.1.1,這個(gè)版本只是棄用了 UIWebView, 但并沒(méi)有移除。

官網(wǎng)1.0解決方案

With the versions that are currently released, make sure that you are:

  • using cordova-ios@5.1.1

  • add plugin cordova-plugin-wkwebview-engine, preferably the latest version 1.2.1

  • add the following preference flag WKWebViewOnly to the config.xml iOS platform element.
    E.g.

       <platform name="ios">
       <preference name="WKWebViewOnly" value="true" />
       </platform>
       <platform name="ios">
       <feature name="CDVWKWebViewEngine">
       <param name="ios-package" value="CDVWKWebViewEngine"/>
       </feature>
       <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine"/>
       </platform>
    
    

官網(wǎng)2.0解決方案

這個(gè)是升級(jí)到 6.1.0 的方案,直接就移除了 UIWebView 相關(guān)的代碼,但是給出的方案很讓人無(wú)語(yǔ)。步驟很簡(jiǎn)單:

cordova platform remove ios
cordova platform add ios@6.1.0

方案一可以用,但是沒(méi)有一步到位,后期應(yīng)該還要升級(jí)。
方案二,我能說(shuō)啥,這操作,相當(dāng)于讓我把 APP 刪了,沒(méi)了...

最后實(shí)在沒(méi)有輕松的方案,只能使用方案二了,并且用了一種相當(dāng)麻煩的方法完成了升級(jí)。

簡(jiǎn)單地說(shuō),就是先將 ios目錄拷貝一份,然后執(zhí)行方案二的命令行,之后將拷貝的那份與 APP 相關(guān)的文件拷貝回新的 ios 目錄,然后 Build 項(xiàng)目,根據(jù)錯(cuò)誤提示來(lái)配置相應(yīng)的文件即可。

在此實(shí)踐證明,方案二是可行的,就是麻煩許多,切記執(zhí)行命令前一定要把項(xiàng)目進(jìn)行備份。

最后待項(xiàng)目運(yùn)行成功之后,再在項(xiàng)目根目錄執(zhí)行下方代碼:

grep -r UIWebView 項(xiàng)目根目錄

然后就可以看到 Cordova 已經(jīng)不再提示了,也就說(shuō)明升級(jí)成功。


附帶說(shuō)明一下關(guān)于網(wǎng)絡(luò)請(qǐng)求 AFNetWorking 框架的 UIWebView 解決方案:

方案一
pod 'AFNetworking', '~> 4.0' //新版不含UIWebView
方案二
pod 'AFNetworking', '~> 3.0', :source => 'https://github.com/ElfSundae/CocoaPods-Specs.git'

方案二適合老項(xiàng)目,還在用著 3.0版本,又懶得升級(jí)新版修改代碼的。

以上都已經(jīng)在項(xiàng)目中實(shí)踐過(guò),放心參考!

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

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

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