公司的項(xiàng)目需要承載h5頁面掂名,技術(shù)選型選擇了Cordova框架葛躏。
雖然利用javascriptInterface可以調(diào)用原生能力叼丑,但是Cordova已經(jīng)實(shí)現(xiàn)了一套成熟的機(jī)制扯罐,并且提供插件機(jī)制,快速提供原生能力肥照。所以除了部分注入對象脚仔,都使用Cordova插件。
使用了Cordova框架舆绎,就有了一大堆Cordova的 js文件鲤脏。這些js 文件一般只會(huì)因?yàn)樵芰Φ淖儎?dòng)而變動(dòng),所以都是對于版本迭代來說亿蒸,Cordova的js文件都是靜態(tài)版本凑兰,所以可以靜態(tài)保存在本地,避免頁面加載過多文件边锁;如果作為平臺(tái)方姑食,也可以避免出現(xiàn)業(yè)務(wù)方的Cordova資源包版本問題。
在Android上茅坛,webview 依賴WebViewClient音半,當(dāng)有資源請求時(shí),會(huì)調(diào)用shouldInterceptRequest這個(gè)方法贡蓖,我們也是在這里做攔截曹鸠。如下面兩張圖,只要在與前端商量好地址的規(guī)則斥铺,攔截對應(yīng)規(guī)則的資源彻桃,將地址 url 轉(zhuǎn)化成本地 path,生成對應(yīng)WebResourceResponse就可以了晾蜘,返回null則由瀏覽器自行處理邻眷。