Android Studio میں Network Inspector ایک بلٹ ان پروفائلنگ ٹول ہے جو موبائل ایپ کے نیٹ ورک ٹریفک کی ریئل ٹائم میں نگرانی اور تجزیہ کرنے کے لیے ڈیزائن کیا گیا ہے۔ Android Developers (2025) کی سرکاری دستاویزات کے مطابق، یہ ٹول درخواستوں کے عملدرآمد کے وقت، منتقل کردہ ڈیٹا کے حجم اور ہر کال کے HTTP اسٹیٹس کو ٹریک کرنے کی اجازت دیتا ہے۔ یہ ٹول ایپ کوڈ میں تبدیلیوں کی ضرورت نہیں رکھتا اور API Level 14 اور اس سے اوپر کے کسی بھی پروجیکٹ کے ساتھ “فوری طور پر” کام کرتا ہے۔
اہم نکات
Network Inspector Android Studio میں شامل ایک نیٹ ورک سرگرمی پروفائلنگ ٹول ہے۔ یہ ڈویلپرز کو ایپ کے ذریعے بھیجی جانے والی تمام HTTP اور HTTPS درخواستوں (ہیڈرز، درخواست اور جواب کا جسم، اسٹیٹس کوڈز اور عملدرآمد کا وقت سمیت) کو ریئل ٹائم میں دیکھنے کی اجازت دیتا ہے۔ Android Studio 3.0 سے Android Profiler پینل کے ذریعے قابل رسائی ہے۔
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 Android Profiler کے ساتھ انجیکٹ کردہ Profiler Agent میکانزم کا استعمال کرتے ہوئے سسٹم لیول پر نیٹ ورک کالز کو روکتا ہے۔ درست کام کرنے کے لیے ایپ کی ڈیبگ بلڈ ضروری ہے۔ یہ ٹول ایپ کوڈ کو تبدیل نہیں کرتا اور بنیادی فعالیت کے لیے انحصار شامل کرنے کی ضرورت نہیں رکھتا۔
پروفائلنگ شروع ہونے پر، Network Inspector ایپ کے ڈیبگ عمل سے منسلک ہو جاتا ہے اور OkHttp Client, UrlConnection یا دیگر معاون لائبریریوں سے گزرنے والی تمام HTTP کالز کو سنتا ہے۔ ہر درخواست ٹائم اسٹیمپ کے ساتھ ریکارڈ کی جاتی ہے، جو نیٹ ورک سرگرمی کی ٹائم لائن بنانے کی اجازت دیتی ہے۔ HTTPS کے لیے، ایک سسٹم پرت استعمال ہوتی ہے جو ٹرانسمیشن کے دوران انکرپشن کو برقرار رکھتی ہے لیکن Studio کے اندر ڈی کوڈ شدہ مواد دیکھنے کی اجازت دیتی ہے۔
ڈیٹا اکٹھا کرنا Android Studio Profiler Service کے ذریعے ہوتا ہے، جو میزبان پر علیحدہ عمل میں چلتا ہے۔ آلے پر ایک ہلکا پھلکا ایجنٹ چلتا ہے، جو ADB چینل کے ذریعے درخواستوں کا میٹا ڈیٹا منتقل کرتا ہے۔ یہ ایپ کی کارکردگی پر اثر کو کم سے کم کرتا ہے — Google کے مطابق اوور ہیڈ 3% سے کم ہے۔ درخواست کا ڈیٹا (جسم، ہیڈرز) صرف اس وقت منتقل ہوتا ہے جب تفصیلات فعال طور پر دیکھی جا رہی ہوں۔
// Network Inspector کے ساتھ انضمام کے لیے OkHttp کنکشن
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// Network Inspector کلائنٹ کے ذریعے تمام کالز کو خودکار طور پر روکتا ہے
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, تصاویر) کے لیے سائز اور مواد کی قسم دکھائی جاتی ہے۔
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) کے لیے، کچھ درخواستیں ظاہر نہیں ہو سکتیں اگر وہ نیٹو حصے میں عمل میں لائی جائیں۔ کچھ لائبریریاں — جیسے gRPC, WebSocket (HTTP نہیں), Apollo کے ذریعے GraphQL (ورژن 3.x سے پہلے) — اضافی انٹرسیپٹرز ترتیب دینے تک جزوی طور پر یا بالکل نہیں روکی جا سکتیں۔
نیٹ ورک ٹریفک کے گہرے تجزیے کے لیے تیسرے فریق کے حل موجود ہیں: 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 بند ہونے پر کوئی اوور ہیڈ نہیں ہے۔ یہ ٹول ریلیز بلڈز پر استعمال کرنے کی سفارش نہیں کی جاتی، لیکن ڈیبگ سیشنز میں جدید آلات پر اثر نمایاں نہیں ہوتا۔
اگر جواب کا جسم ناقابل پڑھنے والے خام ڈیٹا کے طور پر دکھائے، تو یہ gzip کمپریشن یا بائنری فارمیٹ (Protocol Buffers, MessagePack) کی وجہ سے ہو سکتا ہے۔ Network Inspector خود بخود gzip کو ڈی کوڈ کرتا ہے۔ کسٹم فارمیٹس کے لیے جواب کے ہیڈرز میں Content-Type ہنٹ استعمال کریں۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں