stetho调试框架(Android)
一、概述
stetho是Facebook开源的一个Android调试工具,通过Stetho,开发者可以使用chrome的inspect功能,对Android应用进行调试和查看。
项目地址:https://github.com/facebook/stetho
stetho提供的功能主要有:
1、Network Inspection:网络抓包,如果你使用的是当前流行的OkHttp或者Android自带的 HttpURLConnection,你可以轻松地在chrome inspect窗口的network一栏抓到所有的网络请求和回包;
2、Database Inspection:数据库查看;
3、View Hierarchy:布局层级查看,免去使用查看布局边界的花花绿绿带来的痛苦和卡顿,而且能看到每个view和layout的各类属性;
4、Dump App:命令行拓展,构造了一个命令行与Android App的交互通道,在命令行输入一行命令,App可以收到并且在命令行上进行反馈输出;
5、Javascript Console:Javascript控制台,在inspect的console窗口,输入Javascript可以直接进行Java调用。使用这个功能,得先引入facebook/stethostetho-js-rhino和mozilla/rhino
二、基本使用
1、初始化Stetho
首先引入在安卓项目中引用必要的依赖包,可以使用gradle,也可以直接下载jar包。
compile 'com.facebook.stetho:stetho:1.3.1'
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
需要注意的是如果使用Javascript Console需要额外引入facebook/stethostetho-js-rhino和mozilla/rhino。
2、在Application类中完成初始化
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
3、设置StethoInterceptor拦截器
OkHttpClient okHttpClient =new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
4、其他
adb方式连接到设备
运行debug模式的app
在Chrome浏览器地址栏中输入chrome://inspect
选择需要inspect的应用进程
三、Demo关键代码(除掉环境配置)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void requestNet(View view)
{
new Thread(){
@Override
public void run() {
super.run();
doNet();
}
}.start();
}
public void doNet()
{
String url = "http://www.baidu.com";
OkHttpClient okHttpClient =new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
final Request request = new Request.Builder()
.url(url)
.get()//默认就是GET请求,可以不写
.build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.d("testNet", "onFailure: ");
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.d("testNet", "onResponse: " + response.body().string());
}
});
}
}
四、调试结果并进行查看
1、初始界面
2、查看App的布局
3、网络诊断
4、数据库、sp文件查看
5、其他高级功能(不详述,通常用的较少)
Javascript Console
Dump App
五、容易出现的坑
调试某应用时第一次必须翻墙(往后就不用翻墙了),否则什么也看不到。