Stetho — mi ez, Android hibakeresése Chrome DevTools segítségével

Szerző: IT Sectr Megjelenés: 2026-05-08 Olvasási idő: 8 perc

Stetho — Android alkalmazások hibakeresésére szolgáló könyvtár, amelyet a Facebook (Meta) fejlesztett ki 2014-ben. Az eszköz Gradle-függőségen keresztül integrálódik az alkalmazásba, és a Chrome DevTools segítségével hozzáférést nyit a belső állapothoz. A facebook/stetho repozitórium (2026) szerint a könyvtár támogatja a SQLite, a Network, a SharedPreferences, a View Hierarchy és a Dumpapp-bővítmények ellenőrzését.

A legfontosabbak

  • Stetho — a Facebook könyvtára Android-alkalmazások ellenőrzésére a Chrome DevTools segítségével root-hozzáférés nélkül.
  • SQLite Inspector lehetővé teszi az alkalmazás adatbázisainak valós idejű megtekintését, szerkesztését és lekérdezését.
  • Network Inspector a HTTP/HTTPS forgalmat fogja el az OkHttp és a HttpURLConnection segítségével, megjelenítve a fejléceket és a törzset.
  • SharedPreferences Inspector megjeleníti az összes XML beállításfájlt az értékek megtekintésének és módosításának lehetőségével.
  • Dumpapp shell-interfészt biztosít egyéni parancsok eszközön történő végrehajtásához adb segítségével.

Mi az a Stetho és hogyan működik

Stetho — egy Java-könyvtár, amely helyi WebSocket-kiszolgálót indít az Android-alkalmazáson belül. A Chrome DevTools az adb-porton keresztül csatlakozik ehhez a kiszolgálóhoz, hozzáférést szerezve az alkalmazás belső összetevőihez: adatbázisok, hálózati kérések, preferences és view-hierarchia. Minden kommunikáció a Chrome DevTools Protocol protokollon keresztül történik, ami lehetővé teszi a böngésző szabványos eszközeinek használatát további szoftver telepítése nélkül.

Architektúra és összetevők

A könyvtár modulokból áll: stetho (mag), stetho-okhttp (forgalom elfogása az OkHttp segítségével), stetho-urlconnection (elfogás a HttpURLConnection segítségével) és stetho-js-rhino (JavaScript-bővítmények támogatása). A mag UNIX-socketet nyit, amelyhez a Chrome adb forward segítségével csatlakozik. Minden inspector külön bővítményként van megvalósítva, amelyet a Stetho inicializálásakor regisztrálnak.

Követelmények és korlátozások

A Stetho támogatja az Android 4.4+ (API 19) rendszert, és csak debug-buildekben működik. Az Android 11+ rendszerű eszközökön kifejezett INTERNET-engedély szükséges a manifestben. A könyvtárat 2020 óta hivatalosan nem támogatja a Facebook, de a kód nyitva marad, és legacy-projektekben használják. Új projektekhez a Google az Android Studio Profiler és a Network Inspector használatát javasolja.

A Stetho csatlakoztatása és konfigurálása Android-projektben

Csatlakoztatás a Gradle-függőségen keresztül történik a debugImplementation zászlóval, hogy a Stetho csak debug-buildben működjön. Az inicializálás a Application.onCreate() metódusban történik egyetlen Stetho.initializeWithDefaults(this) hívással. A Network Inspectorhoz az OkHttp-val való integráció szükséges Interceptor segítségével.

groovy
// build.gradle (alkalmazás) — a Stetho csatlakoztatása
dependencies {
    debugImplementation 'com.facebook.stetho:stetho:1.6.0'
    debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}

// Inicializálás az Application osztályban
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

A Network Interceptor konfigurálása

A hálózati kérések OkHttp-n keresztüli elfogásához adja hozzá a StethoInterceptor-t az interceptorok láncához. A Stetho automatikusan naplózza az URL-t, a kérés és válasz fejléceit, az állapotkódot és a végrehajtási időt. Az adatok a Chrome DevTools Network fülén jelennek meg, miután a chrome://inspect segítségével csatlakozott az eszközhöz.

Network Inspector: HTTP-forgalom elfogása

A Stetho Network Inspector-e az alkalmazás összes HTTP-kérését időrendi sorrendben jeleníti meg. Minden kéréshez elérhető: metódus, URL, állapotkód, a kérés és válasz fejlécei, a kérés és válasz törzse (beleértve a JSON-t és a bináris adatokat). A Preview fül a válasz törzsét formázott formában mutatja.

A kérések szűrése és keresése

A Chrome DevTools támogatja a kérések szűrését típus (XHR, JS, CSS, Doc), állapotkód és tartomány szerint. A keresőmező URL és tartalom szerint szűr. Mobil fejlesztéshez hasznos az API-tartomány szerint csoportosítani a kéréseket, és ellenőrizni a hívások sorrendjét az alkalmazás képernyőinek tesztelésekor.

