Stetho — ce este, depanarea Android prin Chrome DevTools

Autor: IT Sectr Publicat: 2026-05-08 Timp de citire: 8 min

Stetho — o bibliotecă pentru depanarea aplicațiilor Android, dezvoltată de Facebook (Meta) în 2014. Instrumentul se integrează în aplicație prin dependența Gradle și deschide accesul la starea internă prin Chrome DevTools. Conform depozitului facebook/stetho (2026), biblioteca suportă inspecția SQLite, Network, SharedPreferences, View Hierarchy și a pluginurilor Dumpapp.

Principalele

  • Stetho — o bibliotecă de la Facebook pentru inspecția aplicațiilor Android prin Chrome DevTools fără acces root.
  • SQLite Inspector permite vizualizarea, editarea și executarea de interogări către bazele de date ale aplicației în timp real.
  • Network Inspector interceptează traficul HTTP/HTTPS prin OkHttp și HttpURLConnection, afișând antetele și corpul.
  • SharedPreferences Inspector afișează toate fișierele XML de setări cu posibilitatea de vizualizare și modificare a valorilor.
  • Dumpapp oferă o interfață shell pentru executarea de comenzi personalizate pe dispozitiv prin adb.

Ce este Stetho și cum funcționează

Stetho — este o bibliotecă Java care pornește un server local WebSocket în interiorul aplicației Android. Chrome DevTools se conectează la acest server prin portul adb, obținând acces la componentele interne ale aplicației: baze de date, cereri de rețea, preferences și ierarhia view. Toată comunicarea trece prin protocolul Chrome DevTools Protocol, ceea ce permite utilizarea instrumentelor standard ale browserului fără instalarea de software suplimentar.

Arhitectură și componente

Biblioteca este formată din module: stetho (nucleul), stetho-okhttp (interceptarea traficului prin OkHttp), stetho-urlconnection (interceptarea prin HttpURLConnection) și stetho-js-rhino (suport pentru pluginuri JavaScript). Nucleul deschide un socket UNIX la care Chrome se conectează prin adb forward. Fiecare inspector este implementat ca un plugin separat, înregistrat la inițializarea Stetho.

Cerințe și limitări

Stetho suportă Android 4.4+ (API 19) și funcționează doar în build-urile de debug. Pe dispozitivele cu Android 11+ este necesară permisiunea explicită INTERNET în manifest. Biblioteca nu este susținută oficial de Facebook din 2020, dar codul rămâne deschis și este folosit în proiectele legacy. Pentru proiectele noi, Google recomandă Android Studio Profiler și Network Inspector.

Conectarea și configurarea Stetho în proiectul Android

Conectarea se face prin dependența Gradle cu flag-ul debugImplementation, pentru ca Stetho să funcționeze doar în build-ul de debug. Inițializarea are loc în metoda Application.onCreate() printr-un singur apel Stetho.initializeWithDefaults(this). Pentru Network Inspector este necesară integrarea cu OkHttp prin Interceptor.

groovy
// build.gradle (aplicație) — conectarea Stetho
dependencies {
    debugImplementation 'com.facebook.stetho:stetho:1.6.0'
    debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}

// Inițializare în clasa Application
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

Configurarea Network Interceptor

Pentru interceptarea cererilor de rețea prin OkHttp, adăugați StethoInterceptor în lanțul de interceptori. Stetho loghează automat URL-ul, antetele cererii și răspunsului, codul de status și timpul de execuție. Datele se afișează în tab-ul Network din Chrome DevTools după conectarea la dispozitiv prin chrome://inspect.

Network Inspector: interceptarea traficului HTTP

Network Inspector al Stetho afișează toate cererile HTTP ale aplicației în ordine cronologică. Pentru fiecare cerere sunt disponibile: metoda, URL-ul, codul de status, antetele cererii și răspunsului, corpul cererii și răspunsului (inclusiv JSON și date binare). Tab-ul Preview afișează corpul răspunsului într-o formă formatată.

Filtrarea și căutarea cererilor

Chrome DevTools suportă filtrarea cererilor după tip (XHR, JS, CSS, Doc), cod de status și domeniu. Câmpul de căutare filtrează după URL și conținut. Pentru dezvoltarea mobilă este util să grupați cererile după domeniul API și să verificați secvența de apeluri la testarea ecranelor aplicației.

java
// Client OkHttp cu interceptor Stetho
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

// Executarea cererii
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: lucrul cu SQLite

Database Inspector al Stetho se conectează la bazele de date SQLite ale aplicației prin Chrome DevTools. În tab-ul Resources → Web SQL sunt afișate toate bazele de date deschise, tabelele lor și conținutul. Este disponibilă vizualizarea structurii tabelelor, a indecșilor și executarea de interogări SQL arbitrare.

Executarea interogărilor SQL prin DevTools

În consola Chrome DevTools puteți executa interogări SQL direct către baza aplicației: SELECT, INSERT, UPDATE, DELETE. Acest lucru este util pentru curățarea datelor înainte de testare, verificarea corectitudinii migrărilor și corectarea manuală a înregistrărilor incorecte fără recompilarea aplicației. Toate modificările sunt imediat vizibile pe dispozitiv.

Dumpapp și pluginurile personalizate

Dumpapp — este interfața shell a Stetho care permite executarea de comenzi personalizate prin adb. Pluginurile Dumpapp se înregistrează la inițializarea Stetho și pot exporta orice stare a aplicației: cache, setări, starea containerului DI. Comenzile se execută ca adb forward tcp:12345 localabstract:stetho_dumpapp.

Crearea unui plugin personalizat Dumpapp

Pluginul implementează interfața DumperContext și se înregistrează prin Stetho.initialize cu un InspectorModules personalizat. Exemplul de mai jos arată un plugin pentru dump-ul SharedPreferences: datele sunt serializate în JSON și afișate în terminal prin comanda adb.

java
// Plugin personalizat Dumpapp pentru 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());
    }
}

Stetho vs Android Studio Inspector: comparație

Android Studio oferă instrumente de profilare integrate: Network Profiler, Database Inspector și View Inspector, apărute în Android Studio 4.1+. Stetho a fost popular până la introducerea acestor instrumente și rămâne relevant pentru proiectele care folosesc OkHttp și necesită integrare cu Chrome DevTools.

CriteriuStethoAndroid Studio Inspector
InstalareDependență GradleIntegrat în IDE
NetworkPrin OkHttp InterceptorAutomat pentru API 26+
SQLiteChrome DevTools + interogări SQLDoar Android Studio
SharedPreferencesDa (plugin Dumpapp)Nu
View HierarchyChrome DevTools ElementsLayout Inspector
SuportCommunity (legacy)Oficial Google

Când să alegeți Stetho

Stetho este justificat în proiectele legacy unde OkHttp este deja folosit și echipa este obișnuită cu Chrome DevTools. Pentru proiectele noi, Android Studio Inspector acoperă majoritatea scenariilor de depanare. Totuși, Chrome DevTools este în continuare mai comod pentru interogările SQLite: consola integrată cu autocompletare SQL este mai rapidă decât click-urile succesive în IDE.

Inspecția View Hierarchy prin Stetho

View Hierarchy în Stetho este afișat în tab-ul Elements din Chrome DevTools ca un arbore asemănător cu DOM. Fiecare View este reprezentat ca un element HTML cu atribute: id, layout_width, layout_height, padding, margin, visibility și text. Modificările din arbore se sincronizează în timp real la rotirea ecranului sau la actualizarea UI.

Vizualizarea și modificarea proprietăților

Selectând un element în arbore, puteți vizualiza proprietățile sale în panoul Styles — similar inspecției paginilor web. Stetho afișează dimensiunile calculate, spațierile, culoarea de fundal și starea (pressed, focused, enabled). Modificarea unor proprietăți în DevTools se aplică imediat aplicației, ceea ce accelerează ajustarea parametrilor UI fără recompilare.

Căutarea scurgerilor de memorie prin View Inspector

Stetho ajută la detectarea scurgerilor de memorie legate de View: dacă Activity nu este distrusă după finish(), View-ul său rădăcină rămâne în arbore. Prin verificarea regulată a tab-ului Elements puteți observa Activity-uri fantomă și găsi sursa scurgerii — de obicei sunt referințe statice la Context sau dialoguri neînchise.

Tehnici practice de depanare

