Stetho — nedir, Chrome DevTools ile Android'de hata ayıklama

Yazar: IT Sectr Yayınlanma: 2026-05-08 Okuma süresi: 8 dk

Stetho, 2014 yılında Facebook (Meta) tarafından geliştirilen Android uygulamaları için hata ayıklama kütüphanesidir. Araç, Gradle bağımlılığı aracılığıyla uygulamaya entegre olur ve Chrome DevTools üzerinden iç duruma erişim açar. facebook/stetho deposuna (2026) göre kütüphane, SQLite, Network, SharedPreferences, View Hierarchy ve Dumpapp eklentilerinin incelenmesini destekler.

Önemli noktalar

  • Stetho, root erişimi olmadan Chrome DevTools üzerinden Android uygulamalarını incelemek için Facebook'un kütüphanesidir.
  • SQLite Inspector, uygulamanın veritabanlarını gerçek zamanlı olarak görüntülemenize, düzenlemenize ve sorgu çalıştırmanıza olanak tanır.
  • Network Inspector, başlıkları ve gövdeyi göstererek OkHttp ve HttpURLConnection üzerinden HTTP/HTTPS trafiğini yakalar.
  • SharedPreferences Inspector, değerleri görüntüleme ve değiştirme olanağıyla tüm ayar XML dosyalarını görüntüler.
  • Dumpapp, adb üzerinden cihazda özel komutlar çalıştırmak için bir kabuk arayüzü sağlar.

Stetho nedir ve nasıl çalışır

Stetho, Android uygulamasının içinde yerel bir WebSocket sunucusu çalıştıran bir Java kütüphanesidir. Chrome DevTools bu sunucuya adb bağlantı noktası üzerinden bağlanır ve uygulamanın iç bileşenlerine erişim sağlar: veritabanları, ağ istekleri, preferences ve view hiyerarşisi. Tüm iletişim Chrome DevTools Protocol protokolü üzerinden gerçekleşir; bu da ek yazılım kurmadan tarayıcının standart araçlarını kullanmayı mümkün kılar.

Mimari ve bileşenler

Kütüphane modüllerden oluşur: stetho (çekirdek), stetho-okhttp (OkHttp üzerinden trafik yakalama), stetho-urlconnection (HttpURLConnection üzerinden yakalama) ve stetho-js-rhino (JavaScript eklentileri desteği). Çekirdek, Chrome'un adb forward üzerinden bağlandığı bir UNIX soketi açar. Her denetçi, Stetho başlatılırken kaydedilen ayrı bir eklenti olarak uygulanır.

Gereksinimler ve kısıtlamalar

Stetho Android 4.4+ (API 19) destekler ve yalnızca debug derlemelerinde çalışır. Android 11+ cihazlarda manifest dosyasında açık bir INTERNET izni gerekir. Kütüphane 2020'den beri Facebook tarafından resmi olarak desteklenmemektedir, ancak kod açık kalır ve eski (legacy) projelerde kullanılır. Yeni projeler için Google, Android Studio Profiler ve Network Inspector'ı önerir.

Android projesinde Stetho'nun bağlanması ve yapılandırılması

Bağlantı, Stetho'nun yalnızca debug derlemesinde çalışması için debugImplementation bayrağıyla bir Gradle bağımlılığı üzerinden yapılır. Başlatma, Application.onCreate() metodunda tek bir Stetho.initializeWithDefaults(this) çağrısıyla gerçekleşir. Network Inspector için OkHttp ile bir Interceptor üzerinden entegrasyon gerekir.

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

// Application sınıfında başlatma
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Stetho.initializeWithDefaults(this);
    }
}

Network Interceptor'ın yapılandırılması

OkHttp üzerinden ağ isteklerini yakalamak için interceptor zincirine StethoInterceptor ekleyin. Stetho, URL'yi, istek ve yanıt başlıklarını, durum kodunu ve yürütme süresini otomatik olarak günlüğe kaydeder. Veriler, chrome://inspect üzerinden cihaza bağlandıktan sonra Chrome DevTools'un Network sekmesinde görüntülenir.

Network Inspector: HTTP trafiğini yakalama

Stetho'nun Network Inspector'ı uygulamanın tüm HTTP isteklerini kronolojik sırada görüntüler. Her istek için şunlar mevcuttur: yöntem, URL, durum kodu, istek ve yanıt başlıkları, istek ve yanıt gövdesi (JSON ve ikili veriler dahil). Preview sekmesi yanıt gövdesini biçimlendirilmiş biçimde gösterir.

İstekleri filtreleme ve arama

Chrome DevTools, isteklerin türe (XHR, JS, CSS, Doc), durum koduna ve alan adına göre filtrelenmesini destekler. Arama alanı URL ve içeriğe göre filtreler. Mobil geliştirme için istekleri API alan adına göre gruplamak ve uygulama ekranlarını test ederken çağrı sırasını kontrol etmek faydalıdır.

java
// Stetho interceptor'lı OkHttp istemcisi
OkHttpClient client = new OkHttpClient.Builder()
    .addNetworkInterceptor(new StethoInterceptor())
    .build();

// İstek çalıştırma
Request request = new Request.Builder()
    .url("https://api.example.com/users")
    .build();
client.newCall(request).enqueue(callback);

Database Inspector: SQLite ile çalışma

Stetho'nun Database Inspector'ı Chrome DevTools üzerinden uygulamanın SQLite veritabanlarına bağlanır. Resources → Web SQL sekmesinde açık tüm veritabanları, tabloları ve içerikleri görüntülenir. Tablo yapısını, dizinleri görüntüleme ve isteğe bağlı SQL sorguları çalıştırma mümkündür.

DevTools üzerinden SQL sorguları çalıştırma

Chrome DevTools konsolunda uygulamanın veritabanına doğrudan SQL sorguları çalıştırabilirsiniz: SELECT, INSERT, UPDATE, DELETE. Bu, testlerden önce verileri temizlemek, geçişlerin (migration) doğruluğunu kontrol etmek ve uygulamayı yeniden derlemeden hatalı kayıtları elle düzeltmek için faydalıdır. Tüm değişiklikler cihazda anında görünür.

Dumpapp ve özel eklentiler

Dumpapp, adb üzerinden özel komutlar çalıştırmayı sağlayan Stetho'nun kabuk arayüzüdür. Dumpapp eklentileri Stetho başlatılırken kaydedilir ve uygulamanın herhangi bir durumunu dışa aktarabilir: önbellek, ayarlar, DI kapsayıcısının durumu. Komutlar adb forward tcp:12345 localabstract:stetho_dumpapp şeklinde çalıştırılır.

Özel Dumpapp eklentisi oluşturma

Eklenti, DumperContext arayüzünü uygular ve özel bir InspectorModules ile Stetho.initialize üzerinden kaydedilir. Aşağıdaki örnek, SharedPreferences dökümü için bir eklenti gösterir: veriler JSON'a serileştirilir ve bir adb komutu aracılığıyla terminalde çıktı olarak verilir.

java
// SharedPreferences için özel Dumpapp eklentisi
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: karşılaştırma

Android Studio, Android Studio 4.1+'da tanıtılan yerleşik profil oluşturma araçları sağlar: Network Profiler, Database Inspector ve View Inspector. Stetho, bu araçlar tanıtılmadan önce popülerdi ve OkHttp kullanan ve Chrome DevTools ile entegrasyon gerektiren projeler için güncelliğini koruyor.

KriterStethoAndroid Studio Inspector
KurulumGradle bağımlılığıIDE'ye yerleşik
NetworkOkHttp Interceptor üzerindenAPI 26+ için otomatik
SQLiteChrome DevTools + SQL sorgularıYalnızca Android Studio
SharedPreferencesEvet (Dumpapp eklentisi)Hayır
View HierarchyChrome DevTools ElementsLayout Inspector
DestekTopluluk (legacy)Google resmi

Stetho ne zaman seçilmeli

Stetho, OkHttp'in zaten kullanıldığı ve ekibin Chrome DevTools'a alışkın olduğu eski projelerde uygundur. Yeni projeler için Android Studio Inspector çoğu hata ayıklama senaryosunu kapsar. Ancak Chrome DevTools, SQLite sorguları için hâlâ daha rahattır: SQL otomatik tamamlamalı yerleşik konsol, IDE'deki sıralı tıklamalardan daha hızlıdır.

Stetho üzerinden View Hierarchy'yi inceleme

Stetho'daki View Hierarchy, Chrome DevTools'un Elements sekmesinde DOM benzeri bir ağaç olarak görüntülenir. Her View, öznitelikleriyle bir HTML öğesi olarak temsil edilir: id, layout_width, layout_height, padding, margin, visibility ve metin. Ağaçtaki değişiklikler, ekran döndürüldüğünde veya UI güncellendiğinde gerçek zamanlı olarak senkronize edilir.

Özellikleri görüntüleme ve değiştirme

Ağaçta bir öğe seçerek özelliklerini Styles panelinde görüntüleyebilirsiniz — web sayfalarını incelemeye benzer şekilde. Stetho, hesaplanan boyutları, dolguları, arka plan rengini ve durumu (pressed, focused, enabled) görüntüler. DevTools'ta bazı özellikleri değiştirmek, yeniden derlemeden uygulamaya anında uygulanır; bu da UI parametrelerinin seçimini hızlandırır.

View Inspector ile bellek sızıntılarını bulma

Stetho, View ile ilgili bellek sızıntılarını bulmaya yardımcı olur: bir Activity finish()'ten sonra yok edilmezse kök View'i ağaçta kalır. Elements sekmesini düzenli olarak kontrol ederek hayalet Activity'leri fark edebilir ve sızıntının kaynağını bulabilirsiniz — genellikle Context'e statik referanslar veya kapatılmamış iletişim kutuları.

Pratik hata ayıklama teknikleri

Stetho, sunucuya göndermeden önce JSON serileştirmesini kontrol etmek için etkilidir. Network Inspector'ı açın, isteği bulun ve veri yapısını ve alanların doğruluğunu kontrol etmek için gövdeyi Raw modunda görüntüleyin.

SQLiteOpenHelper'da hata ayıklama

Stetho, SQLiteOpenHelper üzerinden oluşturulan tüm veritabanlarını görüntüler. Veritabanı Chrome DevTools'ta görünmüyorsa, uygulama kodunda getWritableDatabase()'in en az bir kez çağrıldığını kontrol edin.

OkHttp'de Interceptor sırası

Değiştirilmiş istekleri görmek için Stetho, OkHttp zincirinde son interceptor olmalıdır. Doğru sıra: önce AuthInterceptor, sonra LoggingInterceptor, en son StethoInterceptor.

Stetho ile pratik hata ayıklama teknikleri

Stetho, sunucuya göndermeden önce JSON serileştirmesinin doğruluğunu kontrol etmek için etkilidir. Network Inspector'ı açın, isteği bulun ve alan yapısının ve veri türlerinin doğruluğundan emin olmak için istek gövdesini Raw modunda görüntüleyin.

SQLiteOpenHelper ve ContentProvider'da hata ayıklama

Stetho, SQLiteOpenHelper üzerinden oluşturulan tüm veritabanlarını görüntüler. Veritabanı Chrome DevTools'ta görünmüyorsa, uygulama kodunda getWritableDatabase() yönteminin en az bir kez çağrıldığını kontrol edin. Geçişler için SQL konsolu üzerinden ALTER TABLE çalıştırın ve sonucu bir SELECT sorgusuyla doğrulayın.

OkHttp zincirinde Interceptor sırası

Son değiştirilmiş istekleri görüntülemek için Stetho, OkHttp zincirinde son interceptor olmalıdır. Doğru sıra: doğru günlükleme için AuthInterceptor önce, sonra LoggingInterceptor, en son StethoInterceptor.

Sık sorulan sorular

Chrome DevTools üzerinden Stetho'ya nasıl bağlanılır?

Cihazı USB ile bağlayın, adb forward tcp:8080 localabstract:stetho_default komutunu çalıştırın ve Chrome'da chrome://inspect sayfasını açın. Stetho'nun uygulama kodunda başlatıldığından ve cihazın Remote Target listesinde algılandığından emin olun.

Stetho Android 12+'da çalışır mı?

Evet, Stetho Android 12+ üzerinde çalışır, ancak manifest dosyasında açık bir INTERNET izni gerektirir. Android 14+ üzerinde ADB güncellemesi gerekebilir. Yeni projeler için Google, Android Studio Inspector'ı önerir, ancak Stetho tüm sürümlerde çalışmaya devam eder.

Stetho OkHttp olmadan kullanılabilir mi?

Evet, SQLite Inspector, SharedPreferences ve View Hierarchy OkHttp olmadan çalışır. Network Inspector, stetho-okhttp3 veya stetho-urlconnection modülleri üzerinden OkHttp veya HttpURLConnection ile entegrasyon gerektirir. Stetho'nun temel çekirdeği bir ağ kütüphanesine bağlı değildir.

Release derlemesinde Stetho nasıl kapatılır?

Gradle'de debugImplementation kullanın: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. Release derlemesinde Stetho kodu derlenmez. Başlatma ayrı bir sınıftaysa, çağrıyı bir BuildConfig.DEBUG kontrolüyle sarın.

2026'da Stetho'nun alternatifleri nelerdir?

Başlıca alternatifler: Chucker (uygulama içinde HTTP inceleme, UI ile), Android Studio Profiler ve Network Inspector araçları ve Flipper (genişletilmiş işlevselliğe sahip Facebook'un modüler platformu). Chucker, özellikle Chrome DevTools olmadan uygulama içi çözüm olarak popülerdir.

Özet

  • Stetho, API 19+ ile çalışan Chrome DevTools üzerinden Android'de hata ayıklama için Facebook (Meta) kütüphanesidir.
  • Bağlantı, Gradle debugImplementation ve Application.onCreate() içinde başlatma ile ek izin olmadan yapılır.
  • Network Inspector, istek ve yanıtın tüm ayrıntılarını göstererek OkHttp Interceptor üzerinden HTTP trafiğini yakalar.
  • SQLite Inspector, uygulamanın veritabanlarında gerçek zamanlı olarak isteğe bağlı SQL sorguları çalıştırmanızı sağlar.
  • Dumpapp, adb üzerinden uygulama durumunun dökümü için özel komutlar oluşturmak üzere bir kabuk arayüzü sağlar.
  • Stetho vs Android Studio — Stetho, SQLite ve eski projeler için uygundur; Studio Inspector, yeni geliştirmelerin standardıdır.
  • Chucker ve Flipper — uygulama içi UI ve modüler mimariye sahip modern alternatifler.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun