安卓中使用 Stetho 进行调试
原文:https://www . geesforgeks . org/debug-with-stetho-in-Android/
Stetho 是脸书开发的开源调试库。它允许您使用 chrome 调试工具对网络流量进行故障排除。,从而为安卓开发者提供了丰富的交互调试体验。Stetho 轻松流畅地调试网络呼叫。它是安卓应用的复杂调试桥梁。 启用后,开发人员有了一条通往 Chrome 开发工具 功能的路径,该功能是 Chrome 桌面浏览器的一部分。开发人员也可以选择允许可选的 dumpapp 工具,该工具允许应用程序内部的强大命令行界面。而不仅仅局限于网络检查、JavaScript 控制台、数据库检查等功能。
斯特托的特点
- Stetho 是一个开源调试平台。
- 它提供了丰富且高度互动的体验。
- 借助 Stetho 原生应用程序调试非常简单。
- 它提供你使用谷歌 Chrome 调试工具进行各种活动。
- 它在调试期间提供层次检查。
- 此外,Stetho 允许网络、数据库管理和更多交互功能。
- Stetho 使用 HTTP 网络套接字发送数据。
问题
在开发安卓应用程序时调试网络流量的问题,调试器面临的传统调试工具的问题变得混乱,在切换设备时检查变得非常复杂。
斯特托提供的解决方案
使用 Stetho 库调试更加可靠和容易,因为它使用了支持 web-socket 的 chrome 调试工具,并将其用于网络调试。Stetho 自动化了调用检查,因此它对安卓开发者来说变得更加重要。
如何使用 Chrome 开发工具?
Stetho 使用 HTTP web Socket 服务器,将所有调试信息发送到浏览器。可通过以下途径访问:
镀铬://检查
逐步实施
步骤 1: 在 build.gradle 文件中添加以下依赖项。
实现' com . Facebook . ste tho:ste tho-okhttp3:1 . 5 . 1 '
第二步:在 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<ChromeDevtoolsDomain> 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)
}
}
}
更新 android 项目中的清单文件:
可扩展标记语言
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://geeksforgeeks.com/apk/res/android"
package="com.geeksforgeeks.sthetosample">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".StethoSample">
...
</application>
</manifest>
步骤 3: 启用网络检查。
在构造 okHttpClient 实例时,下面的方法是启用网络检查最简单的方法:
ok http 客户端。Builder()
。addNetworkInterceptor(Stethointerceptor())
。构建()
怎么查?
在设备上启动仿真器。然后在 chrome 上打开 chrome://inspect ,你的模拟器设备应该会出现,之后点击 inspects 启动一个新的窗口,点击 network 标签来观察网络流量。
版权属于:月萌API www.moonapi.com,转载请注明出处