Network Inspector in Android Studio is een ingebouwd profileringsinstrument voor het monitoren en analyseren van netwerkverkeer van een mobiele app in realtime. Volgens officiële Android Developers-documentatie (2025) stelt het instrument u in staat de uitvoeringstijd van verzoeken, de hoeveelheid verzonden gegevens en de HTTP-status van elke aanroep te volgen. Het instrument vereist geen wijzigingen in de app-code en werkt „uit de doos” met elk project op API Level 14 en hoger.
Belangrijkste punten
Network Inspector is een profileringsinstrument voor netwerkactiviteit dat is ingebouwd in Android Studio. Het stelt ontwikkelaars in staat om in realtime alle HTTP- en HTTPS-verzoeken van de app te bekijken, inclusief headers, verzoek- en antwoordbody, statuscodes en uitvoeringstijd. Beschikbaar via het Android Profiler-paneel vanaf Android Studio 3.0.
De hoofdtaak van Network Inspector is het debuggen van de netwerkinteractie van de mobiele app met de server. Het instrument wordt gebruikt voor het controleren van de juistheid van verzonden gegevens, analyse van responstijd, zoeken naar API-fouten en het detecteren van suboptimale netwerkpatronen — zoals meerdere verzoeken bij het laden van één scherm. Network Inspector werkt op elk apparaat met API Level 14.
Het instrument ondersteunt alle belangrijke Android HTTP-cliënten: OkHttp (vanaf versie 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (verouderd) en WebView. Voor OkHttp en Retrofit is de OkHttp Profiler-bibliotheek vereist — deze wordt automatisch toegevoegd bij gebruik van Android Studio 4.1+. Voor Ktor is een aparte interceptors-configuratie nodig.
Network Inspector onderschept netwerkoproepen op systeemniveau via het Profiler Agent-mechanisme, dat samen met Android Profiler wordt geïnjecteerd. Voor correcte werking is een debug-build van de app vereist. Het instrument wijzigt de app-code niet en vereist geen toevoeging van afhankelijkheden voor basisfunctionaliteit.
Bij het starten van profilering verbindt Network Inspector zich met het Debug-proces van de app en luistert naar alle HTTP-aanroepen die via OkHttp Client, UrlConnection of andere ondersteunde bibliotheken gaan. Elk verzoek wordt geregistreerd met een tijdstempel, wat het mogelijk maakt een tijdlijn van netwerkactiviteit op te bouwen. Voor HTTPS wordt een systeemtussenlaag gebruikt die de codering tijdens verzending behoudt, maar het mogelijk maakt de gedecodeerde inhoud in Studio te bekijken.
Gegevensverzameling vindt plaats via de Profiler Service van Android Studio, die in een apart hostproces draait. Op het apparaat draait een lichte agent die metadata van verzoeken via het ADB-kanaal verzendt. Dit minimaliseert de impact op de app-prestaties — de overhead is minder dan 3% volgens Google-gegevens. De eigenlijke verzoekgegevens (body, headers) worden alleen verzonden tijdens actieve weergave van details.
// OkHttp aansluiten voor integratie met Network Inspector
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// Network Inspector onderschept automatisch alle aanroepen via client
client.newCall(Request.Builder()
.url("https://api.example.com/data")
.build()).execute()
Network Inspector biedt een set instrumenten voor uitgebreide analyse van netwerkverkeer. Elke functie is gericht op het oplossen van een specifieke debugtaak — van het controleren van headers tot het analyseren van API-prestaties.
Het hoofdscherm van Network Inspector toont de chronologie van alle verzoeken als een tijdlijn. Elk verzoek wordt weergegeven als een gekleurde balk: groen — succesvol antwoord (2xx), blauw — doorverwijzing (3xx), geel — clientfout (4xx), rood — serverfout (5xx). De lengte van de balk komt overeen met de uitvoeringstijd van het verzoek van verbinding tot ontvangst van het volledige antwoord. Dit maakt het mogelijk direct trage of foutieve verzoeken te identificeren.
| Parameter | Beschrijving | Voorbeeldwaarde |
|---|---|---|
| URL | Volledig adres van het verzoek | https://api.example.com/v2/users |
| Method | HTTP-methode van het verzoek | POST |
| Status | HTTP-antwoordcode | 200 OK |
| Size | Grootte van verzoek + antwoord in bytes | 12.4 KB |
| Time | Totale uitvoeringstijd | 342 ms |
Bij het selecteren van een specifiek verzoek opent een paneel met details: Headers (alle headers van verzoek en antwoord), Request Body (verzoekbody in tekst- of binair formaat), Response Body (antwoordbody met JSON-opmaakmogelijkheid), Cookies (verzonden en ontvangen), Timing (tijdsverdeling per fase: DNS, Connection, TLS Handshake, Request, Response).
Network Inspector ondersteunt filteren van verzoeken op URL, HTTP-methode, statuscode en inhoudstype. Verzoeken naar bepaalde domeinen kunnen worden uitgesloten om zich alleen op de benodigde API te concentreren. Zoeken werkt in alle velden van het verzoek, inclusief body en headers, wat handig is bij het debuggen van een specifieke app-functie. Gecombineerde filters maken het mogelijk een set regels te maken die automatisch worden toegepast bij elke profileringstart.
De tijdlijn ondersteunt groeperen van verzoeken op URL-patronen. Bijvoorbeeld, alle verzoeken van de vorm /api/v2/users/* kunnen in één groep worden samengevoegd. Dit vereenvoudigt de analyse wanneer de app honderden verzoeken in korte tijd uitvoert. De functie voor het vergelijken van aangrenzende verzoeken helpt bij het detecteren van veranderingen in serverantwoorden bij herhaalde aanroepen.
Praktisch gebruik van Network Inspector omvat typische debugscenario's: controleren van gegevensformaat, detecteren van trage endpoints, vinden van geheugenlekken door niet-gesloten verbindingen en analyseren van caching.
Een veelvoorkomende taak — controleren of de server gegevens in het verwachte formaat retourneert. Network Inspector toont de antwoordbody met JSON-opmaak, inclusief syntaxishighlighting. Als het antwoord niet aan clientzijde kan worden geparseerd, is in de inspector direct de oorzaak zichtbaar: ontbrekend veld, verkeerd gegevenstype (string in plaats van getal) of overmatige nesting. Als de server een fout retourneert, toont de inspector de foutstructuur met code en bericht. Voor binaire formaten (Protocol Buffers, afbeeldingen) worden grootte en content-type weergegeven.
Het tabblad Timing verdeelt de uitvoering van het verzoek in fasen: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Als de totale tijd 1-2 seconden overschrijdt, kan op basis van de faseverdeling de oorzaak worden bepaald. Bijvoorbeeld, lange DNS wijst op problemen met de resolver, lange TLS Handshake op een verouderde protocolversie op de server, lange Response op trage servercode of een inefficiënt verzoek met overbodige gegevens. Timing-analyse helpt knelpunten te identificeren nog voordat optimalisatie van de serverkant begint.
Network Inspector helpt bij het detecteren van overbodige verzoeken — bijvoorbeeld wanneer Activity bij elke schermrotatie het laden van gegevens opnieuw start. Op de tijdlijn wijst een reeks identieke verzoeken achter elkaar duidelijk op het probleem. De oplossing kan caching zijn, gebruik van ViewModel met toestandsbehoud of SingleLiveEvent voor eenmalig laden.
// Cachen van verzoeken met OkHttp om duplicatie te voorkomen
val cache = Cache(
File(context.cacheDir, "http_cache"),
cacheSize = 10L * 1024 * 1024 // 10 MB
)
val cachedClient = OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(CacheInterceptor())
.build()
Ondanks de uitgebreide mogelijkheden heeft Network Inspector een aantal beperkingen die in overweging moeten worden genomen. Voor sommige scenario's — zoals HTTPS-onderschepping met zelfondertekende certificaten of analyse van verkeer van bibliotheken van derden — kunnen alternatieve instrumenten nodig zijn.
Network Inspector werkt alleen met Android-apps en ondersteunt iOS niet. Voor Kotlin Multiplatform (KMM) kunnen sommige verzoeken niet worden weergegeven als ze in het native deel worden uitgevoerd. Sommige bibliotheken — zoals gRPC, WebSocket (niet HTTP), GraphQL via Apollo (tot versie 3.x) — kunnen gedeeltelijk of helemaal niet worden onderschept zonder configuratie van extra interceptors.
Voor diepgaandere analyse van netwerkverkeer bestaan oplossingen van derden: Charles Proxy (volledige proxyserver met HTTPS-onderschepping), Proxyman (equivalent voor macOS), Wireshark (analyse op pakketniveau), Stetho by Facebook (integratie met Chrome DevTools), Chucker (bibliotheek voor inspectie van verzoeken in de app). Elk instrument heeft zijn niche: Charles en Proxyman zijn onmisbaar bij het debuggen van serverinteractie in vroege ontwikkelingsfasen, en Chucker voor het verzamelen van informatie in test-builds.
| Instrument | Type | Platform | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Ingebouwd in Android Studio | Android | Ja | Ja |
| Charles Proxy | Proxyserver | Multiplatform | Ja | Ja |
| Proxyman | Proxyserver | macOS, iOS | Ja | Ja |
| Chucker | In-app inspector | Android | Ja | Nee |
| Wireshark | Pakketanalysator | Multiplatform | Nee | Nee |
Veelgestelde vragen
Zorg ervoor dat de app is gecompileerd in Debug-configuratie en is gestart met Android Profiler verbonden. Als OkHttp 4.x wordt gebruikt, moet de bibliotheek mogelijk worden bijgewerkt naar de nieuwste versie. Voor Ktor worden verzoeken alleen weergegeven bij gebruik van een Ktor-client met een Engine die onderschepping ondersteunt.
Ja, Network Inspector ondersteunt HTTPS-verkeer zonder extra configuratie. In tegenstelling tot Charles Proxy is installatie van een rootcertificaat niet vereist. Het instrument gebruikt het systeemmechanisme van Android Profiler voor het decoderen van verkeer binnen de debugsessie.
Network Inspector maakt export van gegevens in HAR-formaat (HTTP Archive) mogelijk. Klik op de Export-knop in de rechterbovenhoek van het paneel. Het HAR-bestand kan worden geopend in elke HAR-viewer of worden geïmporteerd in Charles Proxy en Proxyman voor verdere analyse.
Volgens Google-gegevens overschrijdt de overhead niet meer dan 3% tijdens actieve profilering. Wanneer Network Inspector is uitgeschakeld, is er geen overhead. Het instrument wordt niet aanbevolen voor gebruik in release-builds, maar in Debug-sessies is de impact onmerkbaar op moderne apparaten.
Als de antwoordbody wordt weergegeven als onleesbare onbewerkte gegevens, kan dit verband houden met gzip-compressie of een binair formaat (Protocol Buffers, MessagePack). Network Inspector decodeert gzip automatisch. Gebruik voor aangepaste formaten de Content-Type-hint in de antwoordheaders.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook