本文翻译自:http://facebook.github.io/stetho/。没错,Facebook出品,必属精品!
一个专门给Android应用使用的调试桥工具
Stetho是一个给Android应用使用的高级调试桥工具。当启用后,开发者可以使用Chrome桌面浏览器的Chrome开发者工具特性。开发者也可以选择启用可选的dumpapp工具,它提供了一个强大的触及应用程序内部的命令行界面。
下载
或者你也可以通过Gradle或者Maven,从Maven中心仓库中下载Stetho到你的项目中。
// Gradle
dependencies {
compile 'com.facebook.stetho:stetho:1.3.1'
}
<!--Maven-->
<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'
}
特性
Chrome开发者工具
inspector-discoveryStetho软件通过使用客户端/服务器协议实现了在Chrome开发者工具前端的集成。一旦你的应用集成了Stetho,只要在地址栏上输入chrome://inspect
并点击Inspect
就可以开始玩了。
网络监视
inspector-network可以使用Chrome开发者工具的全套功能来进行网络监视,包括图片预览、JSON响应协助,甚至是输出HAR格式的追踪信息。
数据库监视
inspector-sqliteSQLite数据库可以被可视化和交互式地浏览,并且具备完全的读写能力。
视图层级
inspector-elements视图层级功能支持ICS(API 15)以及更高版本的Android系统。有很多很棒的功能,比如说View实例被可视化地放置在视图层级中、视图高亮和点击view就可以跳到它在层级中的位置。
Dumpapp
dumpapp-prefsDumpapp扩展超出了Chrome开发者工具所能显示的,它给应用组件提供了一个更具扩展性的命令行界面。它提供了一套默认的插件集,但是dumpapp真正强大之处是你可以创建你自己的插件。
JavaScript控制台
inspector-jsJavaScript控制台允许你执行JavaScript代码,来跟应用甚至是Android SDK交互。
集成
设置
集成Stetho对现在的大多数Android应用来说,是无缝和直接的。下面的例子展示了在你的Application中初始化Stetho。
//自定义Application并在清单文件的<application>的name属性中配置
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
//使用默认配置初始化Stetho
Stetho.initializeWithDefaults(this);
}
}
这样子会启用许多默认的设置,但是没有启用一些额外的钩子功能(hook)(特别是网络监视)。
接着看下面如何在自己的子系统中指定详细的设置。
启用网络监视
如果你使用流行的2.2.x+或者3.x发布版的OkHttp库,你可以使用监视器系统来自动hook进已存在的栈。目前启用网络监视最简单的最直接的方法是:
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
或者
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
如果你使用HttpURLConnection
,那么你可以使用StethoURLConnectionManager
来帮助你进行网络监视,虽然用这个方法时要留意下一些警告信息。值得一提的是,你必须显示添加Accept-Encoding: gzip
到请求头中,并手动处理压缩后的响应,以便Stetho报告压缩载荷大小。
查看stetho-sample项目来获取更多信息。
定制dumpapp插件
定制插件是一个继承dumpapp系统的绝好方法,它还可以在配置中很方便的。简单地替换下你的配置,如:
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());
查看stetho-sample项目来获取更多信息。
PS:倒骑驴的农民公众号开通啦
网友评论