Android 调试工具 Stetho 使用学习

原文地址:http://tech.luffyjet.com/2015/04/08/facebook-stetho-okhttp-study/


今年年初,facebook开源了一个Android开发调试工具,叫stetho,应该是单词stethoscope的一部分吧,意为诊断器。

代码托管地址: https://github.com/facebook/stetho

在项目中添加相应代码,通过Chrome DevTools连接设备后具备以下功能:

  1. 可以在Chrome里进行网络访问检测,可以查看请求链接,请求头,JSON数据等
  2. 不root的情况下查看Sqlite数据库,并且可以使用sql语句去操作
  3. 最近又升级了,API 15 以上能查看View hierarchy了
  4. dumpapp 工具提供强大的命令行接口来访问应用内部

更新比较频繁,前几天更新到1.1.0了,使用AndroidStudio可以很方便的添加到项目中。当然也可以从github页面下载最新Jar包。

使用Chrome DevTools 需要科学上网(fanqiang),否则点 inspect 会出一直是一块白板。(或者寻求其他方法解决)

要在项目中启动Stetho很方便,按照官方的说明:

  1. 添加初始化的代码到Application内,完成这一步就具备查看数据库,查看View层级结构,使用默认dumpapp工具的能力了

       public class MyApplication extends Application {
          public void onCreate() {
            super.onCreate();
            Stetho.initialize(Stetho.newInitializerBuilder(this)
                .enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
                  .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this)).build();
         }
    }
    
  1. 开启网络检测,有两种方式

    • 使用HttpURLConnection有些麻烦,可以参考我提供的DEMO的代码(在正文最底下),需要用到另一个依赖 stetho-urlconnection
    • 如果用的目前超流行的 OkHttp 则非常方便,给OkHttpClient 设置一个StethoInterceptor 即可,需要另一个依赖 stetho-okhttp

      OkHttpClient client = new OkHttpClient();
      client.networkInterceptors().add(new StethoInterceptor());
      
    • 如果用了Retrofit这个开源项目,也可以很方便的进行设置,同样需要另一个依赖 stetho-okhttp

      OkHttpClient client = new OkHttpClient();
      client.networkInterceptors().add(new StethoInterceptor());
      RestAdapter adapter = new RestAdapter.Builder().setClient(new OkClient(client)).setEndpoint(BASE_URL).buid();
      
  1. 自定义 dumpapp 可以参考我提供的DEMO的代码,值得注意的是 该工具只能运行在 类Unix环境下,比如Linux和Mac。

效果截图(点击可查看大图)

  1. 网络请求监测

  2. 查看与操作sqlite操作效果

  3. 查看与操作sharedpreference

  4. 在Chrome上查看View的层级

  5. 在上图显示的层级中我选中Actionbar后,手机上也会显示被选中的位置

  6. http请求头查看

  7. json数据查看

最后附上我的 DEMO

APK

Source Code


你可能感兴趣的:(Android)