Android(安卓)调试工具 Stetho 使用学习
16lz
2021-01-25
原文地址:http://tech.luffyjet.com/2015/04/08/facebook-stetho-okhttp-study/
今年年初,facebook开源了一个Android开发调试工具,叫stetho,应该是单词stethoscope的一部分吧,意为诊断器。
代码托管地址: https://github.com/facebook/stetho
在项目中添加相应代码,通过Chrome DevTools连接设备后具备以下功能:
- 可以在Chrome里进行网络访问检测,可以查看请求链接,请求头,JSON数据等
- 不root的情况下查看Sqlite数据库,并且可以使用sql语句去操作
- 最近又升级了,API 15 以上能查看View hierarchy了
- dumpapp 工具提供强大的命令行接口来访问应用内部
更新比较频繁,前几天更新到1.1.0了,使用AndroidStudio可以很方便的添加到项目中。当然也可以从github页面下载最新Jar包。
使用Chrome DevTools 需要科学上网(fanqiang),否则点 inspect 会出一直是一块白板。(或者寻求其他方法解决)
要在项目中启动Stetho很方便,按照官方的说明:
-
添加初始化的代码到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(); }}
-
开启网络检测,有两种方式
- 使用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();
- 自定义 dumpapp 可以参考我提供的DEMO的代码,值得注意的是 该工具只能运行在 类Unix环境下,比如Linux和Mac。
效果截图(点击可查看大图)
-
网络请求监测
-
查看与操作sqlite操作效果
-
查看与操作sharedpreference
-
在Chrome上查看View的层级
-
在上图显示的层级中我选中Actionbar后,手机上也会显示被选中的位置
-
http请求头查看
-
json数据查看
最后附上我的 DEMO
#debugAPK
Source Code
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 坑爹的minSdkVersion配置
- Android代码实现状态选择器
- android 内存溢出oom错误的一些小见解
- 在ubuntu下编译android和linux版webrtc的步骤
- android相关知识简介
- android 中间件开发
- Android培训班(19)
- Android(安卓)Studio项目混淆后输出的文件所在位置