ADB(Android Debug Bridge)는 개발용 PC와 안드로이드 기기를 연결하여 통신할 수 있게 해주는 다목적 명령줄 도구입니다. ADB를 통해 앱 설치 및 디버깅, 파일 전송, 기기 로그 확인 등 개발에 필수적인 다양한 작업을 효율적으로 수행할 수 있습니다. 그중에서도 특히 강력한 기능은 ADB Shell로, 기기의 기반이 되는 리눅스 명령줄 환경에 직접 접근하여 파일 시스템 관리, 프로세스 제어, 시스템 설정 변경 등 더욱 심도 있는 작업을 가능하게 합니다.
안드로이드 개발자에게 ADB와 ADB Shell의 능숙한 활용은 선택이 아닌 필수입니다. 개발, 테스트, 디버깅 전 과정의 효율을 극대화하는 핵심 도구이기 때문입니다. 이 글에서는 ADB 설치 과정부터 기본 및 고급 명령어 활용법까지 총정리하여 여러분이 ADB의 모든 잠재력을 활용할 수 있도록 돕겠습니다.
ADB 사용 준비: 설치 및 기기 설정
ADB를 사용하려면 먼저 PC와 안드로이드 기기 양쪽에서 준비가 필요합니다. 다음 단계를 따라 설정을 완료하세요.
1단계: Android 기기에서 USB 디버깅 활성화
가장 먼저 해야 할 중요한 단계입니다. ADB가 기기와 통신하려면 'USB 디버깅' 옵션이 활성화되어 있어야 합니다.
- 기기의 설정 > 휴대전화 정보로 이동합니다.
- 빌드 번호 항목을 "개발자가 되셨습니다."라는 메시지가 나타날 때까지 7번 연속으로 누릅니다.
- 설정 메뉴로 돌아가면 개발자 옵션이라는 새로운 항목이 보입니다. (기기에 따라 '시스템' 메뉴 안에 있을 수 있습니다.)
- 개발자 옵션에 들어가 USB 디버깅을 활성화합니다.
2단계: PC에 ADB 설치하기
ADB는 Android SDK Platform-Tools 패키지에 포함되어 있습니다. Android Studio 전체를 설치할 필요는 없습니다.
- 공식 Android SDK Platform-Tools 다운로드 페이지로 이동합니다.
- 사용 중인 운영체제(Windows, macOS, Linux)에 맞는 패키지를 다운로드합니다.
- 다운로드한 ZIP 파일의 압축을 기억하기 쉬운 위치(예: Windows의 경우
C:\platform-tools
)에 해제합니다. - 어떤 터미널에서든 ADB 명령어를 바로 사용할 수 있도록, 압축 해제한 폴더의 경로를 시스템 환경 변수 'PATH'에 추가합니다.
3단계: 설치 및 연결 확인
모든 준비가 끝나면 ADB가 제대로 작동하는지 확인합니다.
- USB 케이블로 안드로이드 기기와 PC를 연결합니다. 기기 화면에 'USB 디버깅을 허용하시겠습니까?'라는 창이 뜨면 허용을 선택합니다.
- PC에서 명령 프롬프트(Windows) 또는 터미널(macOS/Linux)을 엽니다.
adb devices
명령어를 입력하고 Enter 키를 누릅니다.- 연결된 기기의 시리얼 번호 옆에 'device'라고 표시되면 성공적으로 연결된 것입니다. 'unauthorized'라고 표시된다면 기기 화면의 디버깅 허용 창을 다시 확인해주세요.
개발자라면 꼭 알아야 할 필수 ADB 명령어
ADB 설정이 완료되었다면 이제 강력한 명령어들을 사용할 차례입니다. 일상적인 개발 작업에서 가장 자주 사용되는 핵심 명령어들을 소개합니다.
연결된 기기 목록 보기
기기가 제대로 연결되었는지 확인할 때 가장 먼저 사용하는 명령어입니다.
adb devices
애플리케이션 설치
APK 파일을 기기에 설치합니다.
adb install <APK_파일_경로>
애플리케이션 삭제
패키지 이름(예: com.example.myapp
)을 이용해 기기에서 앱을 삭제합니다.
adb uninstall <패키지_이름>
기기로 파일 전송
PC의 파일을 기기로 복사합니다.
adb push <로컬_경로> <기기_경로>
기기에서 파일 가져오기
기기의 파일을 PC로 복사합니다.
adb pull <기기_경로> <로컬_경로>
기기 쉘 접속
기기 내부의 리눅스 명령줄 환경(쉘)으로 접속합니다.
adb shell
기기 로그 확인
디버깅의 핵심인 기기 로그(Logcat)를 실시간으로 출력합니다.
adb logcat
기기 재부팅
연결된 기기를 다시 시작합니다. adb reboot bootloader
(부트로더 모드)나 adb reboot recovery
(리커버리 모드)로도 재부팅할 수 있습니다.
adb reboot
ADB Shell 기본 명령어
adb shell <명령어>
형식으로 PC에서 바로 쉘 명령을 실행하거나, adb shell
로 대화형 쉘에 진입하여 명령어를 사용할 수 있습니다. 다음은 유용한 기본 쉘 명령어입니다.
파일 및 디렉토리 목록 보기
리눅스의 ls
명령어와 동일하게 기기의 파일 시스템을 탐색합니다.
adb shell ls /sdcard/
실행 중인 프로세스 목록 보기
현재 기기에서 실행 중인 모든 프로세스를 표시합니다.
adb shell ps
시스템 서비스 정보 덤프
시스템 서비스에 대한 방대한 정보를 출력합니다. adb shell dumpsys activity
처럼 특정 서비스를 지정하여 원하는 정보를 얻을 수 있습니다.
adb shell dumpsys
앱 액티비티 실행
액티비티 매니저(am)를 사용하여 특정 앱의 컴포넌트를 실행합니다.
adb shell am start -n <패키지명>/<액티비티명>
시스템 속성 확인
안드로이드 버전, 화면 밀도 등 기기의 시스템 속성을 표시합니다.
adb shell getprop
시스템 속성 설정
기기의 시스템 속성을 변경합니다. 대부분의 경우 루팅(root) 권한이 필요합니다.
adb shell setprop <키> <값>
텍스트 입력 시뮬레이션
현재 포커스된 입력창에 원하는 텍스트를 입력합니다.
adb shell input text <입력할_텍스트>
ADB를 활용한 디버깅
ADB는 앱의 버그를 찾고 해결하는 데 가장 강력한 도구입니다. 디버깅 작업 흐름에 유용한 핵심적인 방법들을 알아봅시다.
실시간 로그 모니터링
adb logcat
은 디버깅의 가장 친한 친구입니다. adb logcat YourAppTag:D *:S
와 같이 태그로 필터링하여 내 앱에서 발생하는 로그만 깔끔하게 확인할 수 있습니다.
종합 버그 리포트 생성
adb bugreport
는 기기 로그, 스택 트레이스 등 문제 분석에 필요한 모든 정보를 담은 종합적인 보고서를 생성해줍니다. 복잡한 비정상 종료(Crash) 현상을 분석할 때 매우 유용합니다.
Java 디버거 연결 확인
adb jdwp
는 디버깅이 가능한 모든 Java 프로세스의 JDWP(Java Debug Wire Protocol) ID를 보여줍니다. Android Studio와 같은 디버거를 직접 연결할 때 사용됩니다.
앱 강제 종료
adb shell am force-stop <패키지명>
명령어로 앱을 즉시 종료시킬 수 있습니다. 앱이 완전히 새로 시작될 때의 동작을 테스트하는 데 유용합니다.
ADB Shell을 이용한 성능 디버깅
ADB Shell은 메모리 누수나 과도한 CPU 사용량 같은 성능 병목 현상을 진단하는 데 효과적인 유틸리티를 제공합니다.
앱 메모리 사용량 확인
adb shell dumpsys meminfo <패키지명>
명령어를 사용하면 특정 앱의 메모리 사용 현황을 상세하게 파악하여 메모리 누수를 추적할 수 있습니다.
CPU 사용량 모니터링
adb shell top
은 CPU를 많이 사용하는 프로세스 순으로 실시간 목록을 보여줍니다. 이를 통해 어떤 작업이 성능을 저하하는지 쉽게 식별할 수 있습니다.
시스템 호출 추적
adb shell strace -p <프로세스_ID>
는 특정 프로세스가 어떤 시스템 자원을 요청하는지(시스템 콜) 추적하는 고급 기법입니다. 앱의 매우 낮은 수준의 동작을 분석할 때 사용됩니다.
ADB와 ADB Shell의 고급 활용법
기본기를 익혔다면, 이제 개발 워크플로우를 한 차원 높여줄 고급 활용법들을 살펴볼 시간입니다.
포트 포워딩
PC의 특정 포트로 들어오는 요청을 기기의 특정 포트로 전달합니다. 기기 내 웹뷰나 네트워크 서비스를 PC의 브라우저에서 직접 디버깅할 때 매우 유용합니다.
adb forward <PC_포트> <기기_포트>
앱 권한으로 명령어 실행
run-as
를 사용하면 디버깅 가능한 앱의 권한으로 쉘 명령어를 실행할 수 있습니다. 루팅 없이도 앱의 내부 데이터 폴더(/data/data/<패키지명>
)에 접근할 수 있게 해줍니다.
adb shell run-as <패키지명> <명령어>
기기 화면 녹화
기기 화면을 동영상으로 녹화합니다. 버그 재현 과정을 공유하거나, 앱의 동작 및 애니메이션을 분석하는 데 효과적입니다.
adb shell screenrecord /sdcard/demo.mp4
앱 안정성 스트레스 테스트
Monkey는 무작위 터치, 제스처 등 예측 불가능한 사용자 이벤트를 대량으로 발생시켜 앱을 테스트하는 도구입니다. 이를 통해 앱의 안정성을 검증하고 예상치 못한 오류를 발견할 수 있습니다.
adb shell monkey -p <패키지명> -v 1000
기기 데이터 백업 및 복원
기기의 데이터와 앱을 통째로 PC에 백업 파일로 저장합니다. 나중에 adb restore
명령어로 복원할 수 있습니다.
adb backup -apk -all -f backup.ab
이 글을 통해 ADB와 ADB Shell의 다양한 기능과 활용법을 알아보았습니다. 이 도구들을 능숙하게 사용한다면 안드로이드 앱 개발, 테스트, 디버깅의 모든 과정을 훨씬 효율적으로 만들어 줄 것입니다. 이 글이 여러분의 개발 여정에 큰 도움이 되었기를 바랍니다.