因?yàn)闃I(yè)務(wù)需要,要開(kāi)發(fā)一個(gè)顯示特定網(wǎng)頁(yè)的混合式App,用Android原生的WebView做了一版沿侈,功能可用,但是在部分設(shè)備上效果極差市栗,因?yàn)閃ebView使用的瀏覽器內(nèi)核與系統(tǒng)環(huán)境有關(guān)缀拭,為了保持效果一致性,找到了XWalkView填帽。
Android瀏覽器內(nèi)核的問(wèn)題
Android一直有WebView這個(gè)控件蛛淋,但是這個(gè)控件在不同版本上使用了不同的內(nèi)核:
在Android4.4版本以前,使用的是基于androidWebKit的WebView篡腌。
從Android4.4版本起褐荷,換成了基于Chromium的WebView。
實(shí)際上嘹悼,因?yàn)锳ndroid碎片化的問(wèn)題叛甫,WebView在真實(shí)環(huán)境中的表現(xiàn)更加混亂,如果對(duì)混合式App中網(wǎng)頁(yè)部分的表現(xiàn)有嚴(yán)格的要求杨伙,就不得不考慮使用第三方的瀏覽器內(nèi)核其监。
Crosswalk的XWalkView就是目前比較受歡迎的一種第三方瀏覽器內(nèi)核。
Crosswalk和XWalkView
1.Crosswalk是一個(gè)開(kāi)源的web引擎限匣,官網(wǎng)地址
2.XWalkView是Crosswalk提供的webview棠赛,可用于替代系統(tǒng)原生的webview
如何引用
在app的build.gradle中,添加maven地址和complie
打開(kāi)maven中的地址膛腐,可以找到這樣一個(gè)目錄
https://download.01.org/crosswalk/releases/crosswalk/android/maven2/org/xwalk/xwalk_core_library/
打開(kāi)后睛约,可以找到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í)銷(xiāo)毀控件
缺陷
安裝包體積會(huì)劇增40M+商膊,因?yàn)樾枰颜麄€(gè)crosswalk瀏覽器引擎打包進(jìn)app里
其他框架
ChromiumView已經(jīng)過(guò)時(shí),基本不維護(hù)了
Tencent X5最近很受歡迎宠进,準(zhǔn)備有時(shí)間研究一下晕拆。