A Network Inspector az Android Studio-ban egy beépített profilozó eszköz, amely a mobilalkalmazás hálózati forgalmának valós idejű figyelésére és elemzésére szolgál. A hivatalos Android Developers (2025) dokumentáció szerint az eszköz lehetővé teszi a kérések végrehajtási idejének, az átvitt adatok mennyiségének és az egyes hívások HTTP-státuszának nyomon követését. Az eszköz nem igényel módosításokat az alkalmazás kódjában, és „dobozból kivéve” működik bármely API Level 14 vagy magasabb projekt esetén.
Főbb pontok
Network Inspector egy hálózati tevékenység profilozó eszköz, amely az Android Studio-ba van beépítve. Lehetővé teszi a fejlesztők számára, hogy valós időben megtekintsék az alkalmazás által küldött összes HTTP- és HTTPS-kérést, beleértve a fejléceket, a kérés és válasz törzsét, a státuszkódokat és a végrehajtás időtartamát. Az Android Studio 3.0-tól kezdve érhető el az Android Profiler panelen keresztül.
A Network Inspector fő feladata a mobilalkalmazás szerverrel való hálózati interakciójának hibakeresése. Az eszközt az átvitt adatok helyességének ellenőrzésére, a válaszidők elemzésére, API-hibák keresésére, valamint nem optimális hálózati minták — például több kérés egy képernyő betöltésekor — észlelésére használják. A Network Inspector bármely API Level 14-es eszközön működik.
Az eszköz támogatja az összes főbb Android HTTP klienst: OkHttp (2.x verziótól), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (elavult) és WebView. Az OkHttp és Retrofit esetében az OkHttp Profiler könyvtár szükséges — automatikusan hozzáadódik az Android Studio 4.1+ használatakor. A Ktor esetében külön interceptor konfiguráció szükséges.
A Network Inspector rendszerszinten fogja el a hálózati hívásokat a Profiler Agent mechanizmus segítségével, amely az Android Profilerrel együtt kerül beillesztésre. A megfelelő működéshez az alkalmazás debug buildje szükséges. Az eszköz nem módosítja az alkalmazás kódját, és nem igényel függőségek hozzáadását az alapvető funkciókhoz.
A profilozás elindításakor a Network Inspector csatlakozik az alkalmazás Debug folyamatához, és figyeli az OkHttp Client, UrlConnection vagy más támogatott könyvtárakon áthaladó összes HTTP-hívást. Minden kérés időbélyegzővel kerül rögzítésre, ami lehetővé teszi a hálózati tevékenység idővonalának felépítését. A HTTPS esetében egy rendszer-köztes réteg kerül használatra, amely megőrzi a titkosítást az átvitel során, de lehetővé teszi a dekódolt tartalom megtekintését a Studio-n belül.
Az adatgyűjtés az Android Studio Profiler Service-én keresztül történik, amely a gazdagép külön folyamatában fut. Az eszközön egy könnyűsúlyú ügynök fut, amely a kérések metaadatait az ADB csatornán keresztül továbbítja. Ez minimalizálja az alkalmazás teljesítményére gyakorolt hatást — a többletterhelés a Google adatai szerint kevesebb mint 3%. Maguk a kérésadatok (törzs, fejlécek) csak a részletek aktív megtekintésekor kerülnek továbbításra.
// OkHttp csatlakoztatása a Network Inspector-ral való integrációhoz
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// A Network Inspector automatikusan elfogja az összes hívást a client-en keresztül
client.newCall(Request.Builder()
.url("https://api.example.com/data")
.build()).execute()
A Network Inspector eszközkészletet biztosít a hálózati forgalom átfogó elemzéséhez. Minden funkció egy adott hibakeresési feladat megoldására irányul — a fejlécek ellenőrzésétől az API-teljesítmény elemzéséig.
A Network Inspector főképernyője az összes kérés kronológiáját idővonal formájában jeleníti meg. Minden kérést egy színes sáv képvisel: zöld — sikeres válasz (2xx), kék — átirányítás (3xx), sárga — kliens hiba (4xx), piros — szerver hiba (5xx). A sáv hossza megfelel a kérés végrehajtási idejének a kapcsolódástól a teljes válasz megérkezéséig. Ez lehetővé teszi a lassú vagy hibás kérések azonnali azonosítását.
| Paraméter | Leírás | Példa érték |
|---|---|---|
| URL | A kérés teljes címe | https://api.example.com/v2/users |
| Method | A kérés HTTP metódusa | POST |
| Status | A válasz HTTP kódja | 200 OK |
| Size | A kérés + válasz mérete bájtokban | 12.4 KB |
| Time | Teljes végrehajtási idő | 342 ms |
Egy adott kérés kiválasztásakor egy panel nyílik meg a részletekkel: Headers (a kérés és válasz összes fejléce), Request Body (a kérés törzse szöveges vagy bináris formátumban), Response Body (a válasz törzse JSON formázási lehetőséggel), Cookies (küldött és fogadott), Timing (az idő fázisokra bontása: DNS, Connection, TLS Handshake, Request, Response).
A Network Inspector támogatja a kérések szűrését URL, HTTP metódus, státuszkód és tartalomtípus szerint. Bizonyos domainekre irányuló kérések kizárhatók, hogy csak a szükséges API-ra lehessen összpontosítani. A keresés a kérés összes mezőjében működik, beleértve a törzset és a fejléceket is, ami kényelmes az alkalmazás egy adott funkciójának hibakeresésekor. A kombinált szűrők lehetővé teszik olyan szabálykészlet létrehozását, amely automatikusan alkalmazásra kerül minden profilozás indításakor.
Az idővonal támogatja a kérések csoportosítását URL-minták szerint. Például az összes /api/v2/users/* formájú kérés egy csoportba vonható össze. Ez leegyszerűsíti az elemzést, amikor az alkalmazás rövid idő alatt több száz kérést hajt végre. A szomszédos kérések összehasonlítására szolgáló funkció segít észlelni a szerver válaszaiban bekövetkező változásokat ismételt hívások esetén.
A Network Inspector gyakorlati használata tipikus hibakeresési forgatókönyveket fed le: az adatformátum ellenőrzése, lassú végpontok észlelése, a le nem zárt kapcsolatok miatti memóriaszivárgások megtalálása és a gyorsítótárazás elemzése.
Gyakori feladat — meggyőződni arról, hogy a szerver a várt formátumban adja vissza az adatokat. A Network Inspector a válasz törzsét JSON formázással, szintaxiskiemeléssel jeleníti meg. Ha a válasz nem értelmezhető a kliens oldalon, az inspektorban azonnal látható az ok: hiányzó mező, helytelen adattípus (szám helyett karakterlánc) vagy túlzott beágyazottság. Ha a szerver hibát ad vissza, az inspektor megjeleníti a hiba szerkezetét kóddal és üzenettel. Bináris formátumok (Protocol Buffers, képek) esetén a méret és a content-type jelenik meg.
A Timing fül a kérés végrehajtását fázisokra bontja: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Ha a teljes idő meghaladja az 1-2 másodpercet, a fázisbontás alapján meghatározható az ok. Például a hosszú DNS a resolver problémáira, a hosszú TLS Handshake a szerver elavult protokollverziójára, a hosszú Response pedig lassú szerverkódra vagy hatékonytalan, felesleges adatokat tartalmazó kérésre utal. A Timing elemzés segít a szűk keresztmetszetek azonosításában még a szerveroldal optimalizálásának megkezdése előtt.
A Network Inspector segít a felesleges kérések észlelésében — például amikor a képernyő minden elforgatásakor az Activity újratölti az adatokat. Az idővonalon egymás utáni azonos kérések sorozata egyértelműen jelzi a problémát. A megoldás lehet gyorsítótárazás, állapotmegőrző ViewModel vagy SingleLiveEvent használata egyszeri betöltéshez.
// Kérések gyorsítótárazása OkHttp-val a duplikáció megszüntetéséhez
val cache = Cache(
File(context.cacheDir, "http_cache"),
cacheSize = 10L * 1024 * 1024 // 10 MB
)
val cachedClient = OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(CacheInterceptor())
.build()
A széles körű lehetőségek ellenére a Network Inspector-nak vannak korlátai, amelyeket fontos figyelembe venni. Bizonyos forgatókönyvekhez — például a HTTPS elfogásához önaláírt tanúsítványokkal vagy harmadik fél könyvtárai forgalmának elemzéséhez — alternatív eszközökre lehet szükség.
A Network Inspector csak Android-alkalmazásokkal működik, és nem támogatja az iOS-t. A Kotlin Multiplatform (KMM) esetében előfordulhat, hogy egyes kérések nem jelennek meg, ha a natív részben hajtódnak végre. Egyes könyvtárak — például a gRPC, a WebSocket (nem HTTP), a GraphQL az Apollo-n keresztül (3.x verzióig) — részlegesen vagy egyáltalán nem foghatók el további elfogók konfigurálása nélkül.
A hálózati forgalom mélyebb elemzéséhez harmadik féltől származó megoldások léteznek: Charles Proxy (teljes proxy szerver HTTPS-elfogással), Proxyman (megfelelője macOS-re), Wireshark (csomagszintű elemzés), Stetho by Facebook (integráció a Chrome DevTools-szal), Chucker (könyvtár a kérések alkalmazáson belüli vizsgálatához). Minden eszköznek megvan a maga területe: a Charles és a Proxyman nélkülözhetetlen a szerverrel való interakció hibakeresésében a fejlesztés korai szakaszában, a Chucker pedig a tesztbuildekben történő információgyűjtéshez.
| Eszköz | Típus | Platform | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Beépítve az Android Studio-ba | Android | Igen | Igen |
| Charles Proxy | Proxy szerver | Többplatformos | Igen | Igen |
| Proxyman | Proxy szerver | macOS, iOS | Igen | Igen |
| Chucker | Alkalmazáson belüli inspektor | Android | Igen | Nem |
| Wireshark | Csomagelemző | Többplatformos | Nem | Nem |
Gyakran ismételt kérdések
Győződjön meg arról, hogy az alkalmazás Debug konfigurációban van lefordítva és az Android Profiler csatlakoztatva van. Ha OkHttp 4.x-et használ, előfordulhat, hogy frissíteni kell a könyvtárat a legújabb verzióra. A Ktor esetében a kérések csak akkor jelennek meg, ha az elfogást támogató Engine-nel rendelkező Ktor klienst használja.
Igen, a Network Inspector támogatja a HTTPS-forgalmat további konfiguráció nélkül. A Charles Proxy-val ellentétben nem szükséges gyökértanúsítvány telepítése. Az eszköz az Android Profiler rendszermechanizmusát használja a forgalom dekódolásához a hibakeresési munkameneten belül.
A Network Inspector lehetővé teszi az adatok exportálását HAR (HTTP Archive) formátumban. Kattintson az Export gombra a panel jobb felső sarkában. A HAR fájl bármely HAR-megjelenítőben megnyitható vagy importálható a Charles Proxy-ba és a Proxyman-ba további elemzés céljából.
A Google adatai szerint a többletterhelés nem haladja meg a 3%-ot aktív profilozás esetén. Amikor a Network Inspector ki van kapcsolva, nincs többletterhelés. Az eszköz nem ajánlott release buildekben való használatra, de Debug munkamenetekben a hatás észrevehetetlen a modern eszközökön.
Ha a válasz törzse olvashatatlan nyers adatként jelenik meg, ez összefügghet a gzip tömörítéssel vagy bináris formátummal (Protocol Buffers, MessagePack). A Network Inspector automatikusan dekódolja a gzip-et. Egyéni formátumok esetén használja a Content-Type utasítást a válasz fejléceiben.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is