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 — 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.
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.
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.
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.
// 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);
}
}
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.
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.
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.
// 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);
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.
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 — 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.
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.
// 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());
}
}
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.
| Mezon | Stetho | Android Studio Inspector |
|---|---|---|
| O'rnatish | Gradle bog'liqligi | IDE-ga o'rnatilgan |
| Network | OkHttp Interceptor orqali | API 26+ uchun avtomatik |
| SQLite | Chrome DevTools + SQL so'rovlari | Faqat Android Studio |
| SharedPreferences | Ha (Dumpapp plagin) | Yo'q |
| View Hierarchy | Chrome DevTools Elements | Layout Inspector |
| Qo'llab-quvvatlash | Community (legacy) | Google rasmiy |
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 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.
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.
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.
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.
Stetho SQLiteOpenHelper orqali yaratilgan barcha bazalarni ko'rsatadi. Agar baza Chrome DevTools-da ko'rinmasa — getWritableDatabase() ilova kodida kamida bir marta chaqirilganini tekshiring.
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 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.
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.
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
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.
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.
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.
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.
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
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.