Stetho — isang library para sa pagde-debug ng Android apps, na binuo ng Facebook (Meta) noong 2014. Ang tool ay nagsasama sa app sa pamamagitan ng Gradle dependency at binubuksan ang access sa panloob na estado sa pamamagitan ng Chrome DevTools. Ayon sa repositoryong facebook/stetho (2026), sinusuportahan ng library ang pag-iinspect ng SQLite, Network, SharedPreferences, View Hierarchy, at Dumpapp plugins.
Mga pangunahing punto
Stetho — ay isang Java library na nagpapatakbo ng lokal na WebSocket server sa loob ng Android app. Ang Chrome DevTools ay kumokonekta sa server na ito sa pamamagitan ng adb port, na nakakakuha ng access sa mga panloob na bahagi ng app: mga database, mga network request, preferences, at view hierarchy. Ang lahat ng komunikasyon ay dumadaan sa protocol na Chrome DevTools Protocol, na nagpapahintulot sa paggamit ng mga karaniwang tool ng browser nang walang pag-install ng karagdagang software.
Ang library ay binubuo ng mga module: stetho (core), stetho-okhttp (pagsasagap ng traffic sa pamamagitan ng OkHttp), stetho-urlconnection (pagsasagap sa pamamagitan ng HttpURLConnection), at stetho-js-rhino (suporta para sa JavaScript plugins). Ang core ay nagbubukas ng UNIX socket na kinokonekta ng Chrome sa pamamagitan ng adb forward. Ang bawat inspector ay ipinapatupad bilang isang hiwalay na plugin na nirerehistro sa inisyalisasyon ng Stetho.
Sinusuportahan ng Stetho ang Android 4.4+ (API 19) at gumagana lamang sa mga debug build. Sa mga device na may Android 11+ kinakailangan ang malinaw na INTERNET permission sa manifest. Hindi na opisyal na sinusuportahan ang library ng Facebook mula noong 2020, ngunit nananatiling bukas ang code at ginagamit sa mga legacy project. Para sa mga bagong project, inirerekomenda ng Google ang Android Studio Profiler at Network Inspector.
Pagkonekta ay ginagawa sa pamamagitan ng Gradle dependency na may flag na debugImplementation, upang ang Stetho ay gumana lamang sa debug build. Ang inisyalisasyon ay nangyayari sa method na Application.onCreate() na may isang tawag na Stetho.initializeWithDefaults(this). Para sa Network Inspector kinakailangan ang integrasyon sa OkHttp sa pamamagitan ng Interceptor.
// build.gradle (app) — pagkonekta ng Stetho
dependencies {
debugImplementation 'com.facebook.stetho:stetho:1.6.0'
debugImplementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
}
// Inisyalisasyon sa Application class
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
Para sa pagsasagap ng mga network request sa pamamagitan ng OkHttp, idagdag ang StethoInterceptor sa chain ng mga interceptor. Awtomatikong nilo-log ng Stetho ang URL, headers ng request at response, status code, at oras ng pagpapatupad. Ang data ay ipinapakita sa tab na Network sa Chrome DevTools pagkatapos kumonekta sa device sa pamamagitan ng chrome://inspect.
Network Inspector ng Stetho ay nagpapakita ng lahat ng HTTP request ng app sa kronolohikal na pagkakasunod-sunod. Para sa bawat request ay available: method, URL, status code, headers ng request at response, body ng request at response (kasama ang JSON at binary data). Ang tab na Preview ay nagpapakita ng body ng response sa naka-format na anyo.
Sinusuportahan ng Chrome DevTools ang pag-filter ng mga request ayon sa uri (XHR, JS, CSS, Doc), status code, at domain. Ang search field ay nag-filter ayon sa URL at nilalaman. Para sa mobile development, kapaki-pakinabang na i-grupo ang mga request ayon sa API domain at suriin ang pagkakasunod-sunod ng mga tawag kapag nagte-test ng mga screen ng app.
// OkHttp client na may Stetho interceptor
OkHttpClient client = new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
// Pagpapatakbo ng request
Request request = new Request.Builder()
.url("https://api.example.com/users")
.build();
client.newCall(request).enqueue(callback);
Database Inspector ng Stetho ay kumokonekta sa SQLite database ng app sa pamamagitan ng Chrome DevTools. Sa tab na Resources → Web SQL ay ipinapakita ang lahat ng bukas na database, ang kanilang mga table, at nilalaman. Available ang pagtingin sa istruktura ng mga table, index, at pagpapatakbo ng mga arbitraryong SQL query.
Sa console ng Chrome DevTools ay maaaring magpatakbo ng SQL query nang direkta sa database ng app: SELECT, INSERT, UPDATE, DELETE. Ito ay kapaki-pakinabang para sa paglilinis ng data bago ang pagsubok, pag-check ng kawastuhan ng mga migrasyon, at manu-manong pag-aayos ng mga maling record nang hindi binubuo muli ang app. Ang lahat ng pagbabago ay agad na nakikita sa device.
Dumpapp — ay ang shell interface ng Stetho na nagpapahintulot sa pagpapatakbo ng mga custom command sa pamamagitan ng adb. Ang mga Dumpapp plugin ay nirerehistro sa inisyalisasyon ng Stetho at maaaring mag-export ng anumang estado ng app: cache, mga setting, estado ng DI container. Ang mga command ay pinapatakbo bilang adb forward tcp:12345 localabstract:stetho_dumpapp.
Ang plugin ay nagpapatupad ng interface na DumperContext at nirerehistro sa pamamagitan ng Stetho.initialize na may custom na InspectorModules. Ang halimbawa sa ibaba ay nagpapakita ng plugin para sa dump ng SharedPreferences: ang data ay sine-serialize sa JSON at ipinapakita sa terminal sa pamamagitan ng adb command.
// Custom Dumpapp plugin para sa SharedPreferences
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 ay nagbibigay ng mga built-in na profiling tool: Network Profiler, Database Inspector, at View Inspector, na lumitaw sa Android Studio 4.1+. Ang Stetho ay sikat bago ang pagpapakilala ng mga tool na ito at nananatiling may kaugnayan para sa mga project na gumagamit ng OkHttp at nangangailangan ng integrasyon sa Chrome DevTools.
| Kriterya | Stetho | Android Studio Inspector |
|---|---|---|
| Pag-install | Gradle dependency | Built-in sa IDE |
| Network | Sa pamamagitan ng OkHttp Interceptor | Awtomatiko para sa API 26+ |
| SQLite | Chrome DevTools + SQL query | Lamang sa Android Studio |
| SharedPreferences | Oo (Dumpapp plugin) | Hindi |
| View Hierarchy | Chrome DevTools Elements | Layout Inspector |
| Suporta | Community (legacy) | Opisyal ng Google |
Stetho ay makatuwiran sa mga legacy project kung saan ginagamit na ang OkHttp at sanay ang team sa Chrome DevTools. Para sa mga bagong project, ang Android Studio Inspector ay sumasaklaw sa karamihan ng mga debugging scenario. Gayunpaman, ang Chrome DevTools ay mas maginhawa pa rin para sa mga SQLite query: ang built-in na console na may auto-completion ng SQL ay mas mabilis kaysa sa sunud-sunod na pag-click sa IDE.
View Hierarchy sa Stetho ay ipinapakita sa tab na Elements ng Chrome DevTools bilang isang puno na katulad ng DOM. Ang bawat View ay kinakatawan bilang isang HTML element na may mga attribute: id, layout_width, layout_height, padding, margin, visibility, at text. Ang mga pagbabago sa puno ay sine-sync sa real time kapag umiikot ang screen o nag-a-update ang UI.
Sa pagpili ng isang element sa puno, maaari mong tingnan ang mga property nito sa panel na Styles — katulad ng pag-iinspect ng mga web page. Stetho ay nagpapakita ng mga kalkuladong sukat, mga puwang, kulay ng background, at estado (pressed, focused, enabled). Ang pagbabago ng ilang property sa DevTools ay agad na inilalapat sa app, na nagpapabilis sa pagpili ng mga UI parameter nang walang pag-rebuild.
Ang Stetho ay tumutulong sa pagtuklas ng memory leak na may kaugnayan sa View: kung ang Activity ay hindi nawasak pagkatapos ng finish(), ang root View nito ay nananatili sa puno. Sa pamamagitan ng regular na pagsusuri ng tab na Elements ay maaaring mapansin ang mga phantom Activity at mahanap ang pinagmulan ng leak — kadalasan ito ay mga static na reference sa Context o hindi saradong mga dialog.
Stetho ay epektibo para sa pag-check ng JSON serialization bago ipadala sa server. Buksan ang Network Inspector, hanapin ang request, at tingnan ang body sa Raw mode para ma-verify ang istruktura ng data at kawastuhan ng mga field.
Ipinapakita ng Stetho ang lahat ng database na ginawa sa pamamagitan ng SQLiteOpenHelper. Kung hindi lumalabas ang database sa Chrome DevTools — suriin na ang getWritableDatabase() ay tinawag kahit isang beses sa code ng app.
Ang Stetho ay dapat na huling interceptor sa chain ng OkHttp upang makita ang mga nabagong request. Tamang pagkakasunod-sunod: AuthInterceptor first, pagkatapos LoggingInterceptor, pagkatapos ang huling StethoInterceptor.
Stetho ay epektibo para sa pag-check ng kawastuhan ng JSON serialization bago ipadala sa server. Buksan ang Network Inspector, hanapin ang request, at tingnan ang body ng request sa Raw mode upang matiyak ang kawastuhan ng istruktura ng mga field at mga uri ng data.
Ipinapakita ng Stetho ang lahat ng database na ginawa sa pamamagitan ng SQLiteOpenHelper. Kung hindi lumalabas ang database sa Chrome DevTools — suriin na ang method na getWritableDatabase() ay tinawag kahit isang beses sa code ng app. Para sa mga migrasyon, patakbuhin ang ALTER TABLE sa pamamagitan ng SQL console at suriin ang resulta gamit ang SELECT query.
Ang Stetho ay dapat na huling interceptor sa chain ng OkHttp upang ipakita ang mga huling nabagong request. Tamang pagkakasunod-sunod: AuthInterceptor una, pagkatapos LoggingInterceptor, pagkatapos ang huling StethoInterceptor para sa tamang pag-log.
Mga madalas itanong
Ikonekta ang device sa pamamagitan ng USB, patakbuhin ang adb forward tcp:8080 localabstract:stetho_default, at buksan sa Chrome ang pahinang chrome://inspect. Tiyakin na ang Stetho ay na-inisyalisa sa code ng app at ang device ay nakita sa listahan ng Remote Target.
Oo, gumagana ang Stetho sa Android 12+, ngunit nangangailangan ng malinaw na INTERNET permission sa manifest. Sa Android 14+ ay maaaring kailanganin ang pag-update ng ADB. Para sa mga bagong project, inirerekomenda ng Google ang Android Studio Inspector, ngunit nananatiling gumagana ang Stetho sa lahat ng bersyon.
Oo, SQLite Inspector, SharedPreferences, at View Hierarchy ay gumagana nang walang OkHttp. Ang Network Inspector ay nangangailangan ng integrasyon sa OkHttp o HttpURLConnection sa pamamagitan ng mga module na stetho-okhttp3 o stetho-urlconnection. Ang pangunahing core ng Stetho ay hindi nakadepende sa network library.
Gamitin ang debugImplementation sa Gradle: debugImplementation 'com.facebook.stetho:stetho:1.6.0'. Sa release build, ang code ng Stetho ay hindi nako-compile. Kung ang inisyalisasyon ay nasa hiwalay na klase — balutin ang tawag ng check na BuildConfig.DEBUG.
Mga pangunahing alternatibo: Chucker (inspeksyon ng HTTP sa loob ng app, may UI), mga tool na Android Studio Profiler at Network Inspector, pati na rin ang Flipper (modular platform mula sa Facebook na may pinalawak na functionality). Ang Chucker ay lalong popular bilang in-app solution nang walang Chrome DevTools.
Mga konklusyon
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din