java
// OkHttp-kliens Stetho interceptorral
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

// A kérés végrehajtása
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: munka a SQLite-tal

A Stetho Database Inspector-e a Chrome DevTools segítségével csatlakozik az alkalmazás SQLite-adatbázisaihoz. A Resources → Web SQL fülön megjelenik az összes megnyitott adatbázis, azok táblái és tartalma. Elérhető a táblák szerkezetének, az indexeknek a megtekintése és tetszőleges SQL-lekérdezések végrehajtása.

SQL-lekérdezések végrehajtása a DevTools segítségével

A Chrome DevTools konzoljában közvetlenül az alkalmazás adatbázisán hajthatók végre SQL-lekérdezések: SELECT, INSERT, UPDATE, DELETE. Ez hasznos az adatok tisztításához tesztelés előtt, a migrációk helyességének ellenőrzéséhez és a hibás rekordok kézi javításához az alkalmazás újraépítése nélkül. Minden változás azonnal látható az eszközön.

Dumpapp és egyéni bővítmények

Dumpapp — a Stetho shell-interfésze, amely lehetővé teszi egyéni parancsok végrehajtását adb segítségével. A Dumpapp-bővítményeket a Stetho inicializálásakor regisztrálják, és az alkalmazás bármely állapotát exportálhatják: gyorsítótár, beállítások, a DI-konténer állapota. A parancsok a következőképpen hajthatók végre: adb forward tcp:12345 localabstract:stetho_dumpapp.

Egyéni Dumpapp-bővítmény létrehozása

A bővítmény a DumperContext interfészt valósítja meg, és egyéni InspectorModules segítségével regisztrálják a Stetho.initialize-n keresztül. Az alábbi példa a SharedPreferences dumpjához való bővítményt mutat: az adatok JSON-ba szerializálódnak, és adb-parancs segítségével a terminálban jelennek meg.

java
// Egyéni Dumpapp-bővítmény a SharedPreferences-hez
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: összehasonlítás

Android Studio beépített profilozó eszközöket kínál: Network Profiler, Database Inspector és View Inspector, amelyek az Android Studio 4.1+ verzióban jelentek meg. A Stetho népszerű volt ezen eszközök bevezetése előtt, és továbbra is aktuális az OkHttp-t használó, Chrome DevTools-integrációt igénylő projekteknél.

KritériumStethoAndroid Studio Inspector
TelepítésGradle-függőségBeépített az IDE-be
NetworkOkHttp Interceptor segítségévelAutomatikus az API 26+ esetén
SQLiteChrome DevTools + SQL-lekérdezésekCsak Android Studio
SharedPreferencesIgen (Dumpapp-bővítmény)Nem
View HierarchyChrome DevTools ElementsLayout Inspector
TámogatásCommunity (legacy)Hivatalos Google

Mikor válasszuk a Stetho-t

Stetho legacy-projektekben indokolt, ahol az OkHttp már használatban van, és a csapat hozzászokott a Chrome DevTools-hoz. Új projektekhez az Android Studio Inspector a hibakeresési forgatókönyvek nagy részét lefedi. A Chrome DevTools azonban továbbra is kényelmesebb a SQLite-lekérdezésekhez: az SQL-automatikus kiegészítéssel ellátott beépített konzol gyorsabb, mint az IDE-ben történő egymást követő kattintások.

A View Hierarchy ellenőrzése a Stetho segítségével

View Hierarchy a Stetho-ban a Chrome DevTools Elements fülén DOM-szerű faként jelenik meg. Minden View HTML-elemként jelenik meg attribútumokkal: id, layout_width, layout_height, padding, margin, visibility és szöveg. A fában bekövetkező változások valós időben szinkronizálódnak a képernyő elforgatásakor vagy az UI frissítésekor.

Tulajdonságok megtekintése és módosítása

Ha kiválaszt egy elemet a fában, megtekintheti annak tulajdonságait a Styles panelen — hasonlóan a weboldalak ellenőrzéséhez. A Stetho megjeleníti a számított méreteket, a margókat, a háttérszínt és az állapotot (pressed, focused, enabled). Egyes tulajdonságok DevTools-ban történő módosítása azonnal alkalmazódik az alkalmazásra, ami újraépítés nélkül gyorsítja az UI-paraméterek beállítását.

Memóriaszivárgások keresése a View Inspector segítségével

A Stetho segít azonosítani a View-val kapcsolatos memóriaszivárgásokat: ha az Activity a finish() után nem semmisül meg, annak gyökér View-ja a fában marad. Az Elements fül rendszeres ellenőrzésével észrevehetők a fantom Activity-k, és megtalálható a szivárgás forrása — általában a Context statikus hivatkozásai vagy a be nem zárt párbeszédablakok.

Gyakorlati hibakeresési technikák

Stetho hatékony a JSON-szerializáció ellenőrzésére, mielőtt a kérés a szerverre kerül. Nyissa meg a Network Inspector-t, keresse meg a kérést, és a Raw módban tekintse meg a törzset az adatszerkezet és a mezők helyességének ellenőrzéséhez.

A SQLiteOpenHelper hibakeresése

A Stetho megjeleníti az összes, SQLiteOpenHelper segítségével létrehozott adatbázist. Ha az adatbázis nem jelenik meg a Chrome DevTools-ban — ellenőrizze, hogy a getWritableDatabase() legalább egyszer meghívásra került az alkalmazás kódjában.

Az Interceptor sorrendje az OkHttp-ban

A Stetho-nak az OkHttp-lánc utolsó interceptorjának kell lennie, hogy lássa a módosított kéréseket. Helyes sorrend: AuthInterceptor first, majd LoggingInterceptor, végül StethoInterceptor.

Gyakorlati hibakeresési technikák a Stetho-val

Stetho hatékony a JSON-szerializáció helyességének ellenőrzésére, mielőtt a kérés a szerverre kerül. Nyissa meg a Network Inspector-t, keresse meg a kérést, és a Raw módban tekintse meg a kérés törzsét, hogy megbizonyosodjon a mezők szerkezetének és az adattípusok helyességéről.

A SQLiteOpenHelper és a ContentProvider hibakeresése

A Stetho megjeleníti az összes, SQLiteOpenHelper segítségével létrehozott adatbázist. Ha az adatbázis nem jelenik meg a Chrome DevTools-ban — ellenőrizze, hogy a getWritableDatabase() metódus legalább egyszer meghívásra került az alkalmazás kódjában. A migrációkhoz hajtsa végre az ALTER TABLE-t az SQL-konzolban, és ellenőrizze az eredményt SELECT-lekérdezéssel.

Az Interceptor sorrendje az OkHttp-láncban

A Stetho-nak az OkHttp-lánc utolsó interceptorjának kell lennie, hogy megjelenítse a végleges módosított kéréseket. Helyes sorrend: AuthInterceptor első, majd LoggingInterceptor, végül StethoInterceptor a helyes naplózáshoz.

Gyakran ismételt kérdések

Hogyan csatlakozhatok a Stetho-hoz a Chrome DevTools segítségével?

Csatlakoztassa az eszközt USB-n keresztül, hajtsa végre a adb forward tcp:8080 localabstract:stetho_default parancsot, és nyissa meg a Chrome-ban a chrome://inspect oldalt. Győződjön meg róla, hogy a Stetho inicializálva van az alkalmazás kódjában, és az eszköz megtalálható a Remote Target listában.

Működik-e a Stetho Android 12+ rendszeren?

Igen, a Stetho működik Android 12+ rendszeren, de kifejezett INTERNET-engedélyt igényel a manifestben. Android 14+ esetén az ADB frissítésére lehet szükség. Új projektekhez a Google az Android Studio Inspector-t javasolja, de a Stetho minden verzióban működőképes marad.

Használható-e a Stetho OkHttp nélkül?

Igen, a SQLite Inspector, a SharedPreferences és a View Hierarchy OkHttp nélkül is működik. A Network Inspector az OkHttp-val vagy a HttpURLConnection-nal való integrációt igényel a stetho-okhttp3 vagy a stetho-urlconnection modulokon keresztül. A Stetho alapmaggja nem függ hálózati könyvtártól.

Hogyan tilthatom le a Stetho-t release buildben?

Használja a debugImplementation-t a Gradle-ban: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. Release buildben a Stetho kódja nem fordul le. Ha az inicializálás külön osztályba van kiemelve — csomagolja a hívást BuildConfig.DEBUG ellenőrzésbe.

Milyen alternatívák léteznek a Stetho-ra 2026-ban?

A fő alternatívák: Chucker (HTTP-ellenőrzés az alkalmazáson belül, UI-val), az Android Studio Profiler és Network Inspector eszközei, valamint a Flipper (a Facebook moduláris platformja kibővített funkciókkal). A Chucker különösen népszerű in-app megoldásként Chrome DevTools nélkül.

Összegzés

  • Stetho — a Facebook (Meta) könyvtára az Android Chrome DevTools segítségével történő hibakereséséhez, amely API 19+ verzióval működik.
  • Csatlakoztatás Gradle debugImplementation és Application.onCreate() inicializálás révén további engedélyek nélkül.
  • Network Inspector OkHttp Interceptor segítségével fogja el a HTTP-forgalmat, megjelenítve a kérés és válasz összes részletét.
  • SQLite Inspector lehetővé teszi tetszőleges SQL-lekérdezések valós idejű végrehajtását az alkalmazás adatbázisain.
  • Dumpapp shell-interfészt biztosít egyéni parancsok létrehozásához az alkalmazás állapotának adb-n keresztüli dumpjához.
  • Stetho vs Android Studio — a Stetho kényelmes SQLite-hoz és legacy-projektekhez, a Studio Inspector az új fejlesztések szabványa.
  • Chucker és Flipper — modern alternatívák in-app UI-val és moduláris felépítéssel.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is