Stetho es una biblioteca para la depuración de aplicaciones Android, desarrollada por Facebook (Meta) en 2014. La herramienta se integra en la aplicación mediante una dependencia de Gradle y abre acceso al estado interno a través de Chrome DevTools. Según el repositorio facebook/stetho (2026), la biblioteca admite la inspección de SQLite, Network, SharedPreferences, View Hierarchy y plugins de Dumpapp.
Puntos clave
Stetho es una biblioteca Java que ejecuta un servidor WebSocket local dentro de la aplicación Android. Chrome DevTools se conecta a este servidor a través de un puerto adb, obteniendo acceso a los componentes internos de la aplicación: bases de datos, peticiones de red, preferencias y la jerarquía de vistas. Toda la comunicación pasa por el Protocolo de Chrome DevTools, lo que permite usar las herramientas estándar del navegador sin instalar software adicional.
La biblioteca consta de módulos: stetho (núcleo), stetho-okhttp (interceptación de tráfico a través de OkHttp), stetho-urlconnection (interceptación a través de HttpURLConnection) y stetho-js-rhino (soporte para plugins de JavaScript). El núcleo abre un socket UNIX al que Chrome se conecta mediante adb forward. Cada inspector se implementa como un plugin separado que se registra al inicializar Stetho.
Stetho admite Android 4.4+ (API 19) y solo funciona en builds de depuración. En dispositivos con Android 11+ se requiere un permiso INTERNET explícito en el manifiesto. La biblioteca no recibe soporte oficial de Facebook desde 2020, pero el código permanece abierto y se usa en proyectos legacy. Para proyectos nuevos Google recomienda Android Studio Profiler y Network Inspector.
Conexión mediante una dependencia de Gradle con la bandera debugImplementation para que Stetho funcione solo en el build de depuración. La inicialización ocurre en el método Application.onCreate() con una única llamada a Stetho.initializeWithDefaults(this). Para Network Inspector se requiere la integración con OkHttp a través de un Interceptor.
// build.gradle (app) — añadir Stetho
dependencies {
debugImplementation 'com.facebook.stetho:stetho:1.6.0'
debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}
// Inicialización en la clase Application
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
Para interceptar peticiones de red a través de OkHttp, añada StethoInterceptor a la cadena de interceptores. Stetho registra automáticamente la URL, las cabeceras de la petición y la respuesta, el código de estado y el tiempo de ejecución. Los datos se muestran en la pestaña Network de Chrome DevTools después de conectar el dispositivo a través de chrome://inspect.
Network Inspector de Stetho muestra todas las peticiones HTTP de la aplicación en orden cronológico. Para cada petición están disponibles: método, URL, código de estado, cabeceras de la petición y la respuesta, cuerpo de la petición y la respuesta (incluidos JSON y datos binarios). La pestaña Preview muestra el cuerpo de la respuesta en formato legible.
Chrome DevTools admite el filtrado de peticiones por tipo (XHR, JS, CSS, Doc), código de estado y dominio. El campo de búsqueda filtra por URL y contenido. Para desarrollo móvil es útil agrupar las peticiones por dominio de API y comprobar la secuencia de llamadas al probar las pantallas de la aplicación.
// Cliente OkHttp con interceptor Stetho
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
// Ejecutar una petición
Request request = new Request.Builder()
.url("https://api.example.com/users")
.build();
client.newCall(request).enqueue(callback);
Database Inspector de Stetho se conecta a las bases de datos SQLite de la aplicación a través de Chrome DevTools. En la pestaña Resources → Web SQL se muestran todas las bases de datos abiertas, sus tablas y su contenido. Está disponible la visualización de la estructura de tablas, índices y la ejecución de consultas SQL arbitrarias.
En la consola de Chrome DevTools se pueden ejecutar consultas SQL directamente contra la base de la aplicación: SELECT, INSERT, UPDATE, DELETE. Esto es útil para limpiar datos antes de las pruebas, verificar la corrección de las migraciones y corregir manualmente registros incorrectos sin reconstruir la aplicación. Todos los cambios son visibles de inmediato en el dispositivo.
Dumpapp es la interfaz shell de Stetho que permite ejecutar comandos personalizados a través de adb. Los plugins de Dumpapp se registran al inicializar Stetho y pueden exportar cualquier estado de la aplicación: caché, configuración, estado del contenedor DI. Los comandos se ejecutan como adb forward tcp:12345 localabstract:stetho_dumpapp.
El plugin implementa la interfaz DumperContext y se registra a través de Stetho.initialize con un InspectorModules personalizado. El ejemplo siguiente muestra un plugin para el volcado de SharedPreferences: los datos se serializan a JSON y se muestran en la terminal mediante un comando adb.
// Plugin Dumpapp personalizado para SharedPreferences
public class PrefsDumper implements DumperContext {
@Override
public String getName() {
return "prefs";
}
@Override
public void dump(DumperContext ctx) {
SharedPreferences sp = ctx.getContext()
.getSharedPreferences("app_prefs", Context.MODE_PRIVATE);
ctx.getStdout().println(sp.getAll().toString());
}
}
Android Studio ofrece herramientas de perfilado integradas: Network Profiler, Database Inspector y View Inspector, introducidas en Android Studio 4.1+. Stetho fue popular antes de la introducción de estas herramientas y sigue siendo relevante para proyectos que usan OkHttp y requieren integración con Chrome DevTools.
| Criterio | Stetho | Android Studio Inspector |
|---|---|---|
| Instalación | Dependencia de Gradle | Integrado en el IDE |
| Network | A través de OkHttp Interceptor | Automático para API 26+ |
| SQLite | Chrome DevTools + consultas SQL | Solo Android Studio |
| SharedPreferences | Sí (plugin de Dumpapp) | No |
| View Hierarchy | Elements de Chrome DevTools | Layout Inspector |
| Soporte | Comunidad (legacy) | Oficial de Google |
Stetho está justificado en proyectos legacy donde OkHttp ya se usa y el equipo está acostumbrado a Chrome DevTools. Para proyectos nuevos Android Studio Inspector cubre la mayoría de los escenarios de depuración. Sin embargo, Chrome DevTools sigue siendo más cómodo para consultas SQLite: la consola integrada con autocompletado de SQL es más rápida que los clics secuenciales en el IDE.
View Hierarchy en Stetho se muestra en la pestaña Elements de Chrome DevTools como un árbol tipo DOM. Cada View se representa como un elemento HTML con atributos: id, layout_width, layout_height, padding, margin, visibility y texto. Los cambios en el árbol se sincronizan en tiempo real al rotar la pantalla o actualizar la UI.
Al seleccionar un elemento del árbol, puede ver sus propiedades en el panel Styles, de forma similar a la inspección de páginas web. Stetho muestra los tamaños calculados, los rellenos, el color de fondo y el estado (pressed, focused, enabled). Cambiar algunas propiedades en DevTools se aplica inmediatamente a la aplicación, lo que acelera la selección de parámetros de UI sin reconstruir.
Stetho ayuda a detectar fugas de memoria relacionadas con View: si una Activity no se destruye después de finish(), su View raíz permanece en el árbol. Con una comprobación periódica de la pestaña Elements puede notar Activities fantasma y encontrar la fuente de la fuga, normalmente referencias estáticas a Context o diálogos sin cerrar.
Stetho es eficaz para verificar la serialización JSON antes de enviarla al servidor. Abra Network Inspector, encuentre la petición y vea el cuerpo en modo Raw para comprobar la estructura de datos y la corrección de los campos.
Stetho muestra todas las bases creadas con SQLiteOpenHelper. Si la base no aparece en Chrome DevTools, compruebe que getWritableDatabase() se haya llamado al menos una vez en el código de la aplicación.
Stetho debe ser el último interceptor en la cadena de OkHttp para ver las peticiones modificadas. El orden correcto: AuthInterceptor primero, luego LoggingInterceptor y finalmente StethoInterceptor.
Stetho es eficaz para verificar la corrección de la serialización JSON antes de enviarla al servidor. Abra Network Inspector, encuentre la petición y vea el cuerpo de la petición en modo Raw para asegurarse de que la estructura de los campos y los tipos de datos son correctos.
Stetho muestra todas las bases de datos creadas con SQLiteOpenHelper. Si la base no aparece en Chrome DevTools, compruebe que el método getWritableDatabase() se haya llamado al menos una vez en el código de la aplicación. Para las migraciones, ejecute ALTER TABLE a través de la consola SQL y verifique el resultado con una consulta SELECT.
Stetho debe ser el último interceptor en la cadena de OkHttp para mostrar las peticiones modificadas finales. La secuencia correcta: AuthInterceptor primero, luego LoggingInterceptor y finalmente StethoInterceptor para un registro correcto.
Preguntas frecuentes
Conecte el dispositivo por USB, ejecute adb forward tcp:8080 localabstract:stetho_default y abra la página chrome://inspect en Chrome. Asegúrese de que Stetho esté inicializado en el código de la aplicación y de que el dispositivo aparezca en la lista Remote Target.
Sí, Stetho funciona en Android 12+, pero requiere un permiso INTERNET explícito en el manifiesto. En Android 14+ puede ser necesaria una actualización de ADB. Para proyectos nuevos Google recomienda Android Studio Inspector, pero Stetho sigue funcionando en todas las versiones.
Sí, SQLite Inspector, SharedPreferences y View Hierarchy funcionan sin OkHttp. Network Inspector requiere integración con OkHttp o HttpURLConnection a través de los módulos stetho-okhttp3 o stetho-urlconnection. El núcleo base de Stetho no depende de una biblioteca de red.
Use debugImplementation en Gradle: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. En un build de release el código de Stetho no se compila. Si la inicialización está en una clase separada, envuelva la llamada con una comprobación de BuildConfig.DEBUG.
Las principales alternativas: Chucker (inspección de HTTP dentro de la aplicación, con UI), las herramientas Android Studio Profiler y Network Inspector, así como Flipper (una plataforma modular de Facebook con funcionalidad ampliada). Chucker es especialmente popular como solución in-app sin Chrome DevTools.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también