Stetho是Facebook开发的开源调试库。它允许您使用chrome调试工具对网络流量进行故障排除,从而为android开发人员提供了丰富的交互式调试体验。 Stetho轻松轻松地调试网络呼叫。它是适用于Android应用程序的复杂调试桥。启用后,开发人员可以访问Chrome桌面浏览器本地提供的Chrome开发者工具功能。开发人员还可以选择允许使用可选的dumpapp工具,该工具允许向应用程序内部提供功能强大的命令行界面。不仅限于网络检查,JavaScript控制台,数据库检查等功能。
Stetho的功能
- Stetho是一个开源调试平台。
- 它提供了丰富而高度互动的体验。
- 借助Stetho本地应用程序的调试非常简单。
- 它为您提供了使用Google Chrome调试工具进行各种活动的功能。
- 它在调试期间提供层次结构检查。
- 此外,Stetho还允许网络,数据库管理和更多交互功能。
- Stetho使用HTTP Web套接字发送数据。
问题
开发android应用程序时调试网络流量的问题,传统调试工具面临的调试器问题弄得一团糟,并且在切换设备时检查变得非常复杂。
Stetho提供的解决方案
使用Stetho库的调试更可靠,更容易,因为它使用了支持Web套接字并将其用于网络调试的chrome调试工具。 Stetho使呼叫检查自动化,因此对于android开发人员来说变得更加重要。
如何使用Chrome开发工具?
Stetho使用HTTP Web Socket服务器将所有调试信息发送到浏览器。可通过以下方式访问它:
chrome://inspect
分步实施
步骤1:在build.gradle文件中添加以下依赖项。
implementation ‘com.facebook.stetho:stetho-okhttp3:1.5.1’
步骤2:在AndroidManifest.xml中注册您的类,然后在应用程序中对其进行初始化。
Java
import android.app.Application;
import android.content.Context;
import com.facebook.stetho.InspectorModulesProvider;
import com.facebook.stetho.Stetho;
import com.facebook.stetho.inspector.protocol.ChromeDevtoolsDomain;
import com.facebook.stetho.okhttp3.StethoInterceptor;
import com.facebook.stetho.rhino.JsRuntimeReplFactoryBuilder;
import com.jakewharton.caso.OkHttp3Downloader;
import com.squareup.caso.Caso;
import okhttp3.OkHttpClient;
public class Stetho extends Application {
public OkHttpClient httpClient;
@Override
public void onCreate() {
super.onCreate();
final Context context = this;
if (BuildConfig.DEBUG) {
// Create an InitializerBuilder
Stetho.InitializerBuilder initializerBuilder = Stetho.newInitializerBuilder(this);
// Enable Chrome DevTools
initializerBuilder.enableWebKitInspector(new InspectorModulesProvider() {
@Override
public Iterable get() {
// Enable command line interface
return new Stetho.DefaultInspectorModulesBuilder(context).runtimeRepl(
new JsRuntimeReplFactoryBuilder(context)
.addVariable("foo", "bar")
.build()
).finish();
}
});
// Use the InitializerBuilder to generate an Initializer
Stetho.Initializer initializer = initializerBuilder.build();
// Initialize Stetho with the Initializer
Stetho.initialize(initializer);
// Add Stetho interceptor
httpClient = new OkHttpClient.Builder().addNetworkInterceptor(new StethoInterceptor()).build();
} else {
httpClient = new OkHttpClient();
}
Caso caso = new Caso.Builder(this).downloader(new OkHttp3Downloader(httpClient)).build();
Caso.setSingletonInstance(caso);
}
}
Java
public class Applicationstetho extends Application {
public void onCreate() {
super.onCreate();
if(BuildConfig.DEBUG ){
Stetho.initializeWithDefault(this)
}
}
}
XML
...
或者
用单行代码初始化您的库(例如):
Java
public class Applicationstetho extends Application {
public void onCreate() {
super.onCreate();
if(BuildConfig.DEBUG ){
Stetho.initializeWithDefault(this)
}
}
}
在您的android项目中更新清单文件:
XML格式
...
步骤3:启用网络检查。
在构造okHttpClient实例时,以下方法是启用网络检查的最简便方法:
okHttpClient.Builder()
.addNetworkInterceptor(StethoInterceptor())
.build()
怎么检查?
在设备上启动仿真器。然后在Chrome上打开chrome:// inspect ,然后会出现您的仿真器设备,然后单击“检查”以启动新窗口,然后单击“网络”标签以查看网络流量。