Network Inspector로 네트워크 트래픽 검사

Network Inspector는 타임라인에 실시간 네트워크 활동을 표시하여 송수신된 데이터를 보여줍니다. Network Inspector를 사용하면 앱에서 데이터를 전송하는 방법과 시기를 검토하고 기본 코드를 적절하게 최적화할 수 있습니다.

Network Inspector를 열려면 다음 단계를 따르세요.

  1. Android 스튜디오 탐색 메뉴에서 View > Tool Windows > App Inspection을 선택합니다. App Inspection 창이 앱 프로세스에 자동으로 연결되면 탭에서 Network Inspector를 선택합니다.
    • App Inspection 창이 앱 프로세스를 자동으로 연결하지 않으면 앱 프로세스를 수동으로 선택해야 할 수 있습니다.
  2. App Inspection 창에서 검사할 기기와 앱 프로세스를 선택합니다.

Network Inspector 개요

Network Inspector 창 상단에 이벤트 타임라인이 표시됩니다. 타임라인에서 일부를 클릭하고 드래그하여 트래픽을 검사할 수 있습니다.

Network Inspector 창
그림 1. Network Inspector 창

세부정보 창에서 타이밍 그래프를 통해 성능 문제가 발생할 수 있는 위치를 파악할 수 있습니다. 노란색 섹션의 시작 부분은 전송 중인 요청의 첫 바이트에 해당합니다. 파란색 섹션의 시작 부분은 수신 중인 응답의 첫 바이트에 해당합니다. 파란색 섹션의 끝 부분은 수신 중인 응답의 마지막 바이트에 해당합니다.

타임라인 아래의 창에서 다음 탭 중 하나를 선택하면 타임라인의 선택된 부분 동안의 네트워크 활동을 자세히 볼 수 있습니다.

  • Connection View: 앱의 모든 CPU 스레드에 걸쳐 타임라인의 선택된 부분 동안 전송되거나 수신된 파일이 나열됩니다. 각 요청의 크기, 유형, 상태 및 전송 기간을 검사할 수 있습니다. 이 목록을 정렬하려면 열 헤더를 클릭합니다. 각 파일이 전송되거나 수신된 시기를 표시하는 등 타임라인의 선택된 부분에 관한 세부정보도 확인할 수 있습니다.
  • Thread View: 앱의 각 CPU 스레드에 네트워크 활동이 표시됩니다. 그림 2에 표시된 것처럼, 이 뷰를 사용하면 각 네트워크 요청을 담당하는 스레드를 검사할 수 있습니다.

    Thread View의 앱 스레드별로 네트워크 요청 검사
    그림 2. Thread View의 앱 스레드별 네트워크 요청 검사
  • 규칙 보기: 규칙은 응답이 발생할 때 앱이 어떻게 동작하는지 다양한 상태 코드, 헤더, 본문을 사용하여 테스트하는 데 도움이 됩니다. 새 규칙을 만들 때는 새 규칙의 이름을 지정하고 가로채려는 응답의 출처에 관한 정보를 Origin 하위 섹션에 포함해야 합니다. Response 하위 섹션에서 응답을 수정하는 위치와 방법을 지정할 수 있습니다. 예를 들어 특정 상태 코드가 포함된 응답에서 실행되도록 규칙을 설정하고 상태 코드를 수정할 수 있습니다. Header rulesBody rules 하위 섹션에서는 응답 헤더 또는 본문을 추가하거나 수정하는 하위 규칙을 만듭니다. 규칙은 나열된 순서대로 적용됩니다. 규칙 옆의 Active 체크박스를 선택하여 사용 설정 또는 사용 중지할 규칙을 선택합니다.

    Network Inspector Rules 및 Rule Details 창
    그림 3. Network Inspector RulesRule Details

Connection View 또는 Thread View에서 요청 이름을 클릭하면 전송되거나 수신된 데이터에 관한 자세한 정보를 검사할 수 있습니다. 응답 헤더와 본문, 요청 헤더와 본문, 또는 호출 스택을 보려면 탭을 클릭하세요.

ResponseRequest 탭에서 View Parsed 링크를 클릭하면 서식이 지정된 텍스트가 표시되고 View Source 링크를 클릭하면 원시 텍스트가 표시됩니다.

원시 텍스트와 서식이 지정된 텍스트 간 전환
그림 4. 해당하는 링크를 클릭하여 원시 텍스트와 서식이 지정된 텍스트 간에 전환

Network Inspector는 HttpsURLConnection의 네트워크 요청을 표시하는 것 외에 OkHttp도 지원합니다. Retrofit과 같은 일부 서드 파티 네트워크 라이브러리는 내부적으로 OkHttp를 사용하므로 Network Inspector를 통해 네트워크 활동을 검사할 수 있습니다. 이 Now In Android 샘플 앱 네트워크 작업에 OkHttp를 사용하므로 있습니다.

HttpsURLConnection API를 사용하는 경우 아래 샘플과 같이 setRequestProperty 메서드를 사용하여 코드에 포함한 경우에만 Request 탭에 헤더가 표시됩니다.

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")

자바

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

네트워크 연결 문제 해결

Network Inspector에서 트래픽 값을 감지하지만 지원되는 네트워크 요청을 식별할 수 없는 경우 다음과 같은 오류 메시지가 표시됩니다.

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

현재 Network Inspector는 네트워크 연결에 HttpsURLConnectionOkHttp 라이브러리만 지원합니다. 앱에서 다른 네트워크 연결 라이브러리를 사용하는 경우 Network Inspector에 네트워크 활동이 표시되지 않을 수도 있습니다. 이 오류 메시지를 수신했지만 앱에서 HttpsURLConnection 또는 OkHttp를 사용하는 경우 버그를 신고하거나 Issue Tracker를 검색하여 문제와 관련된 기존 신고에 의견을 포함하세요. 이 리소스를 사용하여 추가 라이브러리에 관한 지원을 요청할 수도 있습니다.