Depuración con Stetho en Android

Stetho es una biblioteca de depuración de código abierto desarrollada por Facebook. Le permite utilizar herramientas de depuración de Chrome para solucionar problemas de tráfico de red, por lo que proporciona una experiencia de depuración rica e interactiva para los desarrolladores de Android. Stetho depura fácilmente y sin problemas las llamadas de red. Es un puente de depuración sofisticado para aplicaciones de Android. Aplicación de volcado de herramientas para desarrolladores de Chrome

Características de Stetho

  1. Stetho es una plataforma de depuración de código abierto.
  2. Proporciona una experiencia rica y altamente interactiva.
  3. Con la ayuda de Stetho, la depuración de aplicaciones nativas es muy sencilla.
  4. Le ofrece utilizar la herramienta de depuración de Google Chrome para diversas actividades.
  5. Proporciona inspección de jerarquía durante la depuración.
  6. Además, Stetho permite la administración de redes, bases de datos y más funciones interactivas.
  7. Stetho utiliza un socket web HTTP para enviar datos.

El problema

El problema con la depuración del tráfico de red mientras se desarrollan aplicaciones de Android, los problemas que enfrenta el depurador con las herramientas de depuración tradicionales se estropean y la inspección se vuelve muy compleja al cambiar los dispositivos.

La solución proporcionada por Stetho

La depuración es más confiable y fácil con la biblioteca Stetho porque usa la herramienta de depuración de Chrome que es compatible con web-socket y la usa para la depuración de red. Stetho automatizó la inspección de llamadas, por lo que se vuelve más importante para los desarrolladores de Android. 

¿Cómo trabajar con la herramienta Chrome Dev?

Stetho utiliza un servidor HTTP web Socket que envía toda la información de depuración al navegador. Es accesible a través de:

cromo://inspeccionar

Implementación paso a paso

Paso 1: agregue la siguiente dependencia en el archivo build.gradle.

implementación ‘com.facebook.stetho:stetho-okhttp3:1.5.1’

Paso 2: registra tu clase en AndroidManifest.xml e inicialízala en la aplicación.

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);
    }
}

O

Inicialice su biblioteca con una sola línea de código (por ejemplo):

Java

public class Applicationstetho extends Application {
  public void onCreate() {
    super.onCreate();
    if(BuildConfig.DEBUG ){
      Stetho.initializeWithDefault(this)
      }
  }
}

Actualización de su archivo de manifiesto en su proyecto de Android:

XML

<?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>

Paso 3: habilite la inspección de red.

El siguiente método es la forma más fácil y simple de habilitar la inspección de red cuando construye la instancia de okHttpClient:

okHttpClient.Builder()

           .addNetworkInterceptor(EstetoInterceptor())

           .construir()

¿Como revisar?

Inicie el emulador en el dispositivo. Luego abra chrome://inspect en Chrome y debería aparecer su dispositivo emulador, luego haga clic en inspeccionar para abrir una nueva ventana y haga clic en la pestaña de red para ver el tráfico de red.

Publicación traducida automáticamente

Artículo escrito por abhijat_sarari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *