Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

애증의 개발일지

[Android] Network Inspector로 쉽게 네트워크 디버깅하기 본문

Android

[Android] Network Inspector로 쉽게 네트워크 디버깅하기

Dabing 2024. 7. 7. 19:20

Network Inspector란?

Network Inspector는 네트워크 통신 관측부터 네트워크 위변조까지 가능한 안드로이드 스튜디오에 내장된 네트워크 디버깅 툴입니다. 이번 포스트에선 Network Inspector에 대해 다뤄보고자 합니다.


사용법

  • 안드로이드 스튜디오 Bumblebee 버전부터 사용 가능(Connection View, Thread View만 지원)
    • Network Inspector 등장 이전에는 Network Profiler 지원. Network Inspector로 Migration 된 이유는 범블비 업데이트 포스트 참고 
    • Rules를 통한 네트워크 위변조 기능의 경우 안드로이드 스튜디오 Flamingo Canary 1부터 지원
  • View > Tool Windows > App Inspection
  • inspect하고 싶은 디바이스 선택후 사용
  • (2024. 07. 07 기준) HttpsURLConnection과 OkHttp 라이브러리에서만 해당 기능 사용 가능
    • 단, 라이브러리 내부에서 HttpsURLConnection과 OkHttp를 사용하는 네트워킹 라이브러리의 경우 Network Inspector로 트래킹 가능

기능

그래프 패널

  • Network Inspector 상단 창에는 위 사진과 같은 그래프 패널이 있는데, 해당 패널에서는 네트워크 요청/응답이 오고간 이벤트 타임라인을 확인할 수 있습니다.
    • 주황색 그래프 : 네트워크 요청 관련 그래프
    • 파란색 그래프 : 네트워크 응답 관련 그래프
    • 그래프 X축의 경우 타임라인을 의미하고, 그래프 Y축의 경우 네트워크 통신에 사용된 바이트를 의미합니다.
  • 그래프를 드래그하면 해당 타임라인에 요청/응답이 이뤄진 네트워크 통신 기록을 Connection View, Thread View에서 확인할 수 있습니다.

그래프 드래그 앤 드롭

Connection View

  • 네트워크 요청 및 응답 기록에 대한 전반적인 정보를 확인할 수 있습니다. 확인할 수 있는 항목은 아래와 같습니다.
    • Name : 네트워크 요청 이름
      • 공식문서에서도 정확한 네이밍 규칙을 따로 설명해놓지는 않았지만, 대략 API 마지막 path + 그 뒤에 나열되는 모든 값이 네이밍이 되는 것으로 보입니다.
    • Size : 응답값 크기(Response size)
    • Type : 응답으로 날아온 데이터 타입(json, jpeg, html 등)
    • Status : HTTP response status code
    • Time : 네트워크 요청부터 응답까지 걸린 시간
    • Timeline : 언제 해당 네트워크 통신이 이뤄졌는지
  • 각각의 항목을 클릭하면 해당 항목에대해 네트워크 통신 기록을 오름차순, 내림차순 정렬 할 수 있습니다.
  • 네트워크 기록을 더블 클릭하면 상세 화면이 뜨고 더 자세한 정보를 확인할 수 있습니다.

Thread  View

  • 어떤 스레드에서, 어느 타이밍에 네트워크 통신이 이뤄졌는지 확인할 수 있습니다. 확인할 수 있는 항목은 아래와 같습니다.
    • Initiating thread : 네트워크 통신이 이뤄진 스레드
    • Timeline : 언제 해당 네트워크 통신이 이뤄졌는지
  • 각각의 항목을 클릭하면 해당 항목에대해 네트워크 통신 기록을 오름차순, 내림차순 정렬 할 수 있습니다.
  • 타임라인에 있는 네트워크 기록을 더블 클릭하면 상세 화면이 뜨고 더 자세한 정보를 확인할 수 있습니다.

상세 화면

  • Connection View, Thread View에서 네트워크 기록을 더블 클릭하면 나타나는 상세 화면으로, 해당 네트워크 기록에 대한 보다 자세한 정보를 확인할 수 있습니다.
Overview

  • 응답값, 요청 이름, HTTP 메소드, HTTP 상태 코드, 응답값 데이터 타입, 응답값 크기, 호출된 스레드, API URL, 네트워크 요청/응답 타이밍에 대한 대략적인 정보를 확인할 수 있습니다. 
Response

  • Response로 날아온 응답값의 Header 정보 및 Body 값을 확인할 수 있습니다.
Request
  • Request로 날아간 요청값의 Header 정보 및 Body 값을 확인할 수 있습니다.
Call Stack

  • 해당 네트워크 요청이 이뤄진 함수 Call Stack을 확인할 수 있습니다.

Rules

  • 네트워크 통신에 대한 요청값, 응답값, 상태값 등을 위변조 할 수 있는 Rule을 생성할 수 있습니다.
    • 상단패널
      • + 버튼, - 버튼을 통해 새로운 Rule 생성 또는 삭제를 할 수 있습니다.
      • 체크박스 체크, 해제를 통해 해당 Rule을 적용 할지 말지 결정할 수 있습니다.
      • 화살표 버튼을 통해 Rule 목록을 위아래로 탐색할 수 있습니다.
      • 문서 모양의 버튼을 클릭해서 Rule을 Clone할 수 있습니다.
Rule 상세 화면

  • Origin 패널에서 위변조를 진행하고 싶은 Origin API를 설정합니다.
    • 인풋 필드에 따로 값을 지정하지않으면 Any 값으로 설정되어, 조건에 부합하는 모든 API에 해당 Rule을 적용합니다.
  • Response 패널에서 변조할 HTTP 상태 코드와, 변조 결과로 적용될 HTTP 상태 코드를 지정할 수 있습니다.
  • Header rules 패널에서 헤더 양식을 위변조하거나, 새로운 헤더를 추가할 수 있습니다.
    • 기존에 날아오는 헤더 양식을 감지할때, 오른쪽 체크박스(.* Regex)를 체크하면 정규 표현식을 사용 가능합니다.

Header Rule

  • Body rules 패널에서 body값을 위변조 할 수 있습니다.
    • Replace entire body 체크박스를 체크하면, 전체 body 값을 변조할 수 있습니다.
    • Header rules와 마찬가지로, 기존에 날아오는 헤더 양식을 감지할때, 오른쪽아래 체크박스(.* Regex)를 체크하면 정규 표현식을 사용 가능합니다.

Body Rule


Network Inspector를 사용했을 때 장단점

장점

  • 다른 서드파티 네트워크 디버깅 툴(ex. Charles Proxy)과는 달리, 안드로이드 스튜디오에 내장되어 있어서 별도의 셋팅 없이 간편하게 바로 사용할 수 있습니다.(+ GUI 툴이라 사용이 간편합니다.)
  • 별도의 컴파일 없이 런타임으로 Rules 적용이 가능해, 실시간으로 네트워크 위변조가 가능합니다.
  • 응답값 위변조를 통해 목서버처럼 활용할 수 있습니다.
  • 네트워크 위변조 기능인 Rules 이외에도, 유용한 네트워크 통신 관측 기능인 Connection View(네트워크 통신 상태 파악), Thread View(통신 타이밍, 통신 스레드 체크)를 지원합니다.

단점

  • 네트워크 스로틀링, 네트워크 차단 등의 복잡하고 세부적인 네트워크 조작기능은 현재(2024. 07. 07 기준)까지는 Network Inspector에서 지원하고 있지 않습니다.
  • Network Inspector는 현재(2024. 07. 07 기준) HttpsURLConnection과 OkHttp만을 지원해서 다른 네트워크 커넥션 라이브러리를 사용하는 경우 기능 지원이 안됩니다.
    • 물론 라이브러리 내부에서 HttpsURLConnection과 OkHttp를 사용하는 네트워킹 라이브러리의 경우 Network Inspector로 트래킹이 가능합니다.(ex. Glide)

 

기존 개발환경에서 안드로이드의 경우 네트워크 위변조를 할때 서드파티 툴 의존도가 높았는데, Flamingo부터 Network Inspector에 Rules 기능이 추가되면서 서드파티 툴 의존도가 조금 낮아졌습니다. 아직은 지원하지 않는 기능들도 일부 존재하긴 하지만, 이는 업데이트를 통해 점차 나아질 것이라 봅니다. Network Insepctor에 대해 보다 더 자세히 알고 싶으시다면, 공식문서를 보는 것을 추천드립니다. 포스팅 읽어주셔서 감사합니다 :)


참고자료

https://developer.android.com/studio/debug/network-profiler

 

Inspect network traffic with the Network Inspector  |  Android Studio  |  Android Developers

Learn how to examine how and when your app transfers data and optimize the underlying code appropriately with the Network Inspector.

developer.android.com