0%

Stetho---在Chrome中调试Android程序

官网链接:http://facebook.github.io/stetho/

Stetho是Facebook出品的一个可以在Chrome上调试Android的工具,使用起来非常方便,一定程度上减少了我们通过使用adb命令的麻烦。

特性

Chrome调试

在Chrome地址栏中输入chrome://inspect,即可看到可调试的对象:
Chrome DevTools

网络监控

可预览图片,json数据,trace等
Network Inspection

数据监控

可查看或修改数据库以及SharedPrerenced数据
Database Inspection

View Hierarchy

方便查看页面层级,类似HierarchyViewer的功能但更加方便使用。
View Hierarchy

Dumpapp

可输出app的数据状态
Dumpapp

JavaScript控制台

可支持JavaScript的使用
Javascript Console

集成

1
2
3
4
// Gradle dependency on Stetho 
dependencies {
compile 'com.facebook.stetho:stetho:1.3.1'
}
1
2
3
4
5
<dependency>
<groupid>com.facebook.stetho</groupid>
<artifactid>stetho</artifactid>
<version>1.3.1</version>
</dependency>

如果使用网络监测,可能还需要添加以下依赖:

1
2
3
dependencies { 
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
}

或者

1
2
3
dependencies { 
compile 'com.facebook.stetho:stetho-okhttp:1.3.1'
}

或者

1
2
3
dependencies { 
compile 'com.facebook.stetho:stetho-urlconnection:1.3.1'
}

添加依赖之后,只需要在Application中添加以下代码就可以了。

1
2
3
4
5
6
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}

允许网络监测
如果使用了OkHttp网络框架,版本在2.2+或3.x,则可以使用下面语句添加网络监测

1
2
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());

或者

1
2
3
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();

要使得okhttp2.x也可以运行,我们还需要用到stetho-okhttp(不是stetho-okhttp3)。
如果使用的是HttpURLConnection,我们可以使用StethoURLConnectionManager实现这个功能。需要在请求头声明Accept-Encoding: gzip并且手动解决压缩响应确保Stetho能打印压缩负荷大小。

使用dumpapp插件

1
2
3
4
5
6
7
8
9
10
11
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())