Network Inspector in Android Studio ist ein integriertes Profiler-Tool, das zur Echtzeitüberwachung und -analyse des Netzwerkverkehrs einer mobilen App entwickelt wurde. Laut der offiziellen Dokumentation von Android Developers (2025) ermöglicht das Tool, die Ausführungszeit von Anfragen, die Menge der übertragenen Daten und den HTTP-Status jedes Aufrufs zu verfolgen. Das Tool erfordert keine Änderungen am App-Code und funktioniert „out of the box“ mit jedem Projekt ab API Level 14.
Das Wichtigste
Network Inspector ist ein Profiler-Tool für Netzwerkaktivität, das in Android Studio integriert ist. Es ermöglicht Entwicklern, alle HTTP- und HTTPS-Anfragen, die von der App gesendet werden, in Echtzeit zu betrachten, einschließlich Header, Anforderungs- und Antworttext, Statuscodes und Ausführungsdauer. Verfügbar über das Android-Profiler-Panel seit Android Studio 3.0.
Die Hauptaufgabe von Network Inspector ist das Debuggen der Netzwerkkommunikation zwischen mobiler App und Server. Das Tool wird verwendet, um die Korrektheit der übertragenen Daten zu prüfen, die Antwortzeit zu analysieren, API-Fehler zu finden und nicht optimale Netzwerkmuster zu erkennen – zum Beispiel mehrfache Anfragen beim Laden eines einzelnen Bildschirms. Network Inspector funktioniert auf jedem Gerät mit API Level 14.
Das Tool unterstützt alle gängigen Android-HTTP-Clients: OkHttp (ab Version 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (veraltet) und WebView. Für OkHttp und Retrofit ist die Bibliothek OkHttp Profiler erforderlich – sie wird bei Verwendung von Android Studio 4.1+ automatisch angebunden. Für Ktor ist eine separate Interceptor-Konfiguration erforderlich.
Network Inspector fängt Netzwerkaufrufe auf Systemebene ab, indem es den Profiler-Agent-Mechanismus verwendet, der zusammen mit Android Profiler eingebettet wird. Für eine korrekte Funktion ist ein Debug-Build der App erforderlich. Das Tool ändert den App-Code nicht und erfordert keine zusätzlichen Abhängigkeiten für die Basisfunktionalität.
Beim Start des Proflings verbindet sich Network Inspector mit dem Debug-Prozess der App und hört alle HTTP-Aufrufe ab, die über OkHttp Client, UrlConnection oder andere unterstützte Bibliotheken laufen. Jede Anfrage wird mit einem Zeitstempel erfasst, sodass eine Zeitleiste der Netzwerkaktivität erstellt werden kann. Für HTTPS wird eine Systemebene verwendet, die die Verschlüsselung bei der Übertragung beibehält, aber das Anzeigen des dekodierten Inhalts innerhalb von Studio ermöglicht.
Die Datenerfassung erfolgt über den Profiler Service von Android Studio, der in einem separaten Host-Prozess läuft. Auf dem Gerät läuft ein leichtgewichtiger Agent, der die Anfrage-Metadaten über den ADB-Kanal überträgt. Dies minimiert den Einfluss auf die App-Leistung – die Zusatzkosten betragen laut Google weniger als 3%. Die Anfragedaten selbst (Text, Header) werden nur bei aktiver Detailansicht übertragen.
// Einrichtung von OkHttp für die Integration mit Network Inspector
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// Network Inspector fängt automatisch alle Aufrufe über client ab
client.newCall(Request.Builder()
.url("https://api.example.com/data")
.build()).execute()
Network Inspector bietet einen Satz von Werkzeugen für eine umfassende Analyse des Netzwerkverkehrs. Jede Funktion zielt darauf ab, eine konkrete Debugging-Aufgabe zu lösen – von der Prüfung der Header bis zur Analyse der API-Leistung.
Der Hauptbildschirm von Network Inspector zeigt die Chronologie aller Anfragen als Zeitleiste. Jede Anfrage wird als farbiger Balken dargestellt: Grün – erfolgreiche Antwort (2xx), Blau – Weiterleitung (3xx), Gelb – Client-Fehler (4xx), Rot – Server-Fehler (5xx). Die Länge des Balkens entspricht der Ausführungszeit der Anfrage von der Verbindung bis zum Empfang der vollständigen Antwort. So lassen sich langsame oder fehlgeschlagene Anfragen sofort erkennen.
| Parameter | Beschreibung | Beispiel für den Wert |
|---|---|---|
| URL | Vollständige Adresse der Anfrage | https://api.example.com/v2/users |
| Method | HTTP-Methode der Anfrage | POST |
| Status | HTTP-Code der Antwort | 200 OK |
| Size | Größe der Anfrage + Antwort in Bytes | 12.4 KB |
| Time | Gesamte Ausführungszeit | 342 ms |
Beim Auswählen einer konkreten Anfrage öffnet sich ein Panel mit Details: Headers (alle Header der Anfrage und Antwort), Request Body (Anforderungstext im Text- oder Binärformat), Response Body (Antworttext mit JSON-Formatierungsoption), Cookies (gesendete und empfangene), Timing (Zeitaufschlüsselung nach Phasen: DNS, Connection, TLS Handshake, Request, Response).
Network Inspector unterstützt das Filtern von Anfragen nach URL, HTTP-Methode, Statuscode und Inhaltstyp. Anfragen an bestimmte Domains können ausgeschlossen werden, um sich nur auf die gewünschte API zu konzentrieren. Die Suche funktioniert über alle Felder der Anfrage, einschließlich Text und Header, was beim Debuggen einer bestimmten App-Funktion praktisch ist. Kombinierte Filter ermöglichen die Erstellung eines Regelsatzes, der bei jedem Start des Proflings automatisch angewendet wird.
Die Zeitleiste unterstützt das Gruppieren von Anfragen nach URL-Mustern. Zum Beispiel können alle Anfragen der Form /api/v2/users/* zu einer Gruppe zusammengefasst werden. Dies vereinfacht die Analyse, wenn die App in kurzer Zeit Hunderte von Anfragen durchführt. Die Vergleichsfunktion benachbarter Anfragen hilft, Änderungen in den Serverantworten bei wiederholten Aufrufen zu erkennen.
Die praktische Nutzung von Network Inspector umfasst typische Debugging-Szenarien: Prüfung des Datenformats, Erkennung langsamer Endpunkte, Auffinden von Speicherlecks durch nicht geschlossene Verbindungen und Analyse des Cachings.
Eine häufige Aufgabe ist sicherzustellen, dass der Server die Daten im erwarteten Format zurückgibt. Network Inspector zeigt den Antworttext mit JSON-Formatierung einschließlich Syntaxhervorhebung. Wenn die Antwort im Client nicht geparst werden kann, ist im Inspector sofort die Ursache zu sehen: fehlendes Feld, falscher Datentyp (Zeichenkette statt Zahl) oder übermäßige Verschachtelung. Wenn der Server einen Fehler zurückgibt, zeigt der Inspector die Fehlerstruktur mit Code und Meldung. Für binäre Formate (Protocol Buffers, Bilder) werden Größe und Content-Type angezeigt.
Der Tab Timing unterteilt die Ausführung der Anfrage in Phasen: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Wenn die Gesamtzeit 1–2 Sekunden überschreitet, lässt sich anhand der Phasenaufschlüsselung die Ursache ermitteln. Zum Beispiel deutet ein langsames DNS auf Probleme mit dem Resolver hin, ein langsames TLS Handshake auf eine veraltete Protokollversion auf dem Server und ein langsames Response auf langsamen Servercode oder eine ineffiziente Anfrage mit überflüssigen Daten. Die Timing-Analyse hilft, Engpässe zu erkennen, bevor mit der Optimierung der Serverseite begonnen wird.
Network Inspector hilft, redundante Anfragen zu erkennen – zum Beispiel, wenn die Activity bei jeder Bildschirmdrehung das Laden der Daten neu erstellt. In der Zeitleiste weist eine Serie identischer aufeinanderfolgender Anfragen deutlich auf das Problem hin. Die Lösung kann Caching, die Verwendung eines ViewModel mit Zustandserhalt oder SingleLiveEvent für ein einmaliges Laden sein.
// Caching von Anfragen mit OkHttp zur Vermeidung von Duplikaten
val cache = Cache(
File(context.cacheDir, "http_cache"),
cacheSize = 10L * 1024 * 1024 // 10 MB
)
val cachedClient = OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(CacheInterceptor())
.build()
Trotz der vielfältigen Möglichkeiten hat Network Inspector eine Reihe von Einschränkungen, die zu beachten sind. Für einige Szenarien – etwa das Abfangen von HTTPS mit selbstsignierten Zertifikaten oder die Analyse des Verkehrs von Drittanbieter-Bibliotheken – können alternative Tools erforderlich sein.
Network Inspector funktioniert nur mit Android-Apps und unterstützt kein iOS. Für Kotlin Multiplatform (KMM) kann ein Teil der Anfragen nicht angezeigt werden, wenn sie im nativen Teil ausgeführt werden. Einige Bibliotheken – zum Beispiel gRPC, WebSocket (nicht HTTP), GraphQL über Apollo (bis Version 3.x) – können teilweise oder gar nicht abgefangen werden, bis zusätzliche Interceptoren konfiguriert sind.
Für eine tiefere Analyse des Netzwerkverkehrs gibt es Drittanbieter-Lösungen: Charles Proxy (vollwertiger Proxy-Server mit HTTPS-Abfang), Proxyman (Analogon für macOS), Wireshark (Analyse auf Paketebene), Stetho by Facebook (Integration mit Chrome DevTools), Chucker (Bibliothek zur Inspektion von Anfragen innerhalb der App). Jedes Tool hat seine Nische: Charles und Proxyman sind beim Debuggen der Server-Interaktion in frühen Entwicklungsphasen unverzichtbar, Chucker dagegen zum Sammeln von Informationen in Test-Builds.
| Tool | Typ | Plattform | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | In Android Studio integriert | Android | Ja | Ja |
| Charles Proxy | Proxy-Server | Plattformübergreifend | Ja | Ja |
| Proxyman | Proxy-Server | macOS, iOS | Ja | Ja |
| Chucker | In-App-Inspektor | Android | Ja | Nein |
| Wireshark | Paketanalysator | Plattformübergreifend | Nein | Nein |
Häufig gestellte Fragen
Stellen Sie sicher, dass die App in der Debug-Konfiguration erstellt und mit verbundenem Android Profiler gestartet wurde. Wenn OkHttp 4.x verwendet wird, muss die Bibliothek möglicherweise auf die neueste Version aktualisiert werden. Für Ktor werden Anfragen nur bei Verwendung des Ktor-Clients mit einem Engine angezeigt, das das Abfangen unterstützt.
Ja, Network Inspector unterstützt HTTPS-Verkehr ohne zusätzliche Konfiguration. Im Gegensatz zu Charles Proxy ist keine Installation eines Stammzertifikats erforderlich. Das Tool verwendet den Systemmechanismus von Android Profiler, um den Verkehr innerhalb der Debug-Sitzung zu dekodieren.
Network Inspector ermöglicht den Datenexport im HAR-Format (HTTP Archive). Klicken Sie auf die Schaltfläche Export in der oberen rechten Ecke des Panels. Die HAR-Datei kann in jedem HAR-Viewer geöffnet oder für weitere Analysen in Charles Proxy und Proxyman importiert werden.
Laut Google überschreiten die Zusatzkosten beim aktiven Profling 3% nicht. Bei deaktiviertem Network Inspector entstehen keine Zusatzkosten. Das Tool wird nicht für Release-Builds empfohlen, aber für Debug-Sitzungen ist der Einfluss auf modernen Geräten kaum spürbar.
Wenn der Antworttext als unlesbare Rohdaten angezeigt wird, kann dies mit gzip-Kompression oder einem binären Format (Protocol Buffers, MessagePack) zusammenhängen. Network Inspector dekodiert gzip automatisch. Verwenden Sie für benutzerdefinierte Formate den Content-Type-Hinweis in den Antwort-Headern.
Fazit
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch