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 { 
        implementation 'com.facebook.stetho:stetho:1.6.0'
    } 

此外还支持Maven方式,这里不做介绍。

2.引入网络请求库

如果需要调试网络且你使用的网络请求库是Volle或者Okhttp,那么你才需要配置,否则跳过此步。 以下根据自己使用的网络请求库情况来导入相应的库:

1.使用 okhttp 2.X

dependencies { 
    implementation 'com.facebook.stetho:stetho-okhttp:1.6.0'
} 

2.使用 okhttp 3.X

dependencies { 
    implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
} 

3.使用 HttpURLConnection

dependencies { 
    implementation 'com.facebook.stetho:stetho-urlconnection:1.6.0'
}

3.配置代码

配置Application

public class XXX extends Application {
  public void onCreate() {
    super.onCreate();
    Stetho.initializeWithDefaults(this);
  }
}

配置网络请求库: OkHttp 2.2.x+ 或 3.x

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
implementation 'com.squareup.okhttp:okhttp:2.x.x'
//3.x
implementation 'com.squareup.okhttp3:okhttp:3.x.x'

注意:Stetho 于 2021 年停止维护更新了,你在使用时,需要考虑是否存在风险。不过,基于现在基本上都在使用 okhttp3,就 Stetho 的实现原理来说,它是在 okhttp3 的 OkHttpClient 初始化时,增加了一个 NetworkInterceptor ,这种方式可以保持长期的可用性。

Stetho官网

update:2023-05-25

  1. 更新了 stetho 版本到官网最新版本
  2. 移除过时的内容
  3. 增加 stetho 的归档说明

转载请注明出处,如果有什么建议或者问题可以随时联系我,共同探讨学习:

猜你喜欢

转载自juejin.im/post/7202164243612860472