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으로 읽어오는 구조이며, 이 과정은 보안과 시스템 구조상 필수적인 절차다.
'Unity' 카테고리의 다른 글
| AR 트래킹 원리 정리 – ARCore, ARKit, IMU, 6DOF (0) | 2026.05.12 |
|---|---|
| Unity 함수 호출 주기 & Update 정리 (0) | 2026.05.12 |
| Unity DOTS 정리 (0) | 2026.05.09 |
| Unity 메모리 구조 : 왜 C# 과 C++로 나뉘었을까? (0) | 2026.05.09 |
| 유니티 스프라이트 크기, PPU, 카메라 개념 정리 (0) | 2026.04.26 |