安卓系統中調試webview頁面的實踐

時間 2016-02-07 23:55:25  IMWeb

開發Hybrid混合應用時,很多人都覺得調試是一件比較麻煩的事情,因爲它可能會依賴於app環境,絕不是普通的h5頁面那麼簡單。

前些日子一直做手Q上的頁面開發,針對如何調試,有一些心得,在此記錄。注意,本文內容僅限於在windows中調試安卓系統中的Hybrid混合應用。本文是在 @ feix760 相關文檔基礎上整理而來,並作了適當的內容補充,在此特別表示感謝!

1. 原理簡介

藉助Chrome的DevTools工具,連接手機後,可以呼起Chrome瀏覽器中的開發者工具,然後就能夠像調試普通頁面一樣調試手機中的頁面。

更詳細的細節,請看 官方說明 。

2. 安卓手機

從 Android 4.4 開始,webkit是支持遠程調試的,不過需要將app的debug模式打開,可以使用如下代碼:

WebView.setWebContentsDebuggingEnabled(true);

由於大部分 App 的 debug 模式是關閉的,即便是內部 App,比如 QQ/微信,要去找一個開啓了debug 模式的版本還是比較麻煩的。因此需要使用藉助第三方工具來強制開啓任何 App 的 Android webview debug模式 ,使之可以使用 chrome inspect。 而這個工具就是 Xposed 。

我們已經提供了一份要安裝的文件,請首先到 https://github.com/feix760/WebViewDebugHook 下載文件。

2.1 root設備

因爲涉及到 root 權限,因此需要將手機進行 root。有很多工具可以來 root,比如KingRoot、一鍵root、360一鍵root等。如果你安裝了QQ電腦管家,可以在“電腦管家-工具箱-其他”列表裏面看到KingRoot。

2.2 安裝xposed框架

在下載文件的hook.zip中,找到 de.robv.android.xposed.installer_v33_36570c.apk ,安裝之。也可以去 官網 下載。

2.3 安裝xposed webview debugging模塊

在下載文件的hook.zip中,找到 WebViewDebugHook.apk ,安裝之。

2.4 激活Xposed

安裝後上述兩個apk之後,可以看到手機上面出現了一個叫 Xposed Installer 的圖標,點擊進去之後會看到提示說Xposed未激活,點擊紅色字體部分,會切換到另外一條頁面,點擊“安裝/更新”按鈕即可。

但有部分手機會出現類似如下的錯誤,導致無法點擊“安裝/更新”,目前已知的是部分版本的MIUI是會出現這個問題的(紅米Note和小米Note試過不行,但小米4是沒問題的)。

安裝完成之後,重啓再打開,再點擊剛纔點擊過的地方,切入頁面之後,勾選,再重啓,重啓之後即激活了Xposed。

2.5 關於QQ等

QQ等默認會使用X5內核,把下載文件中的 debug.conf 放在sd卡根目錄下就可以強制它使用 Android 自帶 webview 。

3. Fiddler

Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許監視,設置斷點,甚至修改輸入輸出數據.所以無論是從事什麼開發,哪種語言,只要你想了解HTTP,這個工具就值得你去了解。

在Windows中下載Fiddler2或Fiddler4,安裝完成之後,點擊菜單中的Tools-Fiddler Options,之後會彈出一個設置面板,切換到Connections 標籤頁,設置其端口號爲8888,且勾選 “Allow remote computers to connect”

Fiddler是以代理web服務器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。當Fiddler退出的時候它會自動註銷,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因爲Fiddler沒有自動註銷,會造成網頁無法訪問。解決的辦法是重新啓動下Fiddler。

4. 測試連接

我們推薦PC和手機在同一個局域網內,這樣比較好操作,這也意味着如果是臺式機,則需要安裝無線網卡。

按照以下步驟:

  1. PC和手機都在同一個局域網內
  2. 獲取PC的IP地址(如果其有多個IP地址,記得是和手機在同一個局域網內的IP地址)
  3. 設置手機連接wifi時啓用 http 代理,其中代理ip就是PC的ip,端口號填寫Fiddler中設置了的8888
  4. 在手機上使用瀏覽器打開任意一個網頁,觀察PC端Fiddler是否已經成功代理了手機上發出的http請求。
  5. PC 上使用 chrome 打開 chrome://inspect ,然後打開任意 App 的 webview ,此時就應該能夠在chrome瀏覽器上看到出現了可調試的入口,點擊 "inspect",即可打開調試工具,此時就可以愉快的調試了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章