因?yàn)闃I(yè)務(wù)需要,要開發(fā)一個(gè)顯示特定網(wǎng)頁的混合式App,用Android原生的WebView做了一版,功能可用,但是在部分設(shè)備上效果極差,因?yàn)閃ebView使用的瀏覽器內(nèi)核與系統(tǒng)環(huán)境有關(guān),為了保持效果一致性,找到了XWalkView。
Android瀏覽器內(nèi)核的問題
Android一直有WebView這個(gè)控件,但是這個(gè)控件在不同版本上使用了不同的內(nèi)核:
在Android4.4版本以前,使用的是基于androidWebKit的WebView。
從Android4.4版本起,換成了基于Chromium的WebView。
實(shí)際上,因?yàn)锳ndroid碎片化的問題,WebView在真實(shí)環(huán)境中的表現(xiàn)更加混亂,如果對(duì)混合式App中網(wǎng)頁部分的表現(xiàn)有嚴(yán)格的要求,就不得不考慮使用第三方的瀏覽器內(nèi)核。
Crosswalk的XWalkView就是目前比較受歡迎的一種第三方瀏覽器內(nèi)核。
Crosswalk和XWalkView
1.Crosswalk是一個(gè)開源的web引擎,官網(wǎng)地址
2.XWalkView是Crosswalk提供的webview,可用于替代系統(tǒng)原生的webview
如何引用
在app的build.gradle中,添加maven地址和complie

打開maven中的地址,可以找到這樣一個(gè)目錄
https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/
打開后,可以找到xwalk的各個(gè)版本

選擇其中最新的一個(gè),在app的build.gradle文件的dependencies中添加compile

為了規(guī)避混淆,需要在proguard-rules.pro中添加keep

代碼示例
在layout的xml文件中,添加xwalkview控件

在activity中,為xwalkview設(shè)置為允許運(yùn)行javascript和允許調(diào)試

如果需要,自定義resourceclient和uiclient

配置自定義的client

加載url和webview的用法一致(最新版只需要url一個(gè)參數(shù),舊版本是需要兩個(gè)參數(shù)的)

另外,為了避免泄漏內(nèi)存,需要適時(shí)銷毀控件

缺陷
安裝包體積會(huì)劇增40M+,因?yàn)樾枰颜麄€(gè)crosswalk瀏覽器引擎打包進(jìn)app里
其他框架
ChromiumView已經(jīng)過時(shí),基本不維護(hù)了
Tencent X5最近很受歡迎,準(zhǔn)備有時(shí)間研究一下。