Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

네트워크 프로파일러를 사용하여 네트워크 트래픽 검사

네트워크 프로파일러는 타임라인에 실시간 네트워크 활동을 표시하여 송수신된 데이터 및 현재 연결 수를 보여줍니다. 이를 통해 앱에서 데이터를 전송하는 방법과 시기를 검토하고 기반 코드를 적절하게 최적화할 수 있습니다.

네트워크 프로파일러를 열려면 다음 단계를 따르세요.

  1. View > Tool Windows > Profiler를 클릭합니다(툴바에서 Profile 을 클릭해도 됩니다).
  2. Android 프로파일러 툴바에서 프로파일링할 기기 및 앱 프로세스를 선택합니다. USB를 통해 기기를 연결했는데 목록에 표시되지 않으면 USB 디버깅을 사용 설정했는지 확인하세요.
  3. NETWORK 타임라인의 아무 곳이나 클릭하여 네트워크 프로파일러를 엽니다.

타임라인의 일부를 선택하거나 전송된 네트워크 요청 및 수신된 응답의 목록을 검사하거나 선택된 파일에 관한 자세한 내용을 보려면 고급 프로파일링을 사용 설정해야 합니다.

앱의 네트워크 활동을 프로파일링해야 하는 이유

앱에서 네트워크에 요청을 할 때 기기에서 전력 소모가 많은 모바일 및 WiFi 무선 기능을 사용하여 패킷을 송수신해야 합니다. 무선 기능에서는 데이터를 전송하기 위해 전력을 사용할 뿐만 아니라 기능을 켜고 절전모드 해제 상태를 유지하기 위해 추가 전력을 사용합니다.

네트워크 프로파일러를 사용하면 네트워크 활동이 자주 짧게 급증하는 부분, 즉 앱에서 서로 가까운 많은 짧은 요청을 처리하기 위해 무선 기능을 자주 켜거나 장기간 절전모드 해제 상태를 유지해야 하는 부분을 찾을 수 있습니다. 이 패턴은 네트워크 요청을 일괄 처리하여 데이터를 송수신하기 위해 무선 기능을 켜야 하는 횟수를 줄임으로써 배터리 성능을 개선하기 위해 앱을 최적화할 수 있음을 나타냅니다. 또한 무선 기능을 저전력 모드로 전환하여 일괄 처리되는 요청 사이의 공백 기간 동안 배터리를 절약할 수 있습니다.

앱의 네트워크 활동을 최적화하는 기법에 관한 자세한 내용은 네트워크 배터리 소모 줄이기를 읽어보세요.

네트워크 프로파일러 개요

창의 상단에 이벤트 타임라인이 표시됩니다. 타임라인에서 트래픽을 검사할 부분을 클릭하고 드래그하여 1 선택할 수 있습니다.

그림 1. 네트워크 프로파일러 창

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

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

    그림 2. Thread View의 앱 스레드별로 네트워크 요청 검사

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

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

그림 3. 해당 링크를 클릭하여 원시 텍스트(왼쪽)와 서식이 지정된 텍스트(오른쪽) 간 전환

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

네트워크 연결 문제해결

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

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

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