本文翻譯自: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)部的命令行界面年枕。
下載
或者你也可以通過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ā)者工具
Stetho軟件通過使用客戶端/服務(wù)器協(xié)議實現(xiàn)了在Chrome開發(fā)者工具前端的集成囱怕。一旦你的應(yīng)用集成了Stetho霍弹,只要在地址欄上輸入chrome://inspect
并點擊Inspect
就可以開始玩了。
網(wǎng)絡(luò)監(jiān)視
可以使用Chrome開發(fā)者工具的全套功能來進(jìn)行網(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擴(kuò)展超出了Chrome開發(fā)者工具所能顯示的蚁趁,它給應(yīng)用組件提供了一個更具擴(kuò)展性的命令行界面。它提供了一套默認(rèn)的插件集实胸,但是dumpapp真正強(qiáng)大之處是你可以創(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();
//使用默認(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項目來獲取更多信息。