Stetho
Stetho是Facebook开源的一个Android调试工具,通过Stetho,开发者可以使用chrome的inspect功能,对Android应用进行调试和查看。我个人在开发项目时一般只用数据库和抓包这两个功能。
Stetho提供的功能有:
1.Network Inspection:网络抓包,可以在chrome inspect窗口的network一栏抓到所有的网络请求和回包,但是缺陷在于只封装了OkHttp和HttpURLConnection的,对于其他网络请求库,它提供的接口这时候就不太友好了,得自己包装一下。
2.Database Inspection:数据库查看,可以直接看到当前应用的sqlite数据库,而且是可视化的,不需要再下什么奇怪的工具或者用命令行看了。
3.View Hierarchy:布局层级查看,免去使用查看布局边界的花花绿绿带来的痛苦和卡顿,而且能看到每个view和layout的各类属性。因为调试视图还包括了Android系统自带的状态栏布局之类的,导致Activity的布局天然处于一个比较深的节点,每次还要手动一层一层展开。
4.Dump App:命令行拓展,构造了一个命令行与Android App的交互通道,在命令行输入一行命令,App可以收到并且在命令行上进行反馈输出。
5.Javascript Console:Javascript控制台,在inspect的console窗口,输入Javascript可以直接进行Java调用。使用这个功能,得先引入facebook/stethostetho-js-rhino和mozilla/rhino。因为自带的console只能关联到application的context,能进行的操作非常有限,且在控制台写js调用Java层的函数是没有自动补全的,容易写错不说,要换成Js的语法也是相当费劲。就算解决这几个问题,也还是想不到什么合适的使用场景。
使用Stetho的gradle引用是:
//引入Stetho;
implementation 'com.facebook.stetho:stetho:1.5.1'
//使用Network Inspection时抓取okhttp3需要的库;
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.1'
//使用Network Inspection时抓取HttpURLConnection需要的库;
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
//使用javascript console需要的库;
implementation 'com.facebook.stetho:stetho-js-rhino:1.5.0'
使用方法
在我们应用代码的自定义Application类的onCreate()方法中添加初始化方法,只需要这一行就代码就对Stetho进行了初始化,就可以使用了。
//初始化Stetho;
Stetho.initializeWithDefaults(this);
打开Chrome,然后在浏览器地址栏输入:chrome://inspect,就会跳转页面,然后在该页面点击我们的应用包名的选项inspect,就会跳转到Inspect页面。在Inspect页面的各个面板中,就是Stetho的各个功能。
- View Hierarchy:
直接在Inspect页面的Elements面板查看,只是会把系统的view层级也包括进来,所以会把我们的应用的Layout层级隐藏的很深,可是搜索@android:id/content快速定位到我们当前页面的跟布局; - Database Inspection:
直接在Inspect页面的Resources面板--Web SQL查看数据哭数据; - Javascript Console:
- Dump App:
这个功能还没有用过(待续); - Network Inspection:
主要是使用这个功能,进行网络数据的抓包。当然,使用这个抓包需要引入相应的stetho-okhttp3或stetho-urlconnection库。
以okhttp3举例:
在OkhttpClient初始化时,添加拦截器,而拦截器就设置为Stetho的拦截器,而后就可以进行网络抓包了。
addNetworkInterceptor(new StethoInterceptor());
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-----------------------last line----------------------