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 Profiler Agent প্রক্রিয়া ব্যবহার করে সিস্টেম স্তরে নেটওয়ার্ক কল ইন্টারসেপ্ট করে, যা Android Profiler-এর সাথে ইনজেক্ট করা হয়। সঠিক কাজের জন্য অ্যাপ্লিকেশনের একটি ডিবাগ বিল্ড প্রয়োজন। টুলটি অ্যাপ্লিকেশন কোড পরিবর্তন করে না এবং মৌলিক কার্যকারিতার জন্য ডিপেন্ডেন্সি যোগ করার প্রয়োজন হয় না।
প্রোফাইলিং শুরু করার পর, 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 রেজলিউশন, TCP কানেকশন, TLS হ্যান্ডশেক, অনুরোধ প্রেরণ, প্রতিক্রিয়া গ্রহণ। মোট সময় 1–2 সেকেন্ড অতিক্রম করলে, ধাপে ভাগ কারণ নির্ধারণে সাহায্য করে। Timing বিশ্লেষণ সার্ভার-পাশ অপ্টিমাইজেশন শুরুর আগেই প্রতিবন্ধক চিহ্নিত করতে সাহায্য করে।
Network Inspector অপ্রয়োজনীয় অনুরোধ সনাক্ত করতে সাহায্য করে — উদাহরণস্বরূপ, যখন প্রতিটি স্ক্রিন ঘূর্ণনে Activity ডেটা পুনরায় লোড করে। সময়রেখায়, ধারাবাহিক অভিন্ন অনুরোধের একটি সিরিজ স্পষ্টভাবে সমস্যা নির্দেশ করে। সমাধানে ক্যাশিং, ViewModel ব্যবহার অন্তর্ভুক্ত হতে পারে।
// ডুপ্লিকেশন দূর করতে 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) এর জন্য, কিছু অনুরোধ প্রদর্শিত নাও হতে পারে যদি সেগুলো নেটিভ অংশে নির্বাহিত হয়।
গভীর নেটওয়ার্ক ট্রাফিক বিশ্লেষণের জন্য, তৃতীয় পক্ষের সমাধান রয়েছে: Charles Proxy, Proxyman, Wireshark, Facebook-এর Stetho, Chucker।
| টুল | ধরন | প্ল্যাটফর্ম | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Android Studio-তে নির্মিত | Android | হ্যাঁ | হ্যাঁ |
| Charles Proxy | প্রক্সি সার্ভার | ক্রস-প্ল্যাটফর্ম | হ্যাঁ | হ্যাঁ |
| Proxyman | প্রক্সি সার্ভার | macOS, iOS | হ্যাঁ | হ্যাঁ |
| Chucker | অ্যাপ্লিকেশনের মধ্যে ইন্সপেক্টর | Android | হ্যাঁ | না |
| Wireshark | প্যাকেট বিশ্লেষক | ক্রস-প্ল্যাটফর্ম | না | না |
সাধারণ জিজ্ঞাসা
নিশ্চিত করুন অ্যাপ্লিকেশনটি ডিবাগ কনফিগারেশন এ তৈরি এবং Android Profiler সংযুক্ত করে চালু করা হয়েছে। OkHttp 4.x ব্যবহার করলে, লাইব্রেরিটি সর্বশেষ সংস্করণে আপডেট করার প্রয়োজন হতে পারে।
হ্যাঁ, Network Inspector অতিরিক্ত কনফিগারেশন ছাড়াই HTTPS ট্রাফিক সমর্থন করে। Charles Proxy-র বিপরীতে, কোনো রুট সার্টিফিকেট ইনস্টলের প্রয়োজন নেই।
Network Inspector HAR (HTTP Archive) ফরম্যাটে ডেটা এক্সপোর্ট করার অনুমতি দেয়। প্যানেলের উপরে ডান কোণে Export বাটনে ক্লিক করুন।
Google-এর মতে, সক্রিয় প্রোফাইলিংয়ের সময় অতিরিক্ত ব্যয় 3% অতিক্রম করে না। Network Inspector নিষ্ক্রিয় থাকলে কোনো অতিরিক্ত ব্যয় নেই।
যদি প্রতিক্রিয়া বডি অপঠনযোগ্য raw ডেটা হিসাবে প্রদর্শিত হয়, এটি gzip কম্প্রেশন বা বাইনারি ফরম্যাটের কারণে হতে পারে। Network Inspector স্বয়ংক্রিয়ভাবে gzip ডিকোড করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন