Stetho — bu nədir, Android-in Chrome DevTools vasitəsilə debug edilməsi

Müəllif: IT Sectr Dərc olunub: 2026-05-08 Oxuma vaxtı: 8 dəq

Stetho — 2014-cü ildə Facebook (Meta) tərəfindən hazırlanmış Android tətbiqlərinin debug edilməsi üçün kitabxanadır. Alət Gradle asılılığı vasitəsilə tətbiqə inteqrasiya olunur və Chrome DevTools vasitəsilə daxili vəziyyətə giriş açır. facebook/stetho deposunun (2026) məlumatına görə, kitabxana SQLite, Network, SharedPreferences, View Hierarchy və Dumpapp plaginlərinin yoxlanılmasını dəstəkləyir.

Əsas məqamlar

  • Stetho — root girişi olmadan Chrome DevTools vasitəsilə Android tətbiqlərini yoxlamaq üçün Facebook-un kitabxanasıdır.
  • SQLite Inspector tətbiqin verilənlər bazalarına real vaxtda baxmağa, redaktə etməyə və sorğular yerinə yetirməyə imkan verir.
  • Network Inspector OkHttp və HttpURLConnection vasitəsilə HTTP/HTTPS trafikini başlıqlar və məzmunu göstərməklə ələ keçirir.
  • SharedPreferences Inspector bütün parametr XML fayllarını dəyərlərə baxmaq və dəyişmək imkanı ilə göstərir.
  • Dumpapp cihazda adb vasitəsilə xüsusi əmrlər yerinə yetirmək üçün shell interfeysi təmin edir.

Stetho nədir və necə işləyir

Stetho — Android tətbiqinin daxilində lokal WebSocket server işə salan Java kitabxanasıdır. Chrome DevTools bu serverə adb portu vasitəsilə qoşulur və tətbiqin daxili komponentlərinə giriş əldə edir: verilənlər bazaları, şəbəkə sorğuları, preferences və view iyerarxiyası. Bütün əlaqə Chrome DevTools Protocol protokolu ilə gedir, bu da əlavə proqram quraşdırmadan brauzerin standart alətlərindən istifadə etməyə imkan verir.

Arxitektura və komponentlər

Kitabxana modullardan ibarətdir: stetho (nüvə), stetho-okhttp (OkHttp vasitəsilə trafikin ələ keçirilməsi), stetho-urlconnection (HttpURLConnection vasitəsilə ələ keçirmə) və stetho-js-rhino (JavaScript plaginlərinin dəstəyi). Nüvə UNIX soketi açır, Chrome isə ora adb forward vasitəsilə qoşulur. Hər yoxlayıcı Stetho-nun initallaşdırılması zamanı qeydiyyatdan keçən ayrıca plagin kimi reallaşdırılıb.

Tələblər və məhdudiyyətlər

Stetho Android 4.4+ (API 19) dəstəkləyir və yalnız debug qurmalarında işləyir. Android 11+ olan cihazlarda manifestdə açıq INTERNET icazəsi tələb olunur. Kitabxana 2020-ci ildən Facebook tərəfindən rəsmi dəstəklənmir, lakin kod açıq qalır və legacy layihələrində istifadə olunur. Yeni layihələr üçün Google Android Studio Profiler və Network Inspector-ı tövsiyə edir.

Android layihəsində Stetho-nun qoşulması və konfiqurasiyası

Qoşulma debugImplementation bayrağı ilə Gradle asılılığı vasitəsilə yerinə yetirilir ki, Stetho yalnız debug qurmasında işləsin. Initallaşdırma Application.onCreate() metodunda Stetho.initializeWithDefaults(this) çağırışı ilə baş verir. Network Inspector üçün OkHttp ilə Interceptor vasitəsilə inteqrasiya tələb olunur.

groovy
// build.gradle (tətbiq) — Stetho-nun qoşulması
dependencies {
    debugImplementation 'com.facebook.stetho:stetho:1.6.0'
    debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}

// Application sinifində initallaşdırma
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

Network Interceptor-un konfiqurasiyası

OkHttp vasitəsilə şəbəkə sorğularını ələ keçirmək üçün StethoInterceptor-u interceptors zəncirinə əlavə edin. Stetho avtomatik olaraq URL, sorğu və cavab başlıqlarını, status kodunu və icra müddətini qeyd edir. Məlumatlar cihaza chrome://inspect vasitəsilə qoşulduqdan sonra Chrome DevTools-da Network sekmesinde göstərilir.

Network Inspector: HTTP trafikinin ələ keçirilməsi

Stetho-nun Network Inspector-u tətbiqin bütün HTTP sorğularını xronoloji ardıcıllıqla göstərir. Hər sorğu üçün mövcuddur: metod, URL, status kodu, sorğu və cavab başlıqları, sorğu və cavab məzmunu (JSON və ikili məlumatlar daxil olmaqla). Preview sekmesi cavab məzmununu formatlaşdırılmış şəkildə göstərir.

Sorğuların filtrlənməsi və axtarışı

Chrome DevTools sorğuların növünə (XHR, JS, CSS, Doc), status koduna və domeninə görə filtrlənməsini dəstəkləyir. Axtarış sahəsi URL və məzmuna görə filtr edir. Mobil inkişaf üçün sorğuları API domeninə görə qruplaşdırmaq və tətbiqin ekranlarını test edərkən çağırışların ardıcıllığını yoxlamaq faydalıdır.

java
// Stetho interceptor ilə OkHttp klient
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

// Sorğunun yerinə yetirilməsi
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: SQLite ilə iş

Stetho-nun Database Inspector-u Chrome DevTools vasitəsilə tətbiqin SQLite verilənlər bazalarına qoşulur. Resources → Web SQL sekmesinde bütün açıq verilənlər bazaları, onların cədvəlləri və məzmunu göstərilir. Cədvəl strukturlarına, indekslərə baxmaq və ixtiyari SQL sorğuları yerinə yetirmək mümkündür.

DevTools vasitəsilə SQL sorğularının yerinə yetirilməsi

Chrome DevTools konsolunda birbaşa tətbiqin bazasına SQL sorğuları yerinə yetirmək olar: SELECT, INSERT, UPDATE, DELETE. Bu, testdən əvvəl məlumatları təmizləmək, miqrasiyaların düzgünlüyünü yoxlamaq və tətbiqi yenidən qurmadan səhv qeydləri əl ilə düzəltmək üçün faydalıdır. Bütün dəyişikliklər dərhal cihazda görünür.

Dumpapp və xüsusi plaginlər

Dumpapp — adb vasitəsilə xüsusi əmrlər yerinə yetirməyə imkan verən Stetho shell interfeysidir. Dumpapp plaginləri Stetho-nun initallaşdırılması zamanı qeydiyyatdan keçir və tətbiqin istənilən vəziyyətini ixrac edə bilər: keş, parametrlər, DI konteynerinin vəziyyəti. Əmrlər adb forward tcp:12345 localabstract:stetho_dumpapp kimi yerinə yetirilir.

Xüsusi Dumpapp plagininin yaradılması

Plagin DumperContext interfeysini reallaşdırır və xüsusi InspectorModules ilə Stetho.initialize vasitəsilə qeydiyyatdan keçir. Aşağıdakı nümunə SharedPreferences dump-u üçün plagin göstərir: məlumatlar JSON-a serializasiya olunur və adb əmri ilə terminala çıxarılır.

java
// SharedPreferences üçün xüsusi Dumpapp plagin
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: müqayisə

Android Studio daxili profilləmə alətləri təqdim edir: Network Profiler, Database Inspector və View Inspector, Android Studio 4.1+-də meydana çıxan. Stetho bu alətlər tətbiq olunana qədər məşhur idi və OkHttp istifadə edən və Chrome DevTools ilə inteqrasiya tələb edən layihələr üçün aktual qalır.

