Stetho — bu nima, Android-ni Chrome DevTools orqali debug qilish

Muallif: IT Sectr Nashr etilgan: 2026-05-08 O'qish vaqti: 8 daq

Stetho — 2014-yilda Facebook (Meta) tomonidan ishlab chiqilgan Android ilovalarini debug qilish uchun kutubxonadir. Vositasi Gradle bog'liqligi orqali ilovaga integratsiya qilinadi va Chrome DevTools orqali ichki holatga kirishni ochadi. facebook/stetho repozitoriyasi (2026) ma'lumotlariga ko'ra, kutubxona SQLite, Network, SharedPreferences, View Hierarchy va Dumpapp plaginlarini tekshirishni qo'llab-quvvatlaydi.

Asosiy fikrlar

  • Stetho — root kirishisiz Chrome DevTools orqali Android ilovalarini tekshirish uchun Facebook kutubxonasi.
  • SQLite Inspector ilovaning ma'lumotlar bazalariga real vaqtda qarash, tahrirlash va so'rovlar bajarish imkonini beradi.
  • Network Inspector OkHttp va HttpURLConnection orqali HTTP/HTTPS trafigini sarlavhalar va tanani ko'rsatish bilan ushlaydi.
  • SharedPreferences Inspector barcha sozlamalar XML fayllarini qiymatlarni ko'rish va o'zgartirish imkoniyati bilan ko'rsatadi.
  • Dumpapp qurilmada adb orqali maxsus buyruqlarni bajarish uchun shell interfeysi taqdim etadi.

Stetho nima va u qanday ishlaydi

Stetho — Android ilovasining ichida lokal WebSocket serverini ishga tushiradigan Java kutubxonasi. Chrome DevTools bu serverga adb porti orqali ulanadi va ilovaning ichki komponentlariga kirish oladi: ma'lumotlar bazalari, tarmoq so'rovlari, preferences va view iyerarxiyasi. Barcha aloqa Chrome DevTools Protocol protokoli orqali ketadi, bu qo'shimcha dastur o'rnatmasdan brauzerning standart vositalaridan foydalanish imkonini beradi.

Arxitektura va komponentlar

Kutubxona modullardan iborat: stetho (yadro), stetho-okhttp (OkHttp orqali trafikni ushlash), stetho-urlconnection (HttpURLConnection orqali ushlash) va stetho-js-rhino (JavaScript plaginlarini qo'llab-quvvatlash). Yadro UNIX soketini ochadi, unga Chrome adb forward orqali ulanadi. Har bir inspektor Stetho-ni ishga tushirishda ro'yxatdan o'tadigan alohida plagin sifatida amalga oshirilgan.

Talablar va cheklovlar

Stetho Android 4.4+ (API 19) qo'llab-quvvatlaydi va faqat debug qurilmalarida ishlaydi. Android 11+ bo'lgan qurilmalarda manifestda aniq INTERNET ruxsati talab qilinadi. Kutubxona 2020-yildan beri Facebook tomonidan rasman qo'llab-quvvatlanmaydi, ammo kod ochiq qoladi va legacy loyihalarida ishlatiladi. Yangi loyihalar uchun Google Android Studio Profiler va Network Inspector-ni tavsiya qiladi.

Android loyihasida Stetho-ni ulash va sozlash

Ulash debugImplementation bayrog'i bilan Gradle bog'liqligi orqali bajariladi, shunda Stetho faqat debug qurilmasida ishlaydi. Ishga tushirish Application.onCreate() metodida bitta Stetho.initializeWithDefaults(this) chaqiruvi bilan amalga oshiriladi. Network Inspector uchun OkHttp bilan Interceptor orqali integratsiya talab qilinadi.

groovy
// build.gradle (ilova) — Stetho-ni ulash
dependencies {
    debugImplementation 'com.facebook.stetho:stetho:1.6.0'
    debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}

// Application sinfida ishga tushirish
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

Network Interceptor-ni sozlash

OkHttp orqali tarmoq so'rovlarini ushlash uchun StethoInterceptor-ni interceptors zanjiriga qo'shing. Stetho avtomatik ravishda URL, so'rov va javob sarlavhalari, holat kodi va bajarilish vaqtini qayd qiladi. Ma'lumotlar qurilmaga chrome://inspect orqali ulangandan so'ng Chrome DevTools-dagi Network yorlig'ida ko'rsatiladi.

Network Inspector: HTTP trafigini ushlash

Stetho-nun Network Inspector-i ilovaning barcha HTTP so'rovlarini xronologik tartibda ko'rsatadi. Har bir so'rov uchun mavjud: metod, URL, holat kodi, so'rov va javob sarlavhalari, so'rov va javob tanasi (shu jumladan JSON va ikkilik ma'lumotlar). Preview yorlig'i javob tanasini formatlangan ko'rinishda ko'rsatadi.

So'rovlarni filtrlash va qidirish

Chrome DevTools so'rovlarni turi (XHR, JS, CSS, Doc), holat kodi va domeni bo'yicha filtrlashni qo'llab-quvvatlaydi. Qidiruv maydoni URL va tarkib bo'yicha filtrlaydi. Mobil ishlab chiqish uchun so'rovlarni API domeni bo'yicha guruhlash va ilova ekranlarini test qilishda chaqiruvlar ketma-ketligini tekshirish foydali.

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

// So'rovni bajarish
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: SQLite bilan ishlash

Stetho-nun Database Inspector-i Chrome DevTools orqali ilovaning SQLite ma'lumotlar bazalariga ulanadi. Resources → Web SQL yorlig'ida barcha ochiq ma'lumotlar bazalari, ularning jadvallari va tarkibi ko'rsatiladi. Jadval tuzilmalarini, indekslarni ko'rish va ixtiyoriy SQL so'rovlarini bajarish mumkin.

DevTools orqali SQL so'rovlarini bajarish

Chrome DevTools konsolida to'g'ridan-to'g'ri ilova bazasiga SQL so'rovlarini bajarish mumkin: SELECT, INSERT, UPDATE, DELETE. Bu testdan oldin ma'lumotlarni tozalash, migratsiyalarning to'g'riligini tekshirish va ilovani qayta qurmasdan noto'g'ri yozuvlarni qo'lda tuzatish uchun foydali. Barcha o'zgarishlar darhol qurilmada ko'rinadi.

Dumpapp va maxsus plaginlar

Dumpapp — adb orqali maxsus buyruqlarni bajarish imkonini beruvchi Stetho shell interfeysi. Dumpapp plaginlari Stetho ishga tushirilganda ro'yxatdan o'tadi va ilovaning istalgan holatini eksport qilishi mumkin: keshlash, sozlamalar, DI konteyner holati. Buyruqlar adb forward tcp:12345 localabstract:stetho_dumpapp kabi bajariladi.

Maxsus Dumpapp plaginini yaratish

Plagin DumperContext interfeysini amalga oshiradi va maxsus InspectorModules bilan Stetho.initialize orqali ro'yxatdan o'tadi. Quyidagi misol SharedPreferences dumpi uchun plagin ko'rsatadi: ma'lumotlar JSON-ga seriyalanadi va adb buyrug'i orqali terminalda ko'rsatiladi.

java
// SharedPreferences uchun maxsus 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 va Android Studio Inspector: taqqoslash

Android Studio o'rnatilgan profillash vositalarini taqdim etadi: Network Profiler, Database Inspector va View Inspector, ular Android Studio 4.1+ da paydo bo'lgan. Stetho bu vositalar joriy etilgunga qadar mashhur edi va OkHttp ishlatadigan hamda Chrome DevTools bilan integratsiya talab qiladigan loyihalar uchun dolzarb bo'lib qolmoqda.

