安卓网络调试一直是安卓网络模块开发的难题,不像web开发那样直接可以在浏览器上查看请求和响应信息
最近FaceBook发布的开源项目Stetho让安卓网络调试成为可能。
如下图所示:
、
具体是怎么实现的呢?你需要改造你的网络请求模块,使用Chrome浏览器和android程序之间的中间件Stetho来连接,OkHttp+Stetho+Chrome进行网络调试。别急,下面就跟大家聊聊这个问题。
1.首先要下载对应的几个依赖jar包
commons-cli-1.2.jar
okhttp-2.3.0.jar
okio-1.3.0.jar
stetho-1.0.1.jar
stetho-okhttp-1.0.1.jar
这几个jar包大家自行百度啊!
2. 在应用中要继承Application来初始化Stetho工具:
package com.example.chromedebug; import android.app.Application; import com.facebook.stetho.Stetho; public class App extends Application { @Override public void onCreate() { super.onCreate(); Stetho.initialize(Stetho .newInitializerBuilder(this) .enableDumpapp(Stetho.defaultDumperPluginsProvider(this)) .enableWebKitInspector( Stetho.defaultInspectorModulesProvider(this)).build()); } }
在AndroidManifest.xml中需要配置为程序的App
使用OkHttp进行网络访问时,需要在网络访问所在的JAVA类中添加静态代码块初始化StethoInspector工具,
以访问百度为例:
package com.peiandsky.chromedebug;import java.io.IOException;
import com.facebook.stetho.okhttp.StethoInterceptor;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
public class Net {
private static final boolean debug = true;
private static OkHttpClient okHttpClient = new OkHttpClient();
static {
if (debug) {
okHttpClient.networkInterceptors().add(new StethoInterceptor());
}
}
public static final void askBaidu() {
Request request = new Request.Builder().url("http://www.baidu.com")
.build();
try {
Response response = okHttpClient.newCall(request).execute();
String reslut = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行程序后发现,在chrome中输入这个url:chrome://inspect/
就会出现以下页面:
点击那个蓝色的inspect,就会发现可以进行安卓网络调试了。