Stetho este eficient pentru verificarea serializării JSON înainte de trimiterea pe server. Deschideți Network Inspector, găsiți cererea și vizualizați corpul în modul Raw pentru a verifica structura datelor și corectitudinea câmpurilor.

Depanarea SQLiteOpenHelper

Stetho afișează toate bazele create prin SQLiteOpenHelper. Dacă baza nu apare în Chrome DevTools — verificați că getWritableDatabase() a fost apelat cel puțin o dată în codul aplicației.

Ordinea Interceptor în OkHttp

Stetho trebuie să fie ultimul interceptor din lanțul OkHttp pentru a vedea cererile modificate. Ordinea corectă: AuthInterceptor first, apoi LoggingInterceptor, iar StethoInterceptor la final.

Tehnici practice de depanare cu Stetho

Stetho este eficient pentru verificarea corectitudinii serializării JSON înainte de trimiterea pe server. Deschideți Network Inspector, găsiți cererea și vizualizați corpul cererii în modul Raw pentru a vă asigura de corectitudinea structurii câmpurilor și a tipurilor de date.

Depanarea SQLiteOpenHelper și ContentProvider

Stetho afișează toate bazele de date create prin SQLiteOpenHelper. Dacă baza nu apare în Chrome DevTools — verificați că metoda getWritableDatabase() a fost apelată cel puțin o dată în codul aplicației. Pentru migrări, executați ALTER TABLE prin consola SQL și verificați rezultatul cu o interogare SELECT.

Ordinea Interceptor în lanțul OkHttp

Stetho trebuie să fie ultimul interceptor din lanțul OkHttp pentru a afișa cererile finale modificate. Secvența corectă: AuthInterceptor primul, apoi LoggingInterceptor, iar StethoInterceptor la final pentru logarea corectă.

Întrebări frecvente

Cum mă conectez la Stetho prin Chrome DevTools?

Conectați dispozitivul prin USB, executați adb forward tcp:8080 localabstract:stetho_default și deschideți în Chrome pagina chrome://inspect. Asigurați-vă că Stetho este inițializat în codul aplicației și dispozitivul a fost detectat în lista Remote Target.

Funcționează Stetho pe Android 12+?

Da, Stetho funcționează pe Android 12+, dar necesită permisiunea explicită INTERNET în manifest. Pe Android 14+ poate fi necesară actualizarea ADB. Pentru proiectele noi Google recomandă Android Studio Inspector, dar Stetho rămâne funcțional pe toate versiunile.

Pot folosi Stetho fără OkHttp?

Da, SQLite Inspector, SharedPreferences și View Hierarchy funcționează fără OkHttp. Network Inspector necesită integrare cu OkHttp sau HttpURLConnection prin modulele stetho-okhttp3 sau stetho-urlconnection. Nucleul de bază al Stetho nu depinde de o bibliotecă de rețea.

Cum dezactivez Stetho în build-ul release?

Folosiți debugImplementation în Gradle: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. În build-ul release, codul Stetho nu este compilat. Dacă inițializarea este mutată într-o clasă separată — înfășurați apelul cu verificarea BuildConfig.DEBUG.

Ce alternative la Stetho există în 2026?

Principalele alternative: Chucker (inspecția HTTP în aplicație, cu UI), instrumentele Android Studio Profiler și Network Inspector, precum și Flipper (platformă modulară de la Facebook cu funcționalitate extinsă). Chucker este deosebit de popular ca soluție in-app fără Chrome DevTools.

Concluzii

  • Stetho — biblioteca Facebook (Meta) pentru depanarea Android prin Chrome DevTools, care funcționează cu API 19+.
  • Conectarea prin Gradle debugImplementation și inițializare în Application.onCreate() fără permisiuni suplimentare.
  • Network Inspector interceptează traficul HTTP prin OkHttp Interceptor cu afișarea tuturor detaliilor cererii și răspunsului.
  • SQLite Inspector permite executarea de interogări SQL arbitrare către bazele de date ale aplicației în timp real.
  • Dumpapp oferă interfața shell pentru crearea de comenzi personalizate de dump al stării aplicației prin adb.
  • Stetho vs Android Studio — Stetho este comod pentru SQLite și proiecte legacy, Studio Inspector este standardul pentru dezvoltările noi.
  • Chucker și Flipper — alternative moderne cu UI in-app și arhitectură modulară.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și