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 — 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.
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.
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.
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.
// 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);
}
}
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.
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.
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.
// 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);
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.
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 — 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.
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.
// 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());
}
}
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.
| Meyar | Stetho | Android Studio Inspector |
|---|---|---|
| Quraşdırma | Gradle asılılığı | IDE-də daxilidir |
| Network | OkHttp Interceptor vasitəsilə | API 26+ üçün avtomatik |
| SQLite | Chrome DevTools + SQL sorğuları | Yalnız Android Studio |
| SharedPreferences | Bəli (Dumpapp plagin) | Xeyr |
| View Hierarchy | Chrome DevTools Elements | Layout Inspector |
| Dəstək | Community (legacy) | Google-un rəsmi |
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 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.
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.
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.
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.
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.
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 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.
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.
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
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.
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.
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.
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.
Ə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
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.
Həm də oxuyun