adb 실행하는 법 자꾸 까먹어서 기록해둠

 

 

1. ADB란 무엇인가?

ADB (Android Debug Bridge)
PC와 안드로이드 디바이스 사이를 연결해주는 디버깅 통신 도구다.

좀 더 정확히 말하면:

ADB는 PC에서 실행되는 클라이언트와, 안드로이드 디바이스에서 실행되는 데몬(adbd) 사이의 통신을 통해 앱 설치, 로그 조회, 파일 전송, 쉘 명령 실행 등을 가능하게 하는 브리지 역할을 한다.


2. 왜 ADB를 사용해야 하는가?

안드로이드 앱은 디바이스 내부에서 실행된다.
문제는:

  • 앱에서 발생하는 로그는 디바이스 내부 시스템(log buffer)에 저장됨
  • PC에서는 기본적으로 이 로그에 접근할 수 없음

👉 그래서 필요한 게 ADB

ADB를 사용하면:

  • 디바이스 내부 로그(logcat)를 PC로 스트리밍
  • 실시간 디버깅 가능
  • 크래시 원인 추적 가능

3. 전체 동작 구조

ADB는 다음 구조로 동작한다:

[ PC (adb client) ]
          ↓
[ adb server (PC 백그라운드) ]
          ↓ USB / TCP 연결
[ adbd (디바이스 내부 데몬) ]
          ↓
[ Android System Log Buffer ]
 

핵심 포인트:

  • adb client: 우리가 CLI에서 입력하는 adb 명령
  • adb server: PC에서 연결 관리 (자동 실행됨)
  • adbd: 디바이스 내부에서 명령을 받아 실행

* 데몬(daemon)은 사용자 눈에는 보이지 않지만, 시스템에서 항상 백그라운드로 실행되며 요청이 들어오면 작업을 처리하는 프로그램이다


4. 디바이스 연결 방식

ADB는 두 가지 방식으로 디바이스와 연결된다:

1) USB 연결 (기본)

  • 가장 일반적인 방식
  • 초기 설정 및 디버깅에 주로 사용

2) TCP/IP (Wi-Fi 연결)

  • 네트워크 기반 연결
  • Android 11 이상부터는 adb pair를 통한 공식 Wi-Fi 페어링 지원
adb pair <ip>:<port>
adb connect <ip>:<port>
 

물리적인 USB 연결 없이도 동일한 디버깅 환경을 구성할 수 있다.


5. 왜 ‘USB 디버깅’을 켜야 하는가?

기본적으로 안드로이드는 보안상 이유로 외부에서 접근을 막는다.

👉 USB 디버깅을 켜면:

  • adbd가 외부(PC)의 adb 요청을 수락
  • 인증된 PC만 디바이스에 접근 가능

즉,

USB 디버깅은 “디바이스 내부 디버깅 인터페이스를 외부에 열어주는 설정”이다.


6. 왜 PC에서 디바이스 인증을 해야 하는가?

처음 연결 시 뜨는 메시지:

“이 컴퓨터를 신뢰하시겠습니까?”

이건 보안 절차다.

  • PC의 공개키를 디바이스에 등록
  • 이후 해당 PC만 adb 접근 허용

👉 이유:

  • 악성 PC가 무단으로 디바이스 제어하는 것 방지

7. adb devices 명령의 의미

 
adb devices
 

이 명령은:

  • 현재 연결된 디바이스 목록 조회
  • adb 서버 ↔ 디바이스 연결 상태 확인

출력 상태 의미:

  • device → 정상 연결
  • unauthorized → 사용자 승인 필요
  • offline → 연결 문제

8. logcat이란 무엇인가?

안드로이드에는 시스템 로그 저장소(log buffer)가 있다.

여기에는:

  • 앱 로그 (Log.d, Log.e 등)
  • 시스템 로그
  • 크래시 정보

👉 이 로그를 읽는 도구가 logcat

 
adb logcat
 

즉,

logcat은 디바이스 내부 로그 시스템을 외부에서 조회하는 표준 인터페이스다.


9. 왜 Unity 로그는 따로 필터링하는가?

Unity는 로그를 출력할 때 "Unity" 태그(tag)를 사용한다.

그래서:

 
adb logcat -s Unity
 

를 사용하면:

  • Unity 관련 로그만 필터링
  • 불필요한 시스템 로그 제거

👉 이유:

  • 안드로이드 로그는 매우 많아서 그대로 보면 분석이 어려움

10. 전체 과정이 필요한 이유 정리

USB 디버깅 활성화 디바이스 내부 디버깅 인터페이스 개방
PC 인증 보안 (허용된 PC만 접근 가능)
adb devices 연결 상태 확인
adb logcat 디바이스 내부 로그 조회
Unity 필터링 필요한 로그만 추출

10. 결론

ADB는 단순한 도구가 아니라:

“PC에서 디바이스 내부 상태를 관찰하고 제어하기 위한 공식 디버깅 통신 계층”

이며, 로그 확인 과정은 단순히 번거로운 절차가 아니라:

  • 보안
  • 시스템 구조
  • 디버깅 효율성

을 모두 고려한 설계다.


✍️ 요약

안드로이드 앱 로그는 디바이스 내부에 저장되기 때문에, ADB를 통해 PC와 연결하여 logcat으로 읽어오는 구조이며, 이 과정은 보안과 시스템 구조상 필수적인 절차다.

+ Recent posts