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.
Алат подржава све главне Android HTTP клијенте: 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-а за декодирање саобраћаја унутар debug сесије.
Network Inspector омогућава извоз података у HAR (HTTP Archive) формату. Кликните на дугме Export у горњем десном углу панела. HAR датотека се може отворити у било ком HAR прегледачу или увезти у Charles Proxy и Proxyman за даљу анализу.
Према Google подацима, додатно оптерећење не прелази 3% при активном профилисању. Када је Network Inspector искључен, додатног оптерећења нема. Алат се не препоручује за употребу на release верзијама, али у Debug сесијама утицај је неприметан на савременим уређајима.
Ако се тело одговора приказује као нечитљиви сирови подаци, то може бити повезано са gzip компресијом или бинарним форматом (Protocol Buffers, MessagePack). Network Inspector аутоматски декодира gzip. За прилагођене формате користите Content-Type назнаку у заглављима одговора.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође