Network Inspector trong Android Studio là công cụ phân tích tích hợp sẵn, được thiết kế để giám sát và phân tích lưu lượng mạng của ứng dụng di động theo thời gian thực. Theo tài liệu chính thức của Android Developers (2025), công cụ này cho phép theo dõi thời gian thực hiện yêu cầu, khối lượng dữ liệu được truyền và trạng thái HTTP của mỗi cuộc gọi. Công cụ không yêu cầu thay đổi mã ứng dụng và hoạt động “sẵn sàng” với mọi dự án có API Level 14 trở lên.
Tóm tắt chính
Network Inspector là công cụ phân tích hoạt động mạng được tích hợp trong Android Studio. Nó cho phép nhà phát triển xem theo thời gian thực tất cả các yêu cầu HTTP và HTTPS mà ứng dụng gửi đi, bao gồm tiêu đề, nội dung yêu cầu và phản hồi, mã trạng thái và thời gian thực hiện. Có thể truy cập qua bảng Android Profiler từ Android Studio 3.0.
Nhiệm vụ chính của Network Inspector là gỡ lỗi tương tác mạng giữa ứng dụng di động và máy chủ. Công cụ này được sử dụng để kiểm tra tính chính xác của dữ liệu truyền, phân tích thời gian phản hồi, tìm lỗi API và phát hiện các mẫu mạng không tối ưu — ví dụ như nhiều yêu cầu khi tải một màn hình. Network Inspector hoạt động trên mọi thiết bị có API Level 14.
Công cụ hỗ trợ tất cả các HTTP client Android chính: OkHttp (từ phiên bản 2.x), Retrofit, Ktor (KMM), UrlConnection, Apache HttpClient (cũ) và WebView. Đối với OkHttp và Retrofit cần thư viện OkHttp Profiler — nó được kết nối tự động khi sử dụng Android Studio 4.1+. Đối với Ktor cần cấu hình riêng bộ chặn.
Network Inspector chặn các cuộc gọi mạng ở cấp độ hệ thống, sử dụng cơ chế Profiler Agent được tích hợp cùng Android Profiler. Yêu cầu bản build debug của ứng dụng để hoạt động chính xác. Công cụ không thay đổi mã ứng dụng và không yêu cầu thêm phụ thuộc cho chức năng cơ bản.
Khi bắt đầu phân tích, Network Inspector kết nối với tiến trình Debug của ứng dụng và lắng nghe tất cả các cuộc gọi HTTP đi qua OkHttp Client, UrlConnection hoặc các thư viện được hỗ trợ khác. Mỗi yêu cầu được ghi lại với dấu thời gian, cho phép xây dựng dòng thời gian hoạt động mạng. Đối với HTTPS, lớp hệ thống được sử dụng, giữ mã hóa trong quá trình truyền nhưng cho phép xem nội dung đã giải mã trong Studio.
Việc thu thập dữ liệu diễn ra thông qua Profiler Service của Android Studio, chạy trong một tiến trình riêng trên máy chủ. Trên thiết bị chạy một tác nhân nhẹ, truyền siêu dữ liệu yêu cầu qua kênh ADB. Điều này giảm thiểu tác động đến hiệu suất ứng dụng — chi phí overhead dưới 3% theo Google. Dữ liệu yêu cầu (nội dung, tiêu đề) chỉ được truyền khi đang xem chi tiết.
// Kết nối OkHttp để tích hợp với Network Inspector
val client = OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BASIC
})
.build()
// Network Inspector tự động chặn tất cả các cuộc gọi qua client
client.newCall(Request.Builder()
.url("https://api.example.com/data")
.build()).execute()
Network Inspector cung cấp bộ công cụ để phân tích toàn diện lưu lượng mạng. Mỗi chức năng hướng đến giải quyết một tác vụ gỡ lỗi cụ thể — từ kiểm tra tiêu đề đến phân tích hiệu suất API.
Màn hình chính của Network Inspector hiển thị trình tự thời gian của tất cả yêu cầu dưới dạng dòng thời gian. Mỗi yêu cầu được biểu diễn bằng một thanh màu: xanh lá — phản hồi thành công (2xx), xanh dương — chuyển hướng (3xx), vàng — lỗi máy khách (4xx), đỏ — lỗi máy chủ (5xx). Độ dài thanh tương ứng với thời gian thực hiện yêu cầu từ kết nối đến khi nhận được phản hồi đầy đủ. Điều này cho phép phát hiện ngay các yêu cầu chậm hoặc bị lỗi.
| Tham số | Mô tả | Giá trị ví dụ |
|---|---|---|
| URL | Địa chỉ đầy đủ của yêu cầu | https://api.example.com/v2/users |
| Method | Phương thức HTTP của yêu cầu | POST |
| Status | Mã HTTP phản hồi | 200 OK |
| Size | Kích thước yêu cầu + phản hồi (byte) | 12.4 KB |
| Time | Thời gian thực hiện đầy đủ | 342 ms |
Khi chọn một yêu cầu cụ thể, bảng chi tiết sẽ mở ra: Headers(tất cả tiêu đề yêu cầu và phản hồi), Request Body(nội dung yêu cầu ở định dạng văn bản hoặc nhị phân), Response Body(nội dung phản hồi với hỗ trợ định dạng JSON), Cookies(cookie đã gửi và nhận), Timing(phân chia thời gian theo giai đoạn: DNS, Connection, TLS Handshake, Request, Response).
Network Inspector hỗ trợ lọc yêu cầu theo URL, phương thức HTTP, mã trạng thái và loại nội dung. Có thể loại trừ yêu cầu đến các miền nhất định để tập trung vào API cần thiết. Tìm kiếm hoạt động trên tất cả các trường yêu cầu, bao gồm nội dung và tiêu đề, thuận tiện khi gỡ lỗi một chức năng cụ thể của ứng dụng. Bộ lọc kết hợp cho phép tạo tập hợp quy tắc tự động áp dụng mỗi khi chạy phân tích.
Dòng thời gian hỗ trợ nhóm yêu cầu theo mẫu URL. Ví dụ, tất cả yêu cầu dạng /api/v2/users/* có thể thu gọn vào một nhóm. Điều này đơn giản hóa việc phân tích khi ứng dụng thực hiện hàng trăm yêu cầu trong thời gian ngắn. Chức năng so sánh các yêu cầu liền kề giúp phát hiện thay đổi trong phản hồi máy chủ khi gọi lặp lại.
Sử dụng thực tế Network Inspector bao gồm các kịch bản gỡ lỗi điển hình: kiểm tra định dạng dữ liệu, xác định endpoint chậm, phát hiện rò rỉ bộ nhớ do kết nối không đóng và phân tích bộ nhớ đệm.
Một tác vụ thường gặp là đảm bảo máy chủ trả về dữ liệu ở định dạng mong đợi. Network Inspector hiển thị nội dung phản hồi với định dạng JSON, bao gồm tô màu cú pháp. Nếu phản hồi không được phân tích ở máy khách, trình kiểm tra sẽ hiển thị ngay nguyên nhân: thiếu trường, sai kiểu dữ liệu (chuỗi thay vì số) hoặc lồng ghép thừa. Nếu máy chủ trả về lỗi, trình kiểm tra hiển thị cấu trúc lỗi với mã và thông báo. Đối với định dạng nhị phân (Protocol Buffers, hình ảnh), kích thước và content-type được hiển thị.
Tab Timing chia nhỏ việc thực hiện yêu cầu thành các giai đoạn: DNS Resolution, TCP Connection, TLS Handshake, Request Send, Response Receive. Nếu tổng thời gian vượt quá 1–2 giây, phân tích theo giai đoạn có thể xác định nguyên nhân. Ví dụ, DNS lâu cho thấy vấn đề với bộ phân giải, TLS Handshake lâu cho thấy phiên bản giao thức cũ trên máy chủ, Response lâu cho thấy mã máy chủ chậm hoặc yêu cầu không hiệu quả với dữ liệu dư thừa. Phân tích Timing giúp xác định điểm nghẽn trước khi tối ưu hóa phía máy chủ.
Network Inspector giúp phát hiện yêu cầu dư thừa — ví dụ, khi mỗi lần xoay màn hình, Activity tạo lại việc tải dữ liệu. Trên dòng thời gian, một loạt yêu cầu giống nhau liên tiếp chỉ ra rõ vấn đề. Giải pháp có thể là bộ nhớ đệm, sử dụng ViewModel với trạng thái được lưu hoặc SingleLiveEvent để tải một lần.
// Lưu trữ yêu cầu với OkHttp để loại bỏ trùng lặp
val cache = Cache(
File(context.cacheDir, "http_cache"),
cacheSize = 10L * 1024 * 1024 // 10 MB
)
val cachedClient = OkHttpClient.Builder()
.cache(cache)
.addNetworkInterceptor(CacheInterceptor())
.build()
Mặc dù có nhiều tính năng, Network Inspector có một số hạn chế cần lưu ý. Đối với một số kịch bản — như chặn HTTPS với chứng chỉ tự ký hoặc phân tích lưu lượng thư viện bên thứ ba — có thể cần các công cụ thay thế.
Network Inspector chỉ hoạt động với ứng dụng Android và không hỗ trợ iOS. Đối với Kotlin Multiplatform (KMM), một số yêu cầu có thể không hiển thị nếu chúng được thực hiện trong phần native. Một số thư viện — như gRPC, WebSocket (không phải HTTP), GraphQL qua Apollo (trước phiên bản 3.x) — có thể bị chặn một phần hoặc hoàn toàn không cho đến khi cấu hình thêm bộ chặn.
Để phân tích sâu hơn lưu lượng mạng, có các giải pháp bên thứ ba: Charles Proxy (máy chủ proxy đầy đủ với chặn HTTPS), Proxyman (giải pháp thay thế cho macOS), Wireshark (phân tích ở cấp độ gói tin), Stetho by Facebook (tích hợp với Chrome DevTools), Chucker (thư viện kiểm tra yêu cầu trong ứng dụng). Mỗi công cụ có lĩnh vực riêng: Charles và Proxyman không thể thiếu khi gỡ lỗi tương tác với máy chủ ở giai đoạn đầu phát triển, còn Chucker dùng để thu thập thông tin trong bản build thử nghiệm.
| Công cụ | Loại | Nền tảng | HTTPS | HAR |
|---|---|---|---|---|
| Network Inspector | Tích hợp trong Android Studio | Android | Có | Có |
| Charles Proxy | Máy chủ proxy | Đa nền tảng | Có | Có |
| Proxyman | Máy chủ proxy | macOS, iOS | Có | Có |
| Chucker | Trình kiểm tra trong ứng dụng | Android | Có | Không |
| Wireshark | Trình phân tích gói tin | Đa nền tảng | Không | Không |
Câu hỏi thường gặp
Hãy đảm bảo ứng dụng được build ở cấu hình Debug và chạy với Android Profiler đã kết nối. Nếu sử dụng OkHttp 4.x, có thể cần cập nhật thư viện lên phiên bản mới nhất. Đối với Ktor, yêu cầu chỉ hiển thị khi sử dụng Ktor client với Engine hỗ trợ chặn.
Có, Network Inspector hỗ trợ lưu lượng HTTPS mà không cần cấu hình thêm. Không giống Charles Proxy, không cần cài đặt chứng chỉ gốc. Công cụ sử dụng cơ chế hệ thống của Android Profiler để giải mã lưu lượng trong phiên gỡ lỗi.
Network Inspector cho phép xuất dữ liệu ở định dạng HAR (HTTP Archive). Nhấn nút Export ở góc trên bên phải bảng. Tệp HAR có thể mở trong bất kỳ trình xem HAR nào hoặc nhập vào Charles Proxy và Proxyman để phân tích thêm.
Theo Google, chi phí overhead không vượt quá 3% khi đang phân tích. Khi Network Inspector tắt, không có chi phí overhead. Không nên sử dụng công cụ này trên bản build phát hành, nhưng đối với phiên Debug, ảnh hưởng không đáng kể trên các thiết bị hiện đại.
Nếu nội dung phản hồi hiển thị dưới dạng dữ liệu thô không đọc được, điều này có thể do nén gzip hoặc định dạng nhị phân (Protocol Buffers, MessagePack). Network Inspector tự động giải mã gzip. Đối với định dạng tùy chỉnh, hãy sử dụng Content-Type hint trong tiêu đề phản hồi.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm