作为android开发,必须经常用到网络调试,为了方便开发,经常用到抓包工具,比如android开发经常用到的Fidder,但是说实话,这东西配置起来很麻烦,配置代理、证书各种操作。
所以引入另外一个抓包神器,stetho;
stetho是Facebook开源的一个Android调试工具,项目地址:https://github.com/facebook/stetho,通过Stetho,开发者可以使用chrome的inspect功能,对Android应用进行调试和查看。
stetho提供的功能主要有:
- Network Inspection:网络抓包,如果你使用的是当前流行的OkHttp或者Android自带的 HttpURLConnection,你可以轻松地在chrome inspect窗口的network一栏抓到所有的网络请求和回包,还用啥Postman,还用啥Fiddler哦(开个玩笑,一些场合还是需要用的,毕竟Stetho Network Inspection 只是用来查看回报和发送数据是否有误,在开发初期,调试API还是用Postman快一点)
- Database Inspection:数据库查看,可以直接看到当前应用的sqlite数据库,而且是可视化的,不需要再下什么奇怪的工具或者用命令行看了。这个确实非常棒!
- View Hierarchy:布局层级查看,免去使用查看布局边界的花花绿绿带来的痛苦和卡顿,而且能看到每个view和layout的各类属性。
- Dump App:命令行拓展,构造了一个命令行与Android App的交互通道,在命令行输入一行命令,App可以收到并且在命令行上进行反馈输出。
- Javascript Console:Javascript控制台,在inspect的console窗口,输入Javascript可以直接进行Java调用。使用这个功能,得先引入facebook/stethostetho-js-rhino和mozilla/rhino。
使用过程:
1.添加依赖
//抓包工具
implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'
2.初始化,建议再application中进行初始化
Stetho.initialize(Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(Stetho.defaultInspectorModulesProvider(this))
.build());
3.添加拦截器
OkHttpClient mOkHttpClient=new OkHttpClient.Builder()
.connectTimeout(HttpConfig.HTTP_TIME, TimeUnit.SECONDS)
.readTimeout(HttpConfig.HTTP_TIME, TimeUnit.SECONDS)
.writeTimeout(HttpConfig.HTTP_TIME, TimeUnit.SECONDS)
.addInterceptor(InterceptorUtil.HeaderInterceptor())
.addInterceptor(InterceptorUtil.LogInterceptor())//添加日志拦截器
.addNetworkInterceptor(new StethoInterceptor()) //添加抓包工具
.build();
注意核心的一句话是
.addNetworkInterceptor(new StethoInterceptor()) //添加抓包工具
4.打开谷歌浏览器
输入chrome://inspect/#devices
5.点击inspect进入(注意第一次可能进不去,需要使用vpn)
6.可以进行愉快的抓包了,包括可以看到数据库相关文件
7.查看数据库文件
感觉用来这个神器之后,Fidder我就不再使用了,感觉特别好用