開(kāi)啟Android手機(jī)WebView調(diào)試:inspect+Stetho

前言

開(kāi)發(fā)html5頁(yè)面用瀏覽器的調(diào)試模式就非常的方便初婆,在瀏覽器里按F12鍵就可以立即調(diào)試逃呼,找出布局的問(wèn)題,debug以及l(fā)og輸出。現(xiàn)在H5和原生的混合開(kāi)發(fā)(原生內(nèi)嵌H5頁(yè)面)使用非常廣泛琼懊,但是總會(huì)遇到各種兼容問(wèn)題(瀏覽器正常,手機(jī)上異常爬早;安卓或者蘋(píng)果上有兼容問(wèn)題哼丈;或者同一平臺(tái)下不同機(jī)型也有兼容問(wèn)題),此時(shí)就需要在真機(jī)上調(diào)試webView中的頁(yè)面H5頁(yè)面筛严,接下來(lái)看一下如何調(diào)試在Android手機(jī)上調(diào)試Web頁(yè)面醉旦。

目的

? ? ?在app和web頁(yè)面混合開(kāi)發(fā)的程序中,由于web頁(yè)面嵌套在webview中桨啃,尤其遇到一些機(jī)型的適配問(wèn)題時(shí)车胡,必須在真機(jī)運(yùn)行,才能復(fù)現(xiàn)問(wèn)題照瘾,此時(shí)想要查看元素屬性匈棘、頁(yè)面數(shù)據(jù)、網(wǎng)絡(luò)請(qǐng)求析命、debug調(diào)試等主卫,在真機(jī)上并不容易實(shí)現(xiàn)逃默。我們需要能夠找到一種方法,可以連接真機(jī)調(diào)試webview中嵌套的web頁(yè)面队秩。這樣web開(kāi)發(fā)人員和app開(kāi)發(fā)人員都可以方便地進(jìn)行調(diào)試笑旺,定位問(wèn)題所在。

使用inspect

我們知道在Chrome瀏覽器里按F12馍资,使用DevTool很容易就可以開(kāi)啟調(diào)試:檢查頁(yè)面元素筒主、監(jiān)控網(wǎng)絡(luò)請(qǐng)求、查看源碼鸟蟹,打印日志等乌妙。見(jiàn)到iphone手機(jī)WebView的內(nèi)核是Safari,調(diào)試時(shí)在Mac上打開(kāi)Safari瀏覽器建钥,可以達(dá)到和Chrome下調(diào)試web同樣的效果藤韵,那么就好奇了,Android平臺(tái)使用的WebView也是Chrome內(nèi)核熊经,難道Google就不會(huì)考慮到對(duì)WebView的調(diào)試嗎泽艘?

答案是肯定的,Google提供了inspect镐依,inspect是“檢查匹涮、審查”的意思,Google提供它用于支持調(diào)試Android手機(jī)上的webView槐壳,使用方式如下然低。

一 inspect開(kāi)啟步驟

開(kāi)啟手機(jī)上的USB調(diào)試功能,打開(kāi)開(kāi)發(fā)者選項(xiàng)中的usb調(diào)試务唐,連接電腦雳攘;

打開(kāi)Chrome瀏覽器,地址欄輸入:Chrome://inspect枫笛,回車吨灭;

Chrome會(huì)自動(dòng)檢測(cè)手機(jī)上打開(kāi)的App,并列出可調(diào)試的WebView頁(yè)面刑巧,如圖:此時(shí)我們已經(jīng)看到了DevTools沃于,并且看到了連接的手機(jī)和頁(yè)面。

點(diǎn)擊inspect海诲,即可看到和Chrome瀏覽器下調(diào)試web頁(yè)面一樣的效果了,然后檩互,你可以愉快地進(jìn)行調(diào)試了特幔。

二 inspect白板問(wèn)題

上面四步是很理想的狀態(tài)下,順利愉快地進(jìn)入調(diào)試頁(yè)面闸昨,不過(guò)更多情況下蚯斯,你是會(huì)遇到各種各樣的問(wèn)題的薄风。

1. 手機(jī)能鏈接,看不到進(jìn)程(手機(jī)APP未開(kāi)啟webview調(diào)試權(quán)限)

如下圖所示拍嵌,手機(jī)打開(kāi)app遭赂,跳轉(zhuǎn)到我們要調(diào)試的web壓面,但是我們?cè)贒evTools里看不到我們要調(diào)試的頁(yè)面地址横辆。這是因?yàn)镚oogle為了安全起見(jiàn)撇他,默認(rèn)情況下WebView是關(guān)閉了debug調(diào)試功能的,開(kāi)啟調(diào)試需要在WebView初始化設(shè)置項(xiàng)時(shí)狈蚤,添加如下代碼:

WebView.setWebContentsDebuggingEnabled(true);

注意:為了安全起見(jiàn)困肩,debug模式一般只在開(kāi)發(fā)測(cè)試時(shí)開(kāi)啟,上線后需要關(guān)閉

2.inspect白板問(wèn)題

當(dāng)看到手機(jī)連接上了脆侮,又看到可以inspect的頁(yè)面時(shí)锌畸,經(jīng)常看到如下404頁(yè)面靖避。這是因?yàn)樾枰絚hrome-devtools下載支持對(duì)應(yīng)手機(jī)瀏覽器的驅(qū)動(dòng)潭枣,服務(wù)器在美國(guó),所以需要FQ才能正常下載幻捏,科學(xué)上網(wǎng)盆犁,方的利器。

除了FQ下載粘咖,還可以下載離線包【店主收費(fèi)服務(wù)】:https://www.cnblogs.com/slmk/p/9832081.html

PS:為什么不能下載自己手機(jī)的離線包蚣抗,只針對(duì)自己手機(jī)調(diào)試呢?

頻繁覆蓋的問(wèn)題瓮下。合并版太大翰铡,chrome直接清除。專用版只能同時(shí)調(diào)試一款手機(jī)讽坏,會(huì)把前一個(gè)版本覆蓋掉锭魔。

過(guò)期問(wèn)題。chrome會(huì)定時(shí)清除掉離線包路呜,空白了又要重新覆蓋迷捧。

版本問(wèn)題,有的網(wǎng)友使用的Chrome版本和要調(diào)試的WebView不兼容

安卓,蘋(píng)果,Mac,Windows 好用的加速器 刷INS胀葱、訪推特漠秋,完美支持高清1080P視頻,無(wú)任何流量限制,真正免費(fèi)的加速器https://web.lanshuapi.com/aff/nSYY

邀請(qǐng)碼:nSYY

使用 Stetho

Stetho是一個(gè)FaceBook給Android應(yīng)用提供的高級(jí)調(diào)試橋工具抵屿。當(dāng)啟用后庆锦,開(kāi)發(fā)者可以使用Chrome桌面瀏覽器的Chrome開(kāi)發(fā)者工具特性。Stetho官方地址:http://facebook.github.io/stetho/

1. Stetho的集成

Stretho的集成相當(dāng)簡(jiǎn)單轧葛,只需要依賴指定的庫(kù)搂抒,然后調(diào)用初始化方法即可艇搀;

// Gradle dependency on Stetho? dependencies { compile'com.facebook.stetho:stetho:1.5.1'? }

publicclassMyApplicationextendsApplication{publicvoidonCreate() {super.onCreate();Stetho.initializeWithDefaults(this);? }}

2.開(kāi)始調(diào)試

Stetho軟件通過(guò)使用客戶端/服務(wù)器協(xié)議實(shí)現(xiàn)了在Chrome開(kāi)發(fā)者工具前端的集成。一旦你的應(yīng)用集成了Stetho求晶,只要在地址欄上輸入chrome://inspect并點(diǎn)擊inspect【有的chrome版本比較低是inspect fallback】就可以開(kāi)始玩兒了焰雕,如下圖所示

可以看到,有Elements芳杏、Console控制臺(tái),Sources源碼目錄,Network網(wǎng)絡(luò)監(jiān)控等矩屁,像在DevTools一樣可以。

在Elements審查頁(yè)面的元素布局蚜锨,右側(cè)可以更改元素屬性档插,手機(jī)可以實(shí)時(shí)看到界面變化,進(jìn)行UI適配亚再;

Console可以進(jìn)行一些打印郭膛,函數(shù)調(diào)用等,查看當(dāng)前界面的一些數(shù)據(jù)氛悬;

Sources可以查看源碼则剃,進(jìn)行debug斷點(diǎn)調(diào)試【和瀏覽器直接調(diào)試不同的是,斷點(diǎn)時(shí)需要在手機(jī)上點(diǎn)下一步】如捅;

Network可以監(jiān)控網(wǎng)絡(luò)請(qǐng)求棍现,網(wǎng)絡(luò)資源的加載等;

但是此時(shí)你看到的Network可能是空白的镜遣,為什么呢己肮?因?yàn)镾tetho將Network Inspection作為一個(gè)可選項(xiàng)進(jìn)行抽離,需要單獨(dú)接入悲关。

3.監(jiān)控Network

根據(jù)官方文檔介紹谎僻,你需要依賴以下庫(kù)中的一個(gè)(根據(jù)自己的網(wǎng)絡(luò)請(qǐng)求框架決定)

? dependencies { compile'com.facebook.stetho:stetho-okhttp3:1.5.1'? } or:? dependencies { compile'com.facebook.stetho:stetho-okhttp:1.5.1'? } or:? dependencies { compile'com.facebook.stetho:stetho-urlconnection:1.5.1'? }

添加網(wǎng)絡(luò)請(qǐng)求的攔截器

//For OkHttp 2.xOkHttpClientclient=newOkHttpClient();client.networkInterceptors().add(newStethoInterceptor());//For OkHttp 3.xnewOkHttpClient.Builder().addNetworkInterceptor(newStethoInterceptor()).build();

如果你使用HttpURLConnection,那么你可以使用StethoURLConnectionManager來(lái)幫助你進(jìn)行網(wǎng)絡(luò)監(jiān)視寓辱,雖然用這個(gè)方法時(shí)要留意下一些警告信息艘绍。值得一提的是,你必須顯示添加Accept-Encoding: gzip到請(qǐng)求頭中秫筏,并手動(dòng)處理壓縮后的響應(yīng)诱鞠,以便Stetho報(bào)告壓縮載荷大小。

再次啟動(dòng)你的app这敬,打開(kāi)web頁(yè)面航夺,再次進(jìn)入inspect頁(yè)面,選擇Network崔涂,此時(shí)已經(jīng)可以正常查看web頁(yè)面的網(wǎng)絡(luò)請(qǐng)求了敷存。

適用范圍

app內(nèi)集成了Stetho之后,web開(kāi)發(fā)人員,app開(kāi)發(fā)人員锚烦,都可以在Chrome瀏覽器中打開(kāi)chrome://inspect很方便的借助DevTools查看頁(yè)面數(shù)據(jù),查看網(wǎng)絡(luò)請(qǐng)求帝雇,調(diào)試真機(jī)中的webview內(nèi)嵌頁(yè)面涮俄。

其它問(wèn)題

1. inpect頁(yè)面404

這是需要到https://chrome-devtools-frontend.appspot.com/serve_rev/@293f9bc46ce2af24bdbc1f632a37e87fa5247385/inspector.html去下載對(duì)應(yīng)手機(jī)內(nèi)核的驅(qū)動(dòng),293f9bc46ce2af24bdbc1f632a37e87fa5247385是對(duì)應(yīng)的手機(jī)內(nèi)核版本驅(qū)動(dòng)編號(hào)尸闸。

解決方案:需要FQ

提供一個(gè)免費(fèi)工具

安卓,蘋(píng)果,Mac,Windows 好用的加速器 刷INS彻亲、訪推特,完美支持高清1080P視頻吮廉,無(wú)任何流量限制,真正免費(fèi)的加速器https://web.lanshuapi.com/aff/nSYY

邀請(qǐng)碼:nSYY

2. Chrome版本問(wèn)題

我發(fā)現(xiàn)我電腦上可以調(diào)試苞尝,其它同事電腦沒(méi)有inspect fallback的按鈕,查看chrome瀏覽器-設(shè)置-關(guān)于chrome宦芦,我的版本是“版本 71.0.3578.98(正式版本) (64 位)”宙址,同事的版本是“版本 89.0.4389.82(正式版本) (64 位)”,在他電腦上只有inspact和pause按鈕调卑,訪問(wèn)inspect后404頁(yè)面抡砂。

我的舊版的上面有inspact和inspect fallback,其中inspect fallback可以正常使用恬涧,inspect還是404需要翻墻注益;之后我升級(jí)了和同事一樣最新版本,發(fā)現(xiàn)沒(méi)有inspect fallback了溯捆,這樣和上一個(gè)問(wèn)題一樣丑搔,也需要FQ下手機(jī)驅(qū)動(dòng)。

好在只需要下載完手機(jī)驅(qū)動(dòng)就可以了提揍,短時(shí)間內(nèi)偶爾F一下還可以接受的啤月。

參考

Sthetho 官方文檔:http://facebook.github.io/stetho/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碳锈,隨后出現(xiàn)的幾起案子顽冶,更是在濱河造成了極大的恐慌,老刑警劉巖售碳,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件强重,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡贸人,警方通過(guò)查閱死者的電腦和手機(jī)间景,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)艺智,“玉大人倘要,你說(shuō)我怎么就攤上這事。” “怎么了封拧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵志鹃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我泽西,道長(zhǎng)曹铃,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任捧杉,我火速辦了婚禮陕见,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘味抖。我一直安慰自己评甜,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布仔涩。 她就那樣靜靜地躺著忍坷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪红柱。 梳的紋絲不亂的頭發(fā)上承匣,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音锤悄,去河邊找鬼韧骗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛零聚,可吹牛的內(nèi)容都是我干的袍暴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼隶症,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼政模!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蚂会,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淋样,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后胁住,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體趁猴,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年彪见,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了儡司。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡余指,死狀恐怖捕犬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤碉碉,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布柴钻,位于F島的核電站,受9級(jí)特大地震影響垢粮,放射性物質(zhì)發(fā)生泄漏顿颅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一足丢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧庇配,春花似錦斩跌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至啸澡,卻和暖如春袖订,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗅虏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工洛姑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人皮服。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓楞艾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親龄广。 傳聞我的和親對(duì)象是個(gè)殘疾皇子硫眯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容