Android调试利器--Stetho
2016-07-02 22:19
453 查看
也许你已经习惯了使用Fiddle或者Charles来抓取网络包,使用各种插件和工具查看sqlite数据库,但是现在有了更好的调试工具,为什么不尝试一把提高效率呢?
Stetho是一个复杂的Android应用程序调试桥。启用时,开发者可以通过Chrome桌面浏览器调试App。开发人员也可以选择启用dumpapp工具,一个强大的命令行界面应用程序内部构件。
以上是Stetho必须添加的主要库,网络库是可选的,如果想要抓取网络包,就需要添加这个库,一共有三种可选。
我们可以看到三个库分别是okhttp3,okhttp,和urlconnection分别针对你项目中使用的网络框架进行选择,注意urlconnection可以用于你自己或者其他底层基于urlconnection实现的网络框架。
这是最基础的配置,这里的配置还没加入网络等配置,我们接着往下看。
或者
如果你使用 HttpURLConnection, 你可以使用StethoURLConnectionManager 来集成。需要注意的地方有必须声明Accept-Encoding: gzip的请求headers。具体用法见facebook stetho源码的sample中的package com.facebook.stetho.sample;包下的Networker类。源码github地址: https://github.com/facebook/stetho/tree/master/stetho-sample
如果觉得不过瘾,可以在例子里面查看更多的细节。
我们来演示一下如何查看,偷懒的同学也可以直接运行sample看效果,我这里直接运行一个之前已经集成了Stetho的例子。
在Chrome地址栏输入 chrome://inspect 回车后,如图。
点击inspect后,点击network,在测试机上做网络请求后如图。
点击具体某一个请求,我们需要看的请求参数和返回都能看到了。
最后我们也能看到sqlite和SharedPreference的内容。
Stetho是一个复杂的Android应用程序调试桥。启用时,开发者可以通过Chrome桌面浏览器调试App。开发人员也可以选择启用dumpapp工具,一个强大的命令行界面应用程序内部构件。
引用库
Gradle 或者 Maven// Gradle dependency on Stetho dependencies { compile 'com.facebook.stetho:stetho:1.3.1' }
<dependency> <groupid>com.facebook.stetho</groupid> <artifactid>stetho</artifactid> <version>1.3.1</version> </dependency>
以上是Stetho必须添加的主要库,网络库是可选的,如果想要抓取网络包,就需要添加这个库,一共有三种可选。
dependencies { compile 'com.facebook.stetho:stetho-okhttp3:1.3.1' }
dependencies { compile 'com.facebook.stetho:stetho-okhttp:1.3.1' }
dependencies { compile 'com.facebook.stetho:stetho-urlconnection:1.3.1' }
我们可以看到三个库分别是okhttp3,okhttp,和urlconnection分别针对你项目中使用的网络框架进行选择,注意urlconnection可以用于你自己或者其他底层基于urlconnection实现的网络框架。
代码中的配置
现在在我们的Application中做配置。public class MyApplication extends Application { public void onCreate() { super.onCreate(); Stetho.initializeWithDefaults(this); } }
这是最基础的配置,这里的配置还没加入网络等配置,我们接着往下看。
抓取网络包
OkHttpClient client = new OkHttpClient(); client.networkInterceptors().add(new StethoInterceptor());
或者
new OkHttpClient.Builder() .addNetworkInterceptor(new StethoInterceptor()) .build();
如果你使用 HttpURLConnection, 你可以使用StethoURLConnectionManager 来集成。需要注意的地方有必须声明Accept-Encoding: gzip的请求headers。具体用法见facebook stetho源码的sample中的package com.facebook.stetho.sample;包下的Networker类。源码github地址: https://github.com/facebook/stetho/tree/master/stetho-sample
定制dump插件
代码很简单Stetho.initialize(Stetho.newInitializerBuilder(context) .enableDumpapp(new DumperPluginsProvider() { @Override public Iterable<DumperPlugin> get() { return new Stetho.DefaultDumperPluginsBuilder(context) .provide(new MyDumperPlugin()) .finish(); } }) .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(context)) .build());
如果觉得不过瘾,可以在例子里面查看更多的细节。
我们来演示一下如何查看,偷懒的同学也可以直接运行sample看效果,我这里直接运行一个之前已经集成了Stetho的例子。
在Chrome地址栏输入 chrome://inspect 回车后,如图。
点击inspect后,点击network,在测试机上做网络请求后如图。
点击具体某一个请求,我们需要看的请求参数和返回都能看到了。
最后我们也能看到sqlite和SharedPreference的内容。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件