MezonStethoAndroid Studio Inspector
O'rnatishGradle bog'liqligiIDE-ga o'rnatilgan
NetworkOkHttp Interceptor orqaliAPI 26+ uchun avtomatik
SQLiteChrome DevTools + SQL so'rovlariFaqat Android Studio
SharedPreferencesHa (Dumpapp plagin)Yo'q
View HierarchyChrome DevTools ElementsLayout Inspector
Qo'llab-quvvatlashCommunity (legacy)Google rasmiy

Qachon Stetho-ni tanlash kerak

Stetho OkHttp allaqachon ishlatiladigan va jamoa Chrome DevTools-ga o'rganib qolgan legacy loyihalarida o'zini oqlaydi. Yangi loyihalar uchun Android Studio Inspector debug ssenariylarining ko'pchiligini qamrab oladi. Biroq Chrome DevTools hali ham SQLite so'rovlari uchun qulayroq: SQL avtoto'ldirishli o'rnatilgan konsol IDE-dagi ketma-ket bosishlardan tezroq.

View Hierarchy-ni Stetho orqali tekshirish

View Hierarchy Stetho-da Chrome DevTools-nun Elements yorlig'ida DOM-ga o'xshash daraxt sifatida ko'rsatiladi. Har bir View atributlari bilan HTML elementi sifatida taqdim etiladi: id, layout_width, layout_height, padding, margin, visibility va matn. Daraxtdagi o'zgarishlar ekran burilganda yoki UI yangilanganda real vaqtda sinxronlashtiriladi.

Xususiyatlarni ko'rish va o'zgartirish

Daraxtda elementni tanlab, uning xususiyatlarini Styles panelida ko'rish mumkin — veb-sahifalarni tekshirishga o'xshash. Stetho hisoblangan o'lchamlar, oralqlar, fon rangi va holatni (pressed, focused, enabled) ko'rsatadi. DevTools-da ba'zi xususiyatlarni o'zgartirish darhol ilovaga qo'llaniladi, bu qayta qurmasdan UI parametrlarini tanlashni tezlashtiradi.

View Inspector orqali xotira oqishini qidirish

Stetho View bilan bog'liq xotira oqishini aniqlashga yordam beradi: agar Activity finish() dan keyin yo'q qilinmasa, uning ildiz View-i daraxtda qoladi. Elements yorlig'ini muntazam tekshirish orqali fantom Activity-larni ko'rish va oqish manbasini topish mumkin — odatda bu Context-ga statik havolalar yoki yopilmagan dialoglar.

Amaliy debug usullari

Stetho serverga yuborishdan oldin JSON seriyalashni tekshirish uchun samarali. Network Inspector-ni oching, so'rovni toping va ma'lumotlar tuzilishi va maydonlarning to'g'riligini tekshirish uchun tanani Raw rejimida ko'ring.

SQLiteOpenHelper-ni debug qilish

Stetho SQLiteOpenHelper orqali yaratilgan barcha bazalarni ko'rsatadi. Agar baza Chrome DevTools-da ko'rinmasa — getWritableDatabase() ilova kodida kamida bir marta chaqirilganini tekshiring.

OkHttp-da Interceptor tartibi

Stetho o'zgartirilgan so'rovlarni ko'rish uchun OkHttp zanjirida oxirgi interceptor bo'lishi kerak. To'g'ri tartib: AuthInterceptor first, keyin LoggingInterceptor, so'ng oxirgi StethoInterceptor.

Stetho bilan amaliy debug usullari

Stetho serverga yuborishdan oldin JSON seriyalashning to'g'riligini tekshirish uchun samarali. Network Inspector-ni oching, so'rovni toping va maydonlar tuzilishi va ma'lumot turlarining to'g'riligiga ishonch hosil qilish uchun so'rov tanasini Raw rejimida ko'ring.

SQLiteOpenHelper va ContentProvider-ni debug qilish

Stetho SQLiteOpenHelper orqali yaratilgan barcha ma'lumotlar bazalarini ko'rsatadi. Agar baza Chrome DevTools-da ko'rinmasa — getWritableDatabase() metodi ilova kodida kamida bir marta chaqirilganini tekshiring. Migratsiyalar uchun SQL konsoli orqali ALTER TABLE bajaring va natijani SELECT so'rovi bilan tekshiring.

OkHttp zanjirida Interceptor tartibi

Stetho yakuniy o'zgartirilgan so'rovlarni ko'rsatish uchun OkHttp zanjirida oxirgi interceptor bo'lishi kerak. To'g'ri ketma-ketlik: AuthInterceptor birinchi, keyin LoggingInterceptor, to'g'ri qayd qilish uchun so'ng oxirgi StethoInterceptor.

Ko'p so'raladigan savollar

Chrome DevTools orqali Stetho-ga qanday ulanish mumkin?

Qurilmani USB orqali ulang, adb forward tcp:8080 localabstract:stetho_default buyrug'ini bajaring va Chrome-da chrome://inspect sahifasini oching. Stetho ilova kodida ishga tushirilgani va qurilma Remote Target ro'yxatida aniqlanganiga ishonch hosil qiling.

Stetho Android 12+ da ishlaydimi?

Ha, Stetho Android 12+ da ishlaydi, lekin manifestda aniq INTERNET ruxsati talab qiladi. Android 14+ da ADB yangilanishi talab qilinishi mumkin. Yangi loyihalar uchun Google Android Studio Inspector-ni tavsiya qiladi, ammo Stetho barcha versiyalarda ishlaydigan bo'lib qoladi.

Stetho-ni OkHttp-siz ishlatish mumkinmi?

Ha, SQLite Inspector, SharedPreferences va View Hierarchy OkHttp-siz ishlaydi. Network Inspector stetho-okhttp3 yoki stetho-urlconnection modullari orqali OkHttp yoki HttpURLConnection bilan integratsiya talab qiladi. Stetho-nun asosiy yadrosi tarmoq kutubxonasiga bog'liq emas.

Release qurilmasida Stetho-ni qanday o'chirish mumkin?

Gradle-da debugImplementation ishlating: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. Release qurilmasida Stetho kodi kompilyatsiya qilinmaydi. Ishga tushirish alohida sinfga chiqarilgan bo'lsa — chaqiruvni BuildConfig.DEBUG tekshiruvi bilan o'rab oling.

2026-yilda Stetho-ning qanday alternativlari bor?

Asosiy alternativlar: Chucker (ilova ichida HTTP tekshirish, UI bilan), Android Studio Profiler va Network Inspector vositalari, shuningdek Flipper (Facebook-ning kengaytirilgan funksionallikka ega modulli platformasi). Chucker ayniqsa Chrome DevTools-siz in-app yechim sifatida mashhur.

Xulosa

  • Stetho — API 19+ bilan ishlaydigan Chrome DevTools orqali Android-ni debug qilish uchun Facebook (Meta) kutubxonasi.
  • Ulash qo'shimcha ruxsatlarsiz Gradle debugImplementation va Application.onCreate() da ishga tushirish orqali.
  • Network Inspector so'rov va javobning barcha tafsilotlarini ko'rsatish bilan OkHttp Interceptor orqali HTTP trafigini ushlaydi.
  • SQLite Inspector ilova ma'lumotlar bazalariga real vaqtda ixtiyoriy SQL so'rovlarini bajarish imkonini beradi.
  • Dumpapp adb orqali ilova holati dumpi uchun maxsus buyruqlar yaratishga shell interfeysi taqdim etadi.
  • Stetho va Android Studio — Stetho SQLite va legacy loyihalari uchun qulay, Studio Inspector yangi ishlanmalar uchun standart.
  • Chucker va Flipper — in-app UI va modulli arxitekturali zamonaviy alternativlar.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing