• 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上总是莫名其妙出问题),使用起来很方便,大家可以尝试一下。

    转载请注明出处: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

    PSokhttp2.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://blog.csdn.net/ys743276112

  • 相关阅读:
    最长公共子序列
    字符串循环左移
    收集雨水问题
    直方图最大矩阵面积
    逆波兰表达式
    最长括号匹配问题
    机器学习中用来防止过拟合的方法有哪些?
    制作coco数据集以在Detectron框架上进行数据的训练
    关于训练集,验证集,测试集的划分
    配置CUDA和cuDNN以及Detectron过程
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300477.html
Copyright © 2020-2023  润新知