Stetho — шта је то, дебаговање Андроида преко Chrome DevTools-а

Аутор: IT Sectr Објављено: 2026-05-08 Време читања: 8 мин

Stetho — библиотека за дебаговање Андроид апликација, развијена од стране Facebook-а (Meta) 2014. године. Алат се интегрише у апликацију преко Gradle зависности и отвара приступ унутрашњем стању преко Chrome DevTools-а. Према репозиторијуму facebook/stetho (2026), библиотека подржава инспекцију SQLite-а, Network-а, SharedPreferences-а, View Hierarchy-ја и Dumpapp додатака.

Главно

  • Stetho — библиотека од Facebook-а за инспекцију Андроид апликација преко Chrome DevTools-а без root приступа.
  • SQLite Inspector омогућава прегледање, уређивање и извршавање упита над базама података апликације у реалном времену.
  • Network Inspector пресреће HTTP/HTTPS саобраћај преко OkHttp-а и HttpURLConnection-а са приказом заглавља и тела.
  • SharedPreferences Inspector приказује све XML датотеке подешавања са могућношћу прегледа и измене вредности.
  • Dumpapp пружа shell интерфејс за извршавање прилагођених команди на уређају преко adb-а.

Шта је Stetho и како ради

Stetho — Java библиотека која покреће локални WebSocket сервер унутар Андроид апликације. Chrome DevTools се повезује на овај сервер преко adb порта, добијајући приступ унутрашњим компонентама апликације: базама података, мрежним захтевима, preferences и view хијерархији. Цела комуникација иде преко протокола Chrome DevTools Protocol, што омогућава коришћење стандардних алата прегледача без инсталирања додатног софтвера.

Архитектура и компоненте

Библиотека се састоји од модула: stetho (језгро), stetho-okhttp (пресретање саобраћаја преко OkHttp-а), stetho-urlconnection (пресретање преко HttpURLConnection-а) и stetho-js-rhino (подршка за JavaScript додатке). Језгро отвара UNIX сокет на који се Chrome повезује преко adb forward-а. Сваки инспектор је реализован као засебан додатак који се региструје при иницијализацији Stetho-а.

Захтеви и ограничењима

Stetho подржава Android 4.4+ (API 19) и ради само у debug верзијама. На уређајима са Android 11+ потребна је експлицитна INTERNET дозвола у манифесту. Библиотеку Facebook званично не подржава од 2020. године, али код остаје отворен и користи се у legacy пројектима. За нове пројекте Google препоручује Android Studio Profiler и Network Inspector.

Повезивање и подешавање Stetho-а у Андроид пројекту

Повезивање се врши преко Gradle зависности са заставицом debugImplementation, како би Stetho радио само у debug верзији. Иницијализација се дешава у методи Application.onCreate() једним позивом Stetho.initializeWithDefaults(this). За Network Inspector потребна је интеграција са OkHttp-ом преко Interceptor-а.

groovy
// build.gradle (апликација) — повезивање Stetho-а
dependencies {
    debugImplementation 'com.facebook.stetho:stetho:1.6.0'
    debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}

// Иницијализација у Application класи
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

Подешавање Network Interceptor-а

За пресретање мрежних захтева преко OkHttp-а додајте StethoInterceptor у ланац пресретача. Stetho аутоматски бележи URL, заглавља захтева и одговора, статусни код и време извршења. Подаци се приказују у картици Network у Chrome DevTools-у након повезивања на уређај преко chrome://inspect.

Network Inspector: пресретање HTTP саобраћаја

Network Inspector Stetho-а приказује све HTTP захтеве апликације у хронолошком редоследу. За сваки захтев су доступни: метода, URL, статусни код, заглавља захтева и одговора, тело захтева и одговора (укључујући JSON и бинарне податке). Картица Preview приказује тело одговора у форматираном облику.

Филтрирање и претрага захтева

Chrome DevTools подржава филтрирање захтева по типу (XHR, JS, CSS, Doc), статусном коду и домену. Поље за претрагу филтрира по URL-у и садржају. За мобилни развој корисно је груписати захтеве по API домену и проверавати редослед позива при тестирању екрана апликације.

java
// OkHttp клијент са Stetho interceptor-ом
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

// Извршење захтева
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: рад са SQLite-ом

Database Inspector Stetho-а повезује се са SQLite базама података апликације преко Chrome DevTools-а. У картици Resources → Web SQL приказују се све отворене базе података, њихове табеле и садржај. Доступан је преглед структуре табела, индекса и извршавање произвољних SQL упита.

Извршавање SQL упита преко DevTools-а

У конзоли Chrome DevTools-а могуће је извршавати SQL упите директно над базом апликације: SELECT, INSERT, UPDATE, DELETE. Ово је корисно за чишћење података пре тестирања, проверу исправности миграција и ручно исправљање неисправних записа без поновне изградње апликације. Све измене су одмах видљиве на уређају.

Dumpapp и прилагођени додаци

Dumpapp — shell интерфејс Stetho-а који омогућава извршавање прилагођених команди преко adb-а. Dumpapp додаци се региструју при иницијализацији Stetho-а и могу да извезу било које стање апликације: кеш, подешавања, стање DI контејнера. Команде се извршавају као adb forward tcp:12345 localabstract:stetho_dumpapp.

Креирање прилагођеног Dumpapp додатка

Додатак имплементира интерфејс DumperContext и региструје се преко Stetho.initialize са прилагођеним InspectorModules. Пример испод приказује додатак за дамп SharedPreferences-а: подаци се серијализују у JSON и приказују у терминалу преко adb команде.

java
// Прилагођени Dumpapp додатак за 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 у односу на Android Studio Inspector: поређење

Android Studio пружа уграђене алате за профилисање: Network Profiler, Database Inspector и View Inspector, који су се појавили у Android Studio 4.1+. Stetho је био популаран до увођења ових алата и остаје актуелан за пројекте који користе OkHttp и захтевају интеграцију са Chrome DevTools-ом.

КритеријумStethoAndroid Studio Inspector
ИнсталацијаGradle зависностУграђен у IDE
NetworkПреко OkHttp Interceptor-аАутоматски за API 26+
SQLiteChrome DevTools + SQL упитиСамо Android Studio
SharedPreferencesДа (Dumpapp додатак)Не
View HierarchyChrome DevTools ElementsLayout Inspector
ПодршкаCommunity (legacy)Званична Google-ова

Када изабрати Stetho

Stetho је оправдан у legacy пројектима где се OkHttp већ користи и екипа је навикла на Chrome DevTools. За нове пројекте Android Studio Inspector покрива већину сценарија дебаговања. Ипак, Chrome DevTools је и даље погоднији за SQLite упите: уграђена конзола са аутоматским довршавањем SQL-а је бржа од узастопних кликова у IDE-у.

Инспекција View Hierarchy-ја преко Stetho-а

View Hierarchy се у Stetho-у приказује у картици Elements Chrome DevTools-а као стабло слично DOM-у. Сваки View је представљен као HTML елемент са атрибутима: id, layout_width, layout_height, padding, margin, visibility и текст. Измене у стаблу се синхронизују у реалном времену при ротацији екрана или ажурирању UI-ја.

Преглед и измена својстава

Одабиром елемента у стаблу могуће је прегледати његова својства на панелу Styles — слично инспекцији веб страница. Stetho приказује израчунате димензије, размаке, боју позадине и стање (pressed, focused, enabled). Измена неких својстава у DevTools-у се одмах примењује на апликацију, што убрзава подешавање UI параметара без поновне изградње.

Проналажење цурења меморије преко View Inspector-а

Stetho помаже у откривању цурења меморије везаних за View: ако се Activity не уништава након finish(), њен коренски View остаје у стаблу. Редовном провером картице Elements могуће је приметити фантомске Activity-је и пронаћи извор цурења — обично су то статичке референце на Context или незатворени дијалози.

Практичне технике дебаговања

Stetho је ефикасан за проверу JSON серијализације пре слања на сервер. Отворите Network Inspector, пронађите захтев и прегледајте тело у Raw режиму ради провере структуре података и исправности поља.

Дебаговање SQLiteOpenHelper-а

Stetho приказује све базе креиране преко SQLiteOpenHelper-а. Ако се база не појављује у Chrome DevTools-у — проверите да ли је getWritableDatabase() позван бар једном у коду апликације.

Редослед Interceptor-а у OkHttp-у

Stetho мора бити последњи interceptor у OkHttp ланцу да би видео измењене захтеве. Исправан редослед: AuthInterceptor first, затим LoggingInterceptor, па на крају StethoInterceptor.

Практичне технике дебаговања са Stetho-ом

Stetho је ефикасан за проверу исправности JSON серијализације пре слања на сервер. Отворите Network Inspector, пронађите захтев и прегледајте тело захтева у Raw режиму да бисте се уверили у исправност структуре поља и типова података.

Дебаговање SQLiteOpenHelper-а и ContentProvider-а

Stetho приказује све базе података креиране преко SQLiteOpenHelper-а. Ако се база не појављује у Chrome DevTools-у — проверите да ли је метода getWritableDatabase() позвана бар једном у коду апликације. За миграције извршите ALTER TABLE преко SQL конзоле и проверите резултат SELECT упитом.

Редослед Interceptor-а у OkHttp ланцу

Stetho мора бити последњи interceptor у OkHttp ланцу да би приказао коначне измењене захтеве. Исправан редослед: AuthInterceptor први, затим LoggingInterceptor, па на крају StethoInterceptor ради исправног бележења.

Често постављана питања

Како се повезати на Stetho преко Chrome DevTools-а?

Повежите уређај преко USB-а, извршите adb forward tcp:8080 localabstract:stetho_default и отворите у Chrome-у страницу chrome://inspect. Уверите се да је Stetho иницијализован у коду апликације и да је уређај пронађен у листи Remote Target.

Да ли Stetho ради на Android 12+?

Да, Stetho ради на Android 12+, али захтева експлицитну INTERNET дозволу у манифесту. На Android 14+ може бити потребно ажурирање ADB-а. За нове пројекте Google препоручује Android Studio Inspector, али Stetho остаје функционалан на свим верзијама.

Да ли се Stetho може користити без OkHttp-а?

Да, SQLite Inspector, SharedPreferences и View Hierarchy раде без OkHttp-а. Network Inspector захтева интеграцију са OkHttp-ом или HttpURLConnection-ом преко модула stetho-okhttp3 или stetho-urlconnection. Основно језгро Stetho-а не зависи од мрежне библиотеке.

Како онемогућити Stetho у release верзији?

Користите debugImplementation у Gradle-у: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. У release верзији код Stetho-а се не компилира. Ако је иницијализација издвојена у засебну класу — обмотајте позив провером BuildConfig.DEBUG.

Које алтернативе Stetho-у постоје 2026. године?

Главне алтернативе: Chucker (инспекција HTTP-а у апликацији, са UI-јем), алати Android Studio Profiler и Network Inspector, као и Flipper (модуларна платформа од Facebook-а са проширеном функционалношћу). Chucker је посебно популарно in-app решење без Chrome DevTools-а.

Закључак

  • Stetho — библиотека Facebook-а (Meta) за дебаговање Андроида преко Chrome DevTools-а, која ради са API 19+.
  • Повезивање преко Gradle debugImplementation-а и иницијализација у Application.onCreate() без додатних дозвола.
  • Network Inspector пресреће HTTP саобраћај преко OkHttp Interceptor-а са приказом свих детаља захтева и одговора.
  • SQLite Inspector омогућава извршавање произвољних SQL упита над базама података апликације у реалном времену.
  • Dumpapp пружа shell интерфејс за креирање прилагођених команди дампа стања апликације преко adb-а.
  • Stetho у односу на Android Studio — Stetho је погодан за SQLite и legacy пројекте, Studio Inspector је стандард за нове развоје.
  • Chucker и Flipper — модерне алтернативе са in-app UI-јем и модуларном архитектуром.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође