Network Inspector в Android Studio — это встроенный инструмент профилирования, предназначенный для мониторинга и анализа сетевого трафика мобильного приложения в реальном времени. По данным официальной документации Android Developers (2025), инструмент позволяет отслеживать время выполнения запросов, объём переданных данных и HTTP-статус каждого вызова. Инструмент не требует изменений в коде приложения и работает «из коробки» с любым проектом на API Level 14 и выше.
Главное
Network Inspector — это инструмент профилирования сетевой активности, встроенный в Android Studio. Он позволяет разработчикам в реальном времени просматривать все HTTP- и HTTPS-запросы, отправляемые приложением, включая заголовки, тело запроса и ответа, статус-коды и длительность выполнения. Доступен через панель Android Profiler начиная с Android Studio 3.0.
Основная задача Network Inspector — отладка сетевого взаимодействия мобильного приложения с сервером. Инструмент используется для проверки корректности передаваемых данных, анализа времени отклика, поиска ошибок API, а также для обнаружения неоптимальных сетевых паттернов — например, множественных запросов при загрузке одного экрана. Network Inspector работает на любом устройстве с API Level 14.
Инструмент поддерживает все основные HTTP-клиенты Android: OkHttp (начиная с версии 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (устаревший) и WebView. Для OkHttp и Retrofit требуется библиотека OkHttp Profiler — она подключается автоматически при использовании Android Studio 4.1+. Для Ktor необходима отдельная настройка перехватчика.
Network Inspector перехватывает сетевые вызовы на уровне системы, используя механизм Profiler Agent, внедряемый вместе с Android Profiler. Для корректной работы требуется debug-сборка приложения. Инструмент не изменяет код приложения и не требует добавления зависимостей для базового функционала.
При запуске профилирования Network Inspector подключается к Debug-процессу приложения и слушает все HTTP-вызовы, проходящие через OkHttp Client, UrlConnection или другие поддерживаемые библиотеки. Каждый запрос фиксируется с меткой времени, что позволяет построить временную шкалу сетевой активности. Для HTTPS используется системная прослойка, что сохраняет шифрование при передаче, но позволяет просматривать декодированное содержимое внутри Studio.
Сбор данных происходит через Profiler Service Android Studio, который работает в отдельном процессе хоста. На устройстве работает лёгкий агент, передающий метаданные запросов по ADB-каналу. Это минимизирует влияние на производительность приложения — накладные расходы составляют менее 3% по данным Google. Сами данные запросов (тело, заголовки) передаются только при активном просмотре деталей.
// Подключение 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 предоставляет набор инструментов для всестороннего анализа сетевого трафика. Каждая функция направлена на решение конкретной задачи отладки — от проверки заголовков до анализа производительности API.
Основной экран Network Inspector отображает хронологию всех запросов в виде временной шкалы. Каждый запрос представлен цветной полосой: зелёный — успешный ответ (2xx), синий — перенаправление (3xx), жёлтый — клиентская ошибка (4xx), красный — серверная ошибка (5xx). Длина полосы соответствует времени выполнения запроса от соединения до получения полного ответа. Это позволяет мгновенно выявить медленные или упавшие с ошибкой запросы.
| Параметр | Описание | Пример значения |
|---|---|---|
| URL | Полный адрес запроса | https://api.example.com/v2/users |
| Method | HTTP-метод запроса | POST |
| Status | HTTP-код ответа | 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, включая подсветку синтаксиса. Если ответ не парсится на клиенте, в инспекторе сразу видно причину: отсутствие поля, неверный тип данных (строка вместо числа) или лишняя вложенность. Если сервер возвращает ошибку, инспектор показывает структуру ошибки с кодом и сообщением. Для бинарных форматов (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 для однократной загрузки.
// Кэширование запросов с 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 имеет ряд ограничений, которые важно учитывать. Для некоторых сценариев — таких как перехват 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 — для сбора информации в test-сборках.
| Инструмент | Тип | Платформа | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Встроенный в Android Studio | Android | Да | Да |
| Charles Proxy | Прокси-сервер | Кроссплатформенный | Да | Да |
| Proxyman | Прокси-сервер | macOS, iOS | Да | Да |
| Chucker | In-app инспектор | Android | Да | Нет |
| Wireshark | Пакетный анализатор | Кроссплатформенный | Нет | Нет |
Часто задаваемые вопросы
Убедитесь, что приложение собрано в Debug-конфигурации и запущено с подключённым Android Profiler. Если используется OkHttp 4.x, может потребоваться обновить библиотеку до последней версии. Для Ktor запросы отображаются только при использовании Ktor-клиента с Engine, поддерживающим перехват.
Да, Network Inspector поддерживает HTTPS-трафик без дополнительной настройки. В отличие от Charles Proxy, не требуется установка корневого сертификата. Инструмент использует системный механизм Android Profiler для декодирования трафика внутри отладочной сессии.
Network Inspector позволяет экспортировать данные в формате HAR (HTTP Archive). Нажмите кнопку Export в правом верхнем углу панели. Файл HAR можно открыть в любом HAR-вьювере или импортировать в Charles Proxy и Proxyman для дальнейшего анализа.
По данным Google, накладные расходы не превышают 3% при активном профилировании. При отключённом Network Inspector накладные расходы отсутствуют. Инструмент не рекомендуется использовать на релизных сборках, но для Debug-сессий влияние незаметно на современных устройствах.
Если тело ответа отображается как нечитаемые raw-данные, это может быть связано с gzip-сжатием или бинарным форматом (Protocol Buffers, MessagePack). Network Inspector автоматически декодирует gzip. Для кастомных форматов используйте Content-Type hint в заголовках ответа.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также