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 پیکربندی جداگانه interceptors لازم است.
Network Inspector فراخوانیهای شبکه را در سطح سیستم با استفاده از مکانیزم Profiler Agent که همراه با Android Profiler تزریق میشود، ضبط میکند. برای عملکرد صحیح، بیلد debug برنامه مورد نیاز است. این ابزار کد برنامه را تغییر نمیدهد و برای عملکرد پایه نیازی به افزودن وابستگیها ندارد.
هنگام شروع پروفایلسازی، Network Inspector به فرآیند Debug برنامه متصل میشود و به تمام فراخوانیهای HTTP عبوری از OkHttp Client، UrlConnection یا سایر کتابخانههای پشتیبانیشده گوش میدهد. هر درخواست با یک برچسب زمانی ثبت میشود که امکان ساخت خط زمانی فعالیت شبکه را فراهم میکند. برای HTTPS از لایه میانی سیستمی استفاده میشود که رمزگذاری را در حین انتقال حفظ میکند اما امکان مشاهده محتوای رمزگشاییشده در داخل Studio را فراهم میکند.
جمعآوری دادهها از طریق Profiler Service Android Studio انجام میشود که در یک فرآیند مجزا روی میزبان اجرا میشود. روی دستگاه، یک عامل سبک اجرا میشود که ابردادههای درخواست را از طریق کانال ADB ارسال میکند. این کار تأثیر بر عملکرد برنامه را به حداقل میرساند — سربار طبق دادههای Google کمتر از 3٪ است. خود دادههای درخواست (بدنه، هدرها) فقط هنگام مشاهده فعال جزئیات ارسال میشوند.
// اتصال 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. اگر زمان کل از ۱–۲ ثانیه بیشتر باشد، بر اساس تقسیمبندی مراحل میتوان علت را تعیین کرد. به عنوان مثال، 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) — ممکن است به صورت جزئی یا اصلاً بدون پیکربندی interceptors اضافی ضبط نشوند.
برای تحلیل عمیقتر ترافیک شبکه، راهحلهای شخص ثالث وجود دارند: Charles Proxy (پروکسی سرور کامل با ضبط HTTPS)، Proxyman (معادل برای macOS)، Wireshark (تحلیل در سطح بسته)، Stetho by Facebook (ادغام با Chrome DevTools)، Chucker (کتابخانه برای بازرسی درخواستها درون برنامه). هر ابزار جایگاه خود را دارد: Charles و Proxyman در اشکالزدایی تعامل با سرور در مراحل اولیه توسعه ضروری هستند و Chucker — برای جمعآوری اطلاعات در بیلدهای آزمایشی.
| ابزار | نوع | پلتفرم | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | تعبیهشده در Android Studio | Android | بله | بله |
| Charles Proxy | سرور پروکسی | چندپلتفرمی | بله | بله |
| Proxyman | سرور پروکسی | macOS، iOS | بله | بله |
| Chucker | بازرس درونبرنامهای | 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 خاموش است، سرباری وجود ندارد. این ابزار برای استفاده در بیلدهای release توصیه نمیشود، اما در جلسات Debug تأثیر در دستگاههای مدرن قابل توجه نیست.
اگر بدنه پاسخ به صورت داده خام غیرقابل خواندن نمایش داده میشود، این ممکن است به دلیل فشردهسازی gzip یا قالب باینری (Protocol Buffers، MessagePack) باشد. Network Inspector به طور خودکار gzip را رمزگشایی میکند. برای قالبهای سفارشی از راهنمای Content-Type در هدرهای پاسخ استفاده کنید.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید