【譯】一款強(qiáng)大的Android調(diào)試工具:Stetho

本文翻譯自:http://facebook.github.io/stetho/欢摄。沒錯国瓮,F(xiàn)acebook出品抽米,必屬精品!

一個專門給Android應(yīng)用使用的調(diào)試橋工具

Stetho是一個給Android應(yīng)用使用的高級調(diào)試橋工具理肺。當(dāng)啟用后摄闸,開發(fā)者可以使用Chrome桌面瀏覽器的Chrome開發(fā)者工具特性。開發(fā)者也可以選擇啟用可選的dumpapp工具妹萨,它提供了一個強(qiáng)大的觸及應(yīng)用程序內(nèi)部的命令行界面年枕。

下載

Download v1.3.1

或者你也可以通過Gradle或者M(jìn)aven,從Maven中心倉庫中下載Stetho到你的項目中眠副。

// Gradle
dependencies { 
    compile 'com.facebook.stetho:stetho:1.3.1' 
} 
<!--Maven-->
  <dependency>
    <groupid>com.facebook.stetho</groupid> 
    <artifactid>stetho</artifactid> 
    <version>1.3.1</version> 
  </dependency> 

只有stetho核心是必須的画切,你也可以同時包含進(jìn)網(wǎng)絡(luò)庫,如:

  dependencies { 
    compile 'com.facebook.stetho:stetho-okhttp3:1.3.1' 
  } 

或者

  dependencies { 
    compile 'com.facebook.stetho:stetho-okhttp:1.3.1' 
  } 

或者

  dependencies { 
    compile 'com.facebook.stetho:stetho-urlconnection:1.3.1' 
  } 

特性

Chrome開發(fā)者工具

inspector-discovery

Stetho軟件通過使用客戶端/服務(wù)器協(xié)議實現(xiàn)了在Chrome開發(fā)者工具前端的集成囱怕。一旦你的應(yīng)用集成了Stetho霍弹,只要在地址欄上輸入chrome://inspect并點擊Inspect就可以開始玩了。

網(wǎng)絡(luò)監(jiān)視

inspector-network

可以使用Chrome開發(fā)者工具的全套功能來進(jìn)行網(wǎng)絡(luò)監(jiān)視娃弓,包括圖片預(yù)覽典格、JSON響應(yīng)協(xié)助,甚至是輸出HAR格式的追蹤信息台丛。

數(shù)據(jù)庫監(jiān)視

inspector-sqlite

SQLite數(shù)據(jù)庫可以被可視化和交互式地瀏覽耍缴,并且具備完全的讀寫能力。

視圖層級

inspector-elements

視圖層級功能支持ICS(API 15)以及更高版本的Android系統(tǒng)挽霉。有很多很棒的功能防嗡,比如說View實例被可視化地放置在視圖層級中、視圖高亮和點擊view就可以跳到它在層級中的位置侠坎。

Dumpapp

dumpapp-prefs

Dumpapp擴(kuò)展超出了Chrome開發(fā)者工具所能顯示的蚁趁,它給應(yīng)用組件提供了一個更具擴(kuò)展性的命令行界面。它提供了一套默認(rèn)的插件集实胸,但是dumpapp真正強(qiáng)大之處是你可以創(chuàng)建你自己的插件他嫡。

JavaScript控制臺

inspector-js

JavaScript控制臺允許你執(zhí)行JavaScript代碼番官,來跟應(yīng)用甚至是Android SDK交互。

集成

設(shè)置

集成Stetho對現(xiàn)在的大多數(shù)Android應(yīng)用來說钢属,是無縫和直接的徘熔。下面的例子展示了在你的Application中初始化Stetho。

//自定義Application并在清單文件的<application>的name屬性中配置
public class MyApplication extends Application {
  public void onCreate() {
    super.onCreate();
    //使用默認(rèn)配置初始化Stetho
    Stetho.initializeWithDefaults(this);
  }
}

這樣子會啟用許多默認(rèn)的設(shè)置淆党,但是沒有啟用一些額外的鉤子功能(hook)(特別是網(wǎng)絡(luò)監(jiān)視)酷师。

接著看下面如何在自己的子系統(tǒng)中指定詳細(xì)的設(shè)置。

啟用網(wǎng)絡(luò)監(jiān)視

如果你使用流行的2.2.x+或者3.x發(fā)布版的OkHttp庫宁否,你可以使用監(jiān)視器系統(tǒng)來自動hook進(jìn)已存在的棧窒升。目前啟用網(wǎng)絡(luò)監(jiān)視最簡單的最直接的方法是:

OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());

或者

new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

如果你使用HttpURLConnection,那么你可以使用StethoURLConnectionManager來幫助你進(jìn)行網(wǎng)絡(luò)監(jiān)視慕匠,雖然用這個方法時要留意下一些警告信息。值得一提的是域醇,你必須顯示添加Accept-Encoding: gzip到請求頭中台谊,并手動處理壓縮后的響應(yīng),以便Stetho報告壓縮載荷大小譬挚。

查看stetho-sample項目來獲取更多信息锅铅。

定制dumpapp插件

定制插件是一個繼承dumpapp系統(tǒng)的絕好方法,它還可以在配置中很方便的减宣。簡單地替換下你的配置盐须,如:

Stetho.initialize(Stetho.newInitializerBuilder(context)
    .enableDumpapp(new DumperPluginsProvider() {
      @Override
      public Iterable<DumperPlugin> get() {
        return new Stetho.DefaultDumperPluginsBuilder(context)
            .provide(new MyDumperPlugin())
            .finish();
      }
    })
    .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context))
    .build());

查看stetho-sample項目來獲取更多信息。

PS:倒騎驢的農(nóng)民公眾號開通啦
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漆腌,一起剝皮案震驚了整個濱河市贼邓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷尿,老刑警劉巖塑径,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異填具,居然都是意外死亡统舀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門劳景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誉简,“玉大人,你說我怎么就攤上這事盟广∶拼” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵衡蚂,是天一觀的道長窿克。 經(jīng)常有香客問我骏庸,道長,這世上最難降的妖魔是什么年叮? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任具被,我火速辦了婚禮,結(jié)果婚禮上只损,老公的妹妹穿的比我還像新娘一姿。我一直安慰自己,他們只是感情好跃惫,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布叮叹。 她就那樣靜靜地躺著,像睡著了一般爆存。 火紅的嫁衣襯著肌膚如雪蛉顽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天先较,我揣著相機(jī)與錄音携冤,去河邊找鬼。 笑死闲勺,一個胖子當(dāng)著我的面吹牛曾棕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菜循,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼翘地,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了癌幕?” 一聲冷哼從身側(cè)響起衙耕,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序芦,沒想到半個月后臭杰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谚中,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年渴杆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宪塔。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡磁奖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出某筐,到底是詐尸還是另有隱情比搭,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布南誊,位于F島的核電站身诺,受9級特大地震影響蜜托,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霉赡,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一橄务、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穴亏,春花似錦蜂挪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刺覆,卻和暖如春严肪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谦屑。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工诬垂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伦仍。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像很洋,于是被迫代替她去往敵國和親充蓝。 傳聞我的和親對象是個殘疾皇子蔫骂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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