Kiểm tra lưu lượng truy cập mạng bằng Công cụ kiểm tra mạng

Công cụ kiểm tra mạng hiển thị hoạt động mạng theo thời gian thực trên một tiến trình, cho biết dữ liệu đã gửi và nhận. Với công cụ này, bạn có thể kiểm tra tình trạng cũng như thời điểm ứng dụng của mình chuyển dữ liệu và tối ưu hoá mã cơ bản sao cho phù hợp.

Để mở Công cụ kiểm tra mạng, hãy làm theo các bước sau:

  1. Trên thanh điều hướng trong Android Studio, chọn View > Tool Windows > App Inspection (Xem > Cửa sổ công cụ > Kiểm tra ứng dụng). Sau khi cửa sổ kiểm tra ứng dụng tự động kết nối với một quy trình ứng dụng, hãy chọn Network Inspector (Công cụ kiểm tra mạng) từ các thẻ.
    • Nếu cửa sổ kiểm tra ứng dụng không tự động kết nối với quy trình ứng dụng, bạn có thể phải chọn quy trình ứng dụng theo cách thủ công.
  2. Chọn thiết bị và quy trình ứng dụng mà bạn muốn kiểm tra trong cửa sổ App Inspection (Kiểm tra ứng dụng).

Tổng quan về Công cụ kiểm tra mạng

Ở đầu cửa sổ Công cụ kiểm tra mạng, bạn có thể thấy tiến trình của sự kiện. Nhấp và kéo để chọn một phần của tiến trình rồi kiểm tra lưu lượng truy cập.

Cửa sổ Network Inspector (Công cụ kiểm tra mạng)
Hình 1. Cửa sổ Network Inspector (Công cụ kiểm tra mạng).

Trong ngăn thông tin chi tiết, biểu đồ thời gian có thể giúp bạn xác định vị trí có khả năng đang xảy ra vấn đề về hiệu suất. Điểm bắt đầu của phần màu vàng tương ứng với byte đầu tiên của yêu cầu đang được gửi. Điểm bắt đầu của phần màu xanh dương tương ứng với byte đầu tiên của phản hồi đang được nhận. Điểm kết thúc của phần màu xanh dương tương ứng với byte cuối cùng của phản hồi đang được nhận.

Trong ngăn bên dưới tiến trình, hãy chọn một trong các thẻ sau để biết thêm thông tin chi tiết về hoạt động mạng trong phần đã chọn của tiến trình:

  • Connection View (Khung hiển thị kết nối): Liệt kê các tệp được gửi hoặc nhận trong phần đã chọn của tiến trình trên tất cả các luồng CPU của ứng dụng. Đối với mỗi yêu cầu, bạn có thể kiểm tra kích thước, loại, trạng thái và thời lượng truyền. Để sắp xếp danh sách này, hãy nhấp vào bất kỳ tiêu đề cột nào. Bạn cũng có thể thấy thông tin phân tích chi tiết về phần được chọn trong tiến trình, cho biết thời điểm gửi hoặc nhận từng tệp.
  • Thread View (Khung hiển thị luồng): Hiển thị hoạt động mạng trên từng luồng CPU của ứng dụng. Như minh hoạ trong hình 2, thông qua khung hiển thị này, bạn có thể kiểm tra các luồng chịu trách nhiệm cho từng yêu cầu mạng.

    Kiểm tra các yêu cầu mạng theo luồng ứng dụng trong thread view (khung hiển thị luồng)
    Hình 2. Kiểm tra các yêu cầu mạng theo luồng ứng dụng trong Thread View (Khung hiển thị luồng).
  • Rules View (Khung hiển thị quy tắc): Các quy tắc giúp kiểm thử cách ứng dụng của bạn hoạt động khi gặp các phản hồi có các mã trạng thái, tiêu đề và nội dung khác nhau. Khi tạo một quy tắc mới, hãy đặt tên cho quy tắc mới và thêm thông tin về nguồn gốc của phản hồi mà bạn muốn chặn trong tiểu mục Origin (Nguồn gốc). Trong tiểu mục Response (Phản hồi), bạn có thể chỉ định vị trí và cách sửa đổi phản hồi. Ví dụ: bạn có thể đặt quy tắc thực thi trên các phản hồi có mã trạng thái cụ thể cũng như sửa đổi mã trạng thái đó. Trong các tiểu mục Header rules (Quy tắc tiêu đề) và Body rules (Quy tắc nội dung), hãy tạo các quy tắc phụ để thêm hoặc sửa đổi nội dung hoặc tiêu đề phản hồi. Các quy tắc được áp dụng theo thứ tự trong danh sách. Chọn quy tắc cần bật hoặc tắt bằng cách đánh dấu vào hộp Active (Đang hoạt động) bên cạnh quy tắc đó.

    Các ngăn Rules (Quy tắc) và Rule Details (Chi tiết quy tắc) trong phần Network Inspector (Công cụ kiểm tra mạng)
    Hình 3. Các ngăn Rules (Quy tắc) và Rule Details (Chi tiết quy tắc) trong phần Network Inspector (Công cụ kiểm tra mạng).

Từ Connection View (Khung hiển thị kết nối) hoặc Thread View (Khung hiển thị luồng), hãy nhấp vào tên yêu cầu để kiểm tra thông tin chi tiết về dữ liệu đã gửi hoặc nhận. Nhấp vào các thẻ để xem tiêu đề và nội dung phản hồi, tiêu đề và nội dung yêu cầu hoặc ngăn xếp lệnh gọi.

Trong thẻ Response (Phản hồi) và Request (Yêu cầu), hãy nhấp vào đường liên kết View Parsed (Xem phần đã phân tích cú pháp) để hiển thị văn bản đã định dạng. Nhấp vào đường liên kết View Source (Xem nguồn) để hiển thị văn bản thô.

Chuyển đổi giữa văn bản thô và văn bản đã định dạng
Hình 4. Chuyển đổi giữa văn bản thô và văn bản đã định dạng bằng cách nhấp vào đường liên kết tương ứng.

Ngoài việc hiển thị các yêu cầu mạng cho HttpsURLConnection, Công cụ kiểm tra mạng cũng hỗ trợ OkHttp. Một số thư viện mạng của bên thứ ba, chẳng hạn như Retrofit, sử dụng OkHttp trong nội bộ, vì vậy, Công cụ kiểm tra mạng cho phép bạn kiểm tra hoạt động mạng của chúng. Chiến lược phát hành đĩa đơn Ứng dụng mẫu Now In Android sử dụng OkHttp cho các hoạt động mạng và là nơi phù hợp để xem hành động.

Nếu sử dụng API HttpsURLConnection, bạn chỉ thấy tiêu đề trong thẻ Request (Yêu cầu) mà bạn đưa vào mã bằng phương thức setRequestProperty như trong mẫu sau:

Kotlin

val url = URL(MY_URL_EN)
val urlConnection: HttpsURLConnection = url.openConnection() as HttpsURLConnection
...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity")

Java

URL url = new URL(MY_URL_EN);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity");

Khắc phục sự cố kết nối mạng

Nếu Công cụ kiểm tra mạng phát hiện thấy các giá trị lưu lượng truy cập nhưng không thể xác định bất kỳ yêu cầu mạng nào được hỗ trợ, thì bạn sẽ nhận được thông báo lỗi sau:

**Network Inspector Data Unavailable:** There is no information for the
  network traffic you've selected.

Hiện tại, Công cụ kiểm tra mạng chỉ hỗ trợ các thư viện HttpsURLConnectionOkHttp cho kết nối mạng. Nếu ứng dụng của bạn dùng thư viện kết nối mạng khác, thì có thể bạn sẽ không xem được hoạt động mạng của mình trong Công cụ kiểm tra mạng. Nếu bạn nhận được thông báo lỗi này nhưng ứng dụng của bạn vẫn dùng HttpsURLConnection hoặc OkHttp, hãy báo cáo lỗi hoặc tìm kiếm trong công cụ theo dõi lỗi để đưa phản hồi vào báo cáo hiện tại có liên quan đến vấn đề của bạn. Bạn cũng có thể sử dụng các tài nguyên này để yêu cầu hỗ trợ cho các thư viện khác.