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

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

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

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

下載

Download v1.3.1

或者你也可以通過Gradle或者Maven,從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核心是必須的,你也可以同時包含進網(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ā)者工具的全套功能來進行網(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擴展超出了Chrome開發(fā)者工具所能顯示的,它給應(yīng)用組件提供了一個更具擴展性的命令行界面。它提供了一套默認的插件集,但是dumpapp真正強大之處是你可以創(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();
    //使用默認配置初始化Stetho
    Stetho.initializeWithDefaults(this);
  }
}

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

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

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

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

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

或者

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

如果你使用HttpURLConnection,那么你可以使用StethoURLConnectionManager來幫助你進行網(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容