多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 一、背景 > 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上总是莫名其妙出问题),使用起来很方便,大家可以尝试一下。 > 转载请注明出处:[http://blog.csdn.net/ys743276112](http://blog.csdn.net/ys743276112) ## 二、配置流程 ### 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 ~~~ 不知道是不是兼容的问题,大家在使用的时候请注意。 [Stetho官网](http://facebook.github.io/stetho/) 转载请注明出处:[http://blog.csdn.net/ys743276112](http://blog.csdn.net/ys743276112)