github地址:
https://github.com/facebook/stetho
介绍
stetho 读音:斯蒂索
stetho是Facebook推出的安卓APP网络诊断和数据监控的工具,接入方便,功能强大,是开发者必备的好工具。
主要功能包括:
查看App的布局
网络请求抓包
数据库、sp文件查看
自定义dumpapp插件
对于JavaScript的支持
无需root,只要能通过adb连接设备,操作方便。
依赖
//必须
compile 'com.facebook.stetho:stetho:1.5.0'
//可选
compile 'com.facebook.stetho:stetho-okhttp3:1.5.0'
compile 'com.facebook.stetho:stetho-urlconnection:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.5.0'
初始化
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...>
<application
android:name="MyApplication"
...>
</application>
</manifest>
使用
adb方式连接到设备
打开集成stetho功能的app
在Chrome浏览器地址栏中输入chrome://inspect
选择需要inspect的应用进程
注意:点击图中的蓝色inspect即可进入调试界面,如果点击该链接后你打开的是一个空白页面,需要开启VPN。
在elements一栏可以查看布局:
开启网络请求查看
若果你使用了okhttp库,参考下面的代码:
For OkHttp 2.x
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
For OkHttp 3.x
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
由于拦截器可以修改请求和响应,应该在其他拦截器之后添加 Stetho 拦截器以获取准确的网络交互视图。
如果你使用 HttpURLConnection,可以使用 StethoURLConnectionManager 来帮助集成,但该方法有一些注意事项,比如你必须明确地添加 Accept-Encoding:gzip 到请求头,并手动处理压缩的响应,以便 Stetho 报告压缩的有效负载大小。具体可以参考 stetho-sample 中的 Networker 的实现。
Stetho 目前没有提供 HttpClient 网络监控支持,具体原因可以查看 issues 116 (HttpClient 在 Android5.0 已经被废弃,不建议再使用)。