在開發Android app時,特別是強內容展現型的功能,會想在原生native實現和web實現中做選擇,做這種選擇的時候,難免想看看競品或其它app類似功能是用哪種方式實現的。但是如何判斷其它app是用原生控件實現還是用webview載入網頁來實現呢?其實要想做到這一點不難,至少有兩種辦法:
一、抓包
這是比較原始,也是比較容易想到的,打開相應界面,抓取數據包看看,如果有url是返回比較完整的html代碼,那基本就是webview來實現的了。
二、利用系統開發人員工具
抓包的方法還是太麻煩,很多系統有更高級的開發人員工具功能,一般在設置里可以找到,有些手機可能需要特殊的操作才能打開開發人員工具功能。以meizu mx2為例,在撥號界面輸入 *#*#6961#*#* 打開“開發人員工具”功能(輸入 *#*#6960#*#* 關閉),點擊“設置”->“輔助功能”->“開發人員工具”,在繪圖欄中找到“顯示布局邊界”並打開。這樣所有應用的控件布局都一目了然了,webview作為一個控件,只有一個邊界框,所以通過這一點,就比較容易區分出一個界面是webview實現的還是native布局控件實現的,當然也不排除用一堆webview來拼成一個界面的實現方法。
如下圖是一個native與webview混排的界面,藍色線框是各控件的繪制邊界,中間那一大塊布局豐富的界面沒有顯示出很多邊界藍線,就是網頁實現的。
除了上面兩種方法,一般來說,通過斷開網絡,刷新界面,觀察內容緩存情況也可以對實現方式有個大致預判斷,一般來說緩存做得好的,都是原生控制實現的,有界面局部緩存的就更大可能是原生的了。
高手們還有別的方案嗎?歡迎在下面評論!