Android必知必會-Stetho除錯工具
一、背景
Stetho是 Facebook 出品的一個強大的 Android 除錯工具,使用該工具你可以在 Chrome Developer Tools檢視APP的佈局, 網路請求(僅限使用Volle, okhttp的網路請求庫), Sqlite, Preference, 一切都是視覺化的操作,無須自己在去使用adb, 也不需要root你的裝置
本人使用自己的Nubia Z9 Mini作為除錯機,由於牽涉到Sqlite資料庫,所以嘗試了很多辦法把它Root了,然而Root之後就無法正常升級系統。
今天得知一除錯神器Stetho
,無需Root就能檢視資料庫以及APP的佈局(這一點沒有Android Device Monitor使用方便,但是Android Device Monitor在Mac上總是莫名其妙出問題),使用起來很方便,大家可以嘗試一下。
二、配置流程
1.引入主庫
使用Gradle方式:
// Gradle dependency on Stetho
dependencies {
compile 'com.facebook.stetho:stetho:1.3.1'
}
此外還支援Maven
方式,這裡不做介紹。
2.引入網路請求庫
如果需要除錯網路且你使用的網路請求庫是Volle或者Okhttp,那麼你才需要配置,否則跳過此步。
以下根據自己使用的網路請求庫情況來匯入相應的庫:
1.使用okhttp 2.X
dependencies {
compile 'com.facebook.stetho:stetho-okhttp:1.3.1'
}
2.使用okhttp 3.X
dependencies {
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
}
3.使用HttpURLConnection
dependencies {
compile 'com.facebook.stetho:stetho-urlconnection:1.3.1'
}
3.配置程式碼
配置Application
public class XXX extends Application {
public void onCreate () {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
配置網路請求庫:
OkHttp 2.2.x+ 或 3.x
//方案一
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
//方案二
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
如果使用的是HttpURLConnection
,請查閱相關文件。
4.使用
執行重新編譯後的APP程式,保持手機與電腦的連線,然後開啟Chrome瀏覽器,在位址列裡輸入:chrome://inspect
然後選擇自己的裝置下執行的APP程序名下的Inspect
連結 即可進行除錯。
三、遇到的問題
1.okhttp版本問題:
可能你還在使用okhttp 2.x
的版本,在引入網路庫的時候,你需要去檢視一下Stetho
當前版本使用的okhttp
版本,避免在專案中使用多個不同版本的okhttp
。
PS:okhttp
2.x和3.x的引入方式略有不同,不可以直接修改版本號來匯入:
//2.x
compile 'com.squareup.okhttp:okhttp:2.x.x'
//3.x
compile 'com.squareup.okhttp3:okhttp:3.x.x'
2.配置okhttp程式碼方案一報錯:
//方案一
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
//方案二
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
我在使用方案一進行配置okhttp
的時候,會報錯:
Caused by: java.lang.UnsupportedOperationException
不知道是不是相容的問題,大家在使用的時候請注意。