MeyarStethoAndroid Studio Inspector
QuraşdırmaGradle asılılığıIDE-də daxilidir
NetworkOkHttp Interceptor vasitəsiləAPI 26+ üçün avtomatik
SQLiteChrome DevTools + SQL sorğularıYalnız Android Studio
SharedPreferencesBəli (Dumpapp plagin)Xeyr
View HierarchyChrome DevTools ElementsLayout Inspector
DəstəkCommunity (legacy)Google-un rəsmi

Stetho-nu nə vaxt seçmək lazımdır

Stetho OkHttp-nun artıq istifadə olunduğu və komandanın Chrome DevTools-a öyrəşdiyi legacy layihələrində əsaslıdır. Yeni layihələr üçün Android Studio Inspector debug ssenarilərinin çoxunu əhatə edir. Lakin Chrome DevTools hələ də SQLite sorğuları üçün daha rahatdır: SQL avtokomplektli daxili konsol IDE-də ardıcıl kliklərdən daha sürətlidir.

View Hierarchy-nin Stetho vasitəsilə yoxlanılması

View Hierarchy Stetho-da Chrome DevTools-un Elements sekmesinde DOM-a bənzər ağac kimi göstərilir. Hər View atributları ilə HTML elementi kimi təqdim olunur: id, layout_width, layout_height, padding, margin, visibility və mətn. Ağacdakı dəyişikliklər ekranın döndərilməsi və ya UI-nin yenilənməsi zamanı real vaxtda sinxronlaşdırılır.

Xüsusiyyətlərə baxmaq və dəyişmək

Ağacda elementi seçərək, onun xüsusiyyətlərinə Styles panelində baxmaq olar — veb səhifələrin yoxlanmasına bənzər. Stetho hesablanmış ölçüləri, boşluqları, fon rəngini və vəziyyəti (pressed, focused, enabled) göstərir. DevTools-da bəzi xüsusiyyətlərin dəyişdirilməsi dərhal tətbiqə tətbiq olunur ki, bu da yenidən qurmadan UI parametrlərinin seçimini sürətləndirir.

View Inspector vasitəsilə yaddaş sızmalarının axtarışı

Stetho View ilə bağlı yaddaş sızmalarını aşkar etməyə kömək edir: əgər Activity finish()-dan sonra məhv edilmirsə, onun kök View-i ağacda qalır. Elements sekmesini müntəzəm yoxlamaqla fantom Activity-ləri görmək və sızmanın mənbəyini tapmaq olar — adətən bu, Context-ə statik istinadlar və ya bağlanmamış dialoqlardır.

Praktiki debug üsulları

Stetho serverə göndərməzdən əvvəl JSON serializasiyasını yoxlamaq üçün effektivdir. Network Inspector-u açın, sorğunu tapın və məlumat strukturunu və sahələrin düzgünlüyünü yoxlamaq üçün məzmuna Raw rejimində baxın.

SQLiteOpenHelper-in debug edilməsi

Stetho SQLiteOpenHelper vasitəsilə yaradılmış bütün bazaları göstərir. Baza Chrome DevTools-da görünmürsə — getWritableDatabase() metodunun tətbiqin kodunda ən azı bir dəfə çağırıldığını yoxlayın.

OkHttp-da Interceptor sırası

Stetho dəyişdirilmiş sorğuları görmək üçün OkHttp zəncirində sonuncu interceptor olmalıdır. Düzgün sıra: AuthInterceptor first, sonra LoggingInterceptor, ən son isə StethoInterceptor.

Stetho ilə praktiki debug üsulları

Stetho serverə göndərməzdən əvvəl JSON serializasiyasının düzgünlüyünü yoxlamaq üçün effektivdir. Network Inspector-u açın, sorğunu tapın və sahələrin strukturu və məlumat tiplərinin düzgünlüyünə əmin olmaq üçün sorğunun məzmununa Raw rejimində baxın.

