ADB(Android Debug Bridge)는 컴퓨터를 통해 안드로이드 기기와 통신하여 디버깅, 기기 제어, 앱 설치 등의 작업을 수행하는 강력한 명령줄 도구이다. 안드로이드 개발자뿐만 아니라 모바일 보안 연구, 앱 분석 등 다양한 분야에서 필수적으로 사용되는 도구이다.
ADB는 Android SDK Platform Tools에 포함되어 있으며, 독립형 패키지로도 다운로드할 수 있다.
Windows:
adb --version
으로 설치 확인Ubuntu/Linux:
sudo apt install adb
macOS:
brew install android-platform-tools
ADB를 사용하기 전에 안드로이드 기기에서 USB 디버깅을 활성화해야 한다.
# 연결된 디바이스 목록 확인
adb devices
# 연결된 디바이스의 상세 정보 확인
adb devices -l
# USB 연결된 디바이스만 대상으로 명령 실행
adb -d [명령어]
# 에뮬레이터만 대상으로 명령 실행
adb -e [명령어]
# 특정 기기를 대상으로 명령 실행 (여러 기기 연결 시)
adb -s [디바이스_시리얼_번호] [명령어]
여러 기기가 연결되어 있을 때는 -s
옵션을 사용하여 특정 기기를 지정해야 한다.
# ADB 서버 시작
adb start-server
# ADB 서버 종료
adb kill-server
# 기기가 연결될 때까지 대기
adb wait-for-device [명령어]
ADB 서버에 문제가 발생했을 때 kill-server
후 다른 명령어를 실행하면 서버가 자동으로 재시작된다.
# Android 기기의 쉘에 접속
adb shell
# 쉘 명령어를 직접 실행
adb shell [명령어]
Logcat은 안드로이드 시스템에서 발생하는 로그 메시지를 실시간으로 확인할 수 있는 도구이다.
태그 | 이름 | 설명 |
---|---|---|
V | Verbose | 가장 낮은 우선순위, 상세한 정보 |
D | Debug | 디버깅 정보 |
I | Info | 일반적인 정보 |
W | Warning | 경고 메시지 |
E | Error | 오류 메시지 |
F | Fatal | 치명적 오류 |
S | Silent | 가장 높은 우선순위, 출력 없음 |
# 기본 logcat 실행
adb logcat
# 특정 버퍼의 로그 확인
adb logcat -b [buffer] # main, system, radio, events, crash
# 기록된 로그 삭제 후 종료
adb logcat -c
# 로그를 화면에 덤프하고 종료
adb logcat -d
# 로그를 파일로 저장
adb logcat -f [filename]
# 버퍼 크기 확인
adb logcat -g
# 특정 태그와 우선순위로 필터링
adb logcat -s [TagName]:[Priority]
# 출력 형식 변경
adb logcat -v [format] # brief, process, tag, raw, time, threadtime, long
# 디버그 레벨 이상의 로그만 확인
adb logcat *:D
# 특정 앱의 로그만 필터링
adb logcat | grep "패키지명"
# ActivityManager의 Info 레벨 이상 로그만 출력
adb logcat -s ActivityManager:I
# 여러 태그 동시 필터링
adb logcat ActivityManager:I art:I *:S
# APK 설치
adb install [APK파일경로]
# 기존 앱이 있어도 재설치
adb install -r [APK파일경로]
# 테스트 APK 설치 허용
adb install -t [APK파일경로]
# 설치된 패키지 목록 확인
adb shell pm list packages
# 특정 패키지 검색
adb shell pm list packages -f | grep [패키지명]
# 앱 제거
adb uninstall [패키지명]
# 특정 액티비티로 앱 실행
adb shell am start -n [패키지명]/[액티비티명]
# 앱 강제 종료
adb shell am force-stop [패키지명]
# PC에서 안드로이드 기기로 파일 전송
adb push [로컬파일경로] [원격경로]
# 안드로이드 기기에서 PC로 파일 전송
adb pull [원격경로] [로컬경로]
# 진행률 표시
adb push -p [로컬파일] [원격경로]
adb pull -p [원격파일] [로컬경로]
예시:
# SD카드에 파일 전송
adb push file.txt /sdcard/
# SD카드에서 파일 가져오기
adb pull /sdcard/file.txt
ADB를 이용해 PC와 안드로이드 기기 간 포트 포워딩을 설정할 수 있다.
# 포트 포워딩 설정
adb forward [로컬포트] [원격포트]
# TCP 포트 포워딩
adb forward tcp:7777 tcp:8888
# 포워딩 목록 확인
adb forward --list
# 특정 포워딩 제거
adb forward --remove [로컬포트]
# 모든 포워딩 제거
adb forward --remove-all
# APK 디컴파일
apktool d [APK파일명]
# 특정 폴더로 디컴파일
apktool d [APK파일명] -o [출력폴더명]
디컴파일 후 AndroidManifest.xml에서 다음과 같이 디버깅을 활성화할 수 있다:
<application android:debuggable="true" ... >
# 리빌딩
apktool b [수정된폴더] -o [새APK파일명]
# 서명 키 생성 (최초 한 번만)
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048
# APK 서명 (SHA256 권장)
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore [키스토어파일] [APK파일] [키별칭]
# 녹스와 ADB 연결
adb connect 127.0.0.1:62001
# 연결 확인
adb devices
# ADB 쉘 접속
adb shell
# 시스템 정보 확인
adb shell getprop
# 특정 속성 확인
adb shell getprop ro.build.version.release
# 메모리 사용량 확인
adb shell dumpsys meminfo
# 배터리 정보 확인
adb shell dumpsys battery
# 스크린샷 촬영
adb shell screencap /sdcard/screenshot.png
adb pull /sdcard/screenshot.png
# 화면 녹화 (Android 4.4+)
adb shell screenrecord /sdcard/demo.mp4
# WiFi로 ADB 연결 (USB 연결 상태에서)
adb tcpip 5555
adb connect [기기IP]:5555
# USB 모드로 복귀
adb usb