Network Inspector — какво е, принцип на работа и мониторинг на мрежови заявки

Автор: IT Sectr Публикувано: 2026-05-07 Време за четене: 8 мин

Network Inspector в Android Studio е вграден инструмент за профилиране, предназначен за мониторинг и анализ на мрежовия трафик на мобилното приложение в реално време. Според официалната документация на Android Developers (2025), инструментът позволява проследяване на времето за изпълнение на заявките, обема на предадените данни и HTTP статуса на всяко повикване. Инструментът не изисква промени в кода на приложението и работи „извън кутията” с всеки проект на API Level 14 и по-висок.

Основни точки

  • Network Inspector — е компонент на Android Profiler за мониторинг на мрежови заявки с възможност за преглед на хедъри и тяло на отговор
  • Прихващане на трафик става автоматично за всички HTTP повиквания от приложението, включително OkHttp, Retrofit, Ktor и WebView
  • Времева линия показва последователността на заявките с посочване на продължителност, размер и статус на всяко повикване
  • Детайлен преглед на всяка заявка включва хедъри, тяло на заявката и отговора, cookies и време за изпълнение по етапи
  • Експорт на данни в HAR формат позволява предаване на мрежовото взаимодействие на колеги или запазване за последващ анализ

Какво е Network Inspector?

Network Inspector е инструмент за профилиране на мрежова активност, вграден в Android Studio. Той позволява на разработчиците да преглеждат в реално време всички HTTP и HTTPS заявки, изпращани от приложението, включително хедъри, тяло на заявката и отговора, статус кодове и време за изпълнение. Достъпен е чрез панела Android Profiler от Android Studio 3.0.

Предназначение и обхват на приложение

Основната задача на Network Inspector е дебъгване на мрежовото взаимодействие на мобилното приложение със сървъра. Инструментът се използва за проверка на коректността на предаваните данни, анализ на времето за отговор, търсене на API грешки, както и за откриване на неоптимални мрежови модели — например множество заявки при зареждане на един екран. Network Inspector работи на всяко устройство с API Level 14.

Съвместимост и библиотеки