SQLiteOpenHelper və ContentProvider-in debug edilməsi

Stetho SQLiteOpenHelper vasitəsilə yaradılmış bütün verilənlər bazalarını göstərir. Baza Chrome DevTools-da görünmürsə — getWritableDatabase() metodunun tətbiqin kodunda ən azı bir dəfə çağırıldığını yoxlayın. Miqrasiyalar üçün SQL konsolu vasitəsilə ALTER TABLE yerinə yetirin və nəticəni SELECT sorğusu ilə yoxlayın.

OkHttp zəncirində Interceptor sırası

Stetho son dəyişdirilmiş sorğuları göstərmək üçün OkHttp zəncirində sonuncu interceptor olmalıdır. Düzgün ardıcıllıq: AuthInterceptor birinci, sonra LoggingInterceptor, düzgün qeydiyyat üçün ən son isə StethoInterceptor.

Tez-tez verilən suallar

Chrome DevTools vasitəsilə Stetho-ya necə qoşulmaq olar?

Cihazı USB vasitəsilə qoşun, adb forward tcp:8080 localabstract:stetho_default əmrini yerinə yetirin və Chrome-da chrome://inspect səhifəsini açın. Stetho-nun tətbiqin kodunda initallaşdırıldığına və cihazın Remote Target siyahısında aşkar edildiyinə əmin olun.

Stetho Android 12+-də işləyirmi?

Bəli, Stetho Android 12+-də işləyir, lakin manifestdə açıq INTERNET icazəsi tələb edir. Android 14+-də ADB yenilənməsi tələb oluna bilər. Yeni layihələr üçün Google Android Studio Inspector tövsiyə edir, lakin Stetho bütün versiyalarda işlək qalır.

Stetho-nu OkHttp olmadan istifadə etmək olarmı?

Bəli, SQLite Inspector, SharedPreferences və View Hierarchy OkHttp olmadan işləyir. Network Inspector stetho-okhttp3 və ya stetho-urlconnection modulları vasitəsilə OkHttp və ya HttpURLConnection ilə inteqrasiya tələb edir. Stetho-nun əsas nüvəsi şəbəkə kitabxanasından asılı deyil.

Release qurmasında Stetho-nu necə söndürmək olar?

Gradle-də debugImplementation istifadə edin: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. Release qurmasında Stetho kodu kompilyasiya olunmur. Initallaşdırma ayrıca sinfə çıxarılıbsa — çağırışı BuildConfig.DEBUG yoxlaması ilə bükün.

2026-cı ildə Stetho-nun hansı alternativləri var?

Əsas alternativlər: Chucker (tətbiqdə HTTP yoxlanışı, UI ilə), Android Studio Profiler və Network Inspector alətləri, həmçinin Flipper (Facebook-un genişləndirilmiş funksionallıqlı modul platforması). Chucker xüsusilə Chrome DevTools olmadan in-app həll kimi məşhurdur.

Yekun

  • Stetho — API 19+ ilə işləyən Chrome DevTools vasitəsilə Android-i debug etmək üçün Facebook (Meta) kitabxanasıdır.
  • Qoşulma əlavə icazələr olmadan Gradle debugImplementation və Application.onCreate() initallaşdırması ilə.
  • Network Inspector sorğu və cavabın bütün təfərrüatlarını göstərməklə OkHttp Interceptor vasitəsilə HTTP trafikini ələ keçirir.
  • SQLite Inspector tətbiqin verilənlər bazalarına real vaxtda ixtiyari SQL sorğuları yerinə yetirməyə imkan verir.
  • Dumpapp adb vasitəsilə tətbiqin vəziyyətinin dump-u üçün xüsusi əmrlər yaratmağa shell interfeysi təmin edir.
  • Stetho vs Android Studio — Stetho SQLite və legacy layihələri üçün rahatdır, Studio Inspector yeni inkişaflar üçün standartdır.
  • Chucker və Flipper — in-app UI və modul arxitekturalı müasir alternativlər.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun