Android必知必会-Stetho调试工具

7,800 阅读2分钟

我正在参加「掘金·启航计划」

一、背景

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 的归档说明

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