您的位置:首页 > 移动开发 > Android开发

Android调试利器--Stetho

2016-07-02 22:19 453 查看
也许你已经习惯了使用Fiddle或者Charles来抓取网络包,使用各种插件和工具查看sqlite数据库,但是现在有了更好的调试工具,为什么不尝试一把提高效率呢?

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的内容。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息