📜  在Android中使用Stetho进行调试

📅  最后修改于: 2021-05-10 14:50:54             🧑  作者: Mango

Stetho是Facebook开发的开源调试库。它允许您使用chrome调试工具对网络流量进行故障排除,从而为android开发人员提供了丰富的交互式调试体验。 Stetho轻松轻松地调试网络呼叫。它是适用于Android应用程序的复杂调试桥。启用后,开发人员可以访问Chrome桌面浏览器本地提供的Chrome开发者工具功能。开发人员还可以选择允许使用可选的dumpapp工具,该工具允许向应用程序内部提供功能强大的命令行界面。不仅限于网络检查,JavaScript控制台,数据库检查等功能。

Stetho的功能

  1. Stetho是一个开源调试平台。
  2. 它提供了丰富而高度互动的体验。
  3. 借助Stetho本地应用程序的调试非常简单。
  4. 它为您提供了使用Google Chrome调试工具进行各种活动的功能。
  5. 它在调试期间提供层次结构检查。
  6. 此外,Stetho还允许网络,数据库管理和更多交互功能。
  7. Stetho使用HTTP Web套接字发送数据。

问题

开发android应用程序时调试网络流量的问题,传统调试工具面临的调试器问题弄得一团糟,并且在切换设备时检查变得非常复杂。

Stetho提供的解决方案

使用Stetho库的调试更可靠,更容易,因为它使用了支持Web套接字并将其用于网络调试的chrome调试工具。 Stetho使呼叫检查自动化,因此对于android开发人员来说变得更加重要。

如何使用Chrome开发工具?

Stetho使用HTTP Web Socket服务器将所有调试信息发送到浏览器。可通过以下方式访问它:

分步实施

步骤1:在build.gradle文件中添加以下依赖项。

步骤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实例时,以下方法是启用网络检查的最简便方法:

怎么检查?

在设备上启动仿真器。然后在Chrome上打开chrome:// inspect ,然后会出现您的仿真器设备,然后单击“检查”以启动新窗口,然后单击“网络”标签以查看网络流量。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处,前往由我们的专家精心策划的指南,以使您立即做好行业准备!