Инструментът поддържа всички основни Android HTTP клиенти: OkHttp (от версия 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (остарял) и WebView. За OkHttp и Retrofit е необходима библиотеката OkHttp Profiler — добавя се автоматично при използване на Android Studio 4.1+. За Ktor е необходима отделна конфигурация на прихващач.

Как работи Network Inspector

Network Inspector прихваща мрежови повиквания на системно ниво, използвайки механизма Profiler Agent, който се инжектира заедно с Android Profiler. За коректна работа е необходима debug версия на приложението. Инструментът не променя кода на приложението и не изисква добавяне на зависимости за основната функционалност.

Механизъм за прихващане на трафик

При стартиране на профилиране, Network Inspector се свързва с Debug процеса на приложението и слуша всички HTTP повиквания, преминаващи през OkHttp Client, UrlConnection или други поддържани библиотеки. Всяка заявка се записва с времеви печат, което позволява изграждане на времева линия на мрежовата активност. За HTTPS се използва системен междинен слой, който запазва криптирането по време на предаване, но позволява преглед на декодираното съдържание в Studio.

Архитектура на събиране на данни

Събирането на данни става чрез Profiler Service на Android Studio, която работи в отделен процес на хоста. На устройството работи лек агент, който предава метаданните на заявките по ADB канал. Това минимизира влиянието върху производителността на приложението — допълнителното натоварване е под 3% според данни на Google. Самите данни на заявките (тяло, хедъри) се предават само при активно преглеждане на детайлите.

kotlin
// Свързване на OkHttp за интеграция с Network Inspector
val client = OkHttpClient.Builder()
    .addInterceptor(HttpLoggingInterceptor().apply {
        level = HttpLoggingInterceptor.Level.BASIC
    })
    .build()

// Network Inspector автоматично прихваща всички повиквания чрез client
client.newCall(Request.Builder()
    .url("https://api.example.com/data")
    .build()).execute()

Основни възможности на Network Inspector

Network Inspector предоставя набор от инструменти за цялостен анализ на мрежовия трафик. Всяка функция е насочена към решаване на конкретна задача за дебъгване — от проверка на хедъри до анализ на производителност на API.

Времева линия на заявките

Основният екран на Network Inspector показва хронологията на всички заявки под формата на времева линия. Всяка заявка е представена с цветна лента: зелено — успешен отговор (2xx), синьо — пренасочване (3xx), жълто — клиентска грешка (4xx), червено — сървърна грешка (5xx). Дължината на лентата съответства на времето за изпълнение на заявката от свързване до получаване на пълния отговор. Това позволява незабавно откриване на бавни или заявки с грешка.

ПараметърОписаниеПримерна стойност
URLПълен адрес на заявкатаhttps://api.example.com/v2/users
MethodHTTP метод на заявкатаPOST
StatusHTTP код на отговора200 OK
SizeРазмер на заявката + отговора в байтове12.4 KB
TimeОбщо време за изпълнение342 ms

Детайлен преглед на заявка

При избор на конкретна заявка се отваря панел с детайли: Headers (всички хедъри на заявката и отговора), Request Body (тяло на заявката в текстов или двоичен формат), Response Body (тяло на отговора с възможност за форматиране на JSON), Cookies (изпратени и получени), Timing (разделение на времето по фази: DNS, Connection, TLS Handshake, Request, Response).

Филтриране и търсене

Network Inspector поддържа филтриране на заявки по URL, HTTP метод, статус код и тип на съдържанието. Могат да се изключат заявки към определени домейни, за да се фокусирате само върху необходимото API. Търсенето работи във всички полета на заявката, включително тяло и хедъри, което е удобно при дебъгване на конкретна функция на приложението. Комбинираните филтри позволяват създаване на набор от правила, които се прилагат автоматично при всяко стартиране на профилиране.

Групиране и сравняване на заявки

Времевата линия поддържа групиране на заявки по URL модели. Например, всички заявки от вида /api/v2/users/* могат да бъдат свити в една група. Това опростява анализа, когато приложението прави стотици заявки за кратко време. Функцията за сравняване на съседни заявки помага за откриване на промени в отговорите на сървъра при повторни повиквания.

Дебъгване на мрежови заявки с Network Inspector

Практическото използване на Network Inspector обхваща типични сценарии за дебъгване: проверка на формата на данните, откриване на бавни крайни точки, намиране на изтичане на памет поради незатворени връзки и анализ на кеширане.

Проверка на структурата на JSON отговор

Честа задача — да се уверите, че сървърът връща данни в очаквания формат. Network Inspector показва тялото на отговора с JSON форматиране, включително подчертаване на синтаксиса. Ако отговорът не се парсва от клиента, в инспектора веднага се вижда причината: липсващо поле, грешен тип данни (низ вместо число) или прекомерно влагане. Ако сървърът връща грешка, инспекторът показва структурата на грешката с код и съобщение. За двоични формати (Protocol Buffers, изображения) се показва размер и content-type.

Анализ на времето за изпълнение

Разделът Timing разделя изпълнението на заявката на фази: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Ако общото време надвишава 1–2 секунди, на базата на фазовото разделение може да се определи причината. Например, дълъг DNS показва проблеми с резолвера, дълъг TLS Handshake — остаряла версия на протокола на сървъра, дълъг Response — бавен сървърен код или неефективна заявка с излишни данни. Анализът Timing помага да се идентифицират тесните места още преди започване на оптимизацията на сървърната част.

Търсене на дублиращи се заявки

Network Inspector помага за откриване на излишни заявки — например, когато при всяко завъртане на екрана Activity презарежда данни. На времевата линия поредица от идентични заявки една след друга ясно показва проблема. Решението може да бъде кеширане, използване на ViewModel със запазване на състоянието или SingleLiveEvent за еднократно зареждане.

kotlin
// Кеширане на заявки с OkHttp за премахване на дублиране
val cache = Cache(
    File(context.cacheDir, "http_cache"),
    cacheSize = 10L * 1024 * 1024 // 10 MB
)

val cachedClient = OkHttpClient.Builder()
    .cache(cache)
    .addNetworkInterceptor(CacheInterceptor())
    .build()

Ограничения на Network Inspector и алтернативи

Въпреки широките възможности, Network Inspector има редица ограничения, които е важно да се вземат предвид. За някои сценарии — като прихващане на HTTPS със самоподписани сертификати или анализ на трафик от библиотеки на трети страни — може да са необходими алтернативни инструменти.

Ограничения на платформата и библиотеките

Network Inspector работи само с Android приложения и не поддържа iOS. За Kotlin Multiplatform (KMM) някои заявки може да не се показват, ако се изпълняват в native частта. Някои библиотеки — например gRPC, WebSocket (не HTTP), GraphQL чрез Apollo (до версия 3.x) — могат да бъдат прихващани частично или изобщо да не бъдат прихващани без конфигуриране на допълнителни прихващачи.

Алтернативни инструменти

За по-задълбочен анализ на мрежовия трафик съществуват решения на трети страни: Charles Proxy (пълнофункционален прокси сървър с прихващане на HTTPS), Proxyman (аналог за macOS), Wireshark (анализ на пакетно ниво), Stetho by Facebook (интеграция с Chrome DevTools), Chucker (библиотека за инспекция на заявки вътре в приложението). Всеки инструмент има своя ниша: Charles и Proxyman са незаменими при дебъгване на взаимодействието със сървъра в ранните етапи на разработка, а Chucker — за събиране на информация в тестови версии.

ИнструментТипПлатформаHTTPSHAR
Network InspectorВграден в Android StudioAndroidДаДа
Charles ProxyПрокси сървърКрос-платформенДаДа
ProxymanПрокси сървърmacOS, iOSДаДа
ChuckerIn-app инспекторAndroidДаНе
WiresharkПакетен анализаторКрос-платформенНеНе

Често задавани въпроси

Защо Network Inspector не показва заявки?

Уверете се, че приложението е компилирано в Debug конфигурация и е пуснато със свързан Android Profiler. Ако се използва OkHttp 4.x, може да е необходимо да актуализирате библиотеката до най-новата версия. За Ktor заявките се показват само при използване на Ktor клиент с Engine, поддържащ прихващане.

Може ли да се преглежда HTTPS трафик?

Да, Network Inspector поддържа HTTPS трафик без допълнителна конфигурация. За разлика от Charles Proxy, не е необходима инсталация на корнев сертификат. Инструментът използва системния механизъм на Android Profiler за декодиране на трафика в рамките на debug сесия.

Как да експортирам данни от Network Inspector?

Network Inspector позволява експорт на данни в HAR (HTTP Archive) формат. Натиснете бутона Export в горния десен ъгъл на панела. HAR файлът може да бъде отворен във всеки HAR прегледач или импортиран в Charles Proxy и Proxyman за по-нататъшен анализ.

Влияе ли Network Inspector върху производителността на приложението?

Според данните на Google, допълнителното натоварване не надвишава 3% при активно профилиране. Когато Network Inspector е изключен, няма допълнително натоварване. Инструментът не се препоръчва за използване в release версии, но в Debug сесии влиянието е незабележимо на съвременните устройства.

Какво да направя, ако отговорът се показва като сурови данни?

Ако тялото на отговора се показва като нечетими сурови данни, това може да е свързано с gzip компресия или двоичен формат (Protocol Buffers, MessagePack). Network Inspector автоматично декодира gzip. За персонализирани формати използвайте указанието Content-Type в хедърите на отговора.

Резюме

  • Network Inspector — е вграден инструмент в Android Studio за мониторинг и дебъгване на мрежови заявки в реално време без промяна на кода на приложението
  • Автоматично прихващане на всички HTTP повиквания чрез OkHttp, Retrofit, Ktor и UrlConnection — инструментът работи „извън кутията” в Debug версия
  • Времева линия с цветово кодиране на статус кодовете позволява незабавно откриване на бавни, грешни и повтарящи се заявки
  • Детайлен преглед на всяка заявка включва хедъри, тяло (с JSON форматиране), cookies и фазово разделение на времето за изпълнение
  • Фазово разделение Timing (DNS, TCP, TLS, Request, Response) помага за точно определяне на причината за бавни заявки
  • Експорт в HAR позволява запазване на сесии за предаване на колеги или анализ във външни инструменти като Charles Proxy
  • За по-сложни сценарии използвайте Charles Proxy или Proxyman — те поддържат прихващане на трафик на ниво операционна система и работа с iOS

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също