本文翻譯自: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)部的命令行界面。
下載
或者你也可以通過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ā)者工具

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

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

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

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

Dumpapp擴展超出了Chrome開發(fā)者工具所能顯示的,它給應(yīng)用組件提供了一個更具擴展性的命令行界面。它提供了一套默認的插件集,但是dumpapp真正強大之處是你可以創(chuàng)建你自己的插件。
JavaScript控制臺

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項目來獲取更多信息。
