ADB(Android Debug Bridge)는 Android SDK의 일부인 다기능 명령줄 유틸리티입니다. 컴퓨터가 USB 케이블 또는 Wi-Fi를 통해 Android 기기와 직접 상호 작용할 수 있게 해줍니다. ADB를 사용하면 애플리케이션 설치 및 제거, 파일 복사, 셸 명령 실행, 시스템 로그 보기, 스크린샷 및 화면 녹화, 설정 관리, 자동화된 테스트 실행까지 가능합니다. 이 도구는 기기를 완전히 제어하려는 개발자, 테스터 및 애호가에게 필수적입니다.
핵심 포인트
Android Debug Bridge(ADB)는 클라이언트(컴퓨터에서 실행), 서버(컴퓨터의 백그라운드 프로세스), 데몬 adbd(Android 기기 자체에서 실행)의 세 가지 구성 요소로 이루어진 클라이언트-서버 애플리케이션입니다. 개발자나 엔지니어가 스마트폰을 PC에 연결하면 ADB는 명령어, 파일 및 데이터를 전송할 수 있는 안정적인 통신 채널을 생성합니다.
ADB의 주요 사용 사례에는 스토어에 APK를 게시하지 않고 실제 기기에서 애플리케이션 디버깅, 오류 분석을 위한 로그 추출, 테스트 자동화, 데이터 백업, 리커버리 이미지 플래싱, 루트 액세스 획득이 포함됩니다. 코드를 작성하지 않더라도 ADB는 애플리케이션에서 스크린샷 추출, 휴대폰 화면에서 비디오 가이드 녹화, 펌웨어 업데이트 실패 후 기기 복구에 유용할 수 있습니다.
ADB 지원은 Android 2.1(API 7)부터 모든 공식 Android 빌드에 내장되어 있습니다. 개발자 옵션에서 USB 디버깅 옵션이 활성화되어 있어야 합니다. Android 4.2부터 처음 연결 시 기기에서 확인을 요청합니다: RSA 키로 특정 컴퓨터의 디버깅을 허용해야 합니다.
Windows의 경우 — Google Developers 공식 웹사이트에서 Platform Tools를 다운로드하고, 아카이브를 C:\adb 폴더에 압축 해제한 후 이 경로를 PATH 환경 변수에 추가합니다. 터미널을 다시 시작하면 adb 명령어를 전역적으로 사용할 수 있습니다.
macOS의 경우 — 가장 쉬운 방법은 Homebrew 패키지 관리자를 통해 ADB를 설치하는 것입니다: brew install android-platform-tools를 실행합니다. 모든 종속성이 자동으로 해결됩니다.
Linux의 경우 — Debian/Ubuntu 기반 배포판에서: sudo apt install adb. 설치 후 사용자를 plugdev 그룹에 추가합니다: sudo usermod -aG plugdev $USER. ADB가 USB 기기에 액세스할 수 있도록 다시 로그인합니다.
adb version 명령어로 설치를 확인합니다. 출력에 Android Debug Bridge 버전 번호가 표시되면 도구를 사용할 준비가 된 것입니다.
첫 연결은 항상 adb devices 명령어로 시작합니다. 연결된 기기 목록과 상태를 표시합니다. 기기가 unauthorized로 표시되면 화면 잠금을 해제하고 휴대폰에서 디버깅을 확인하세요.
adb devices
List of devices attached
emulator-5554 device
0123456789ABCD device
앱 설치 — 가장 빈번한 작업 중 하나입니다. APK 파일 경로만 지정하면 됩니다:
adb install C:\apps\myapp.apk
앱이 이미 설치되어 있지만 업데이트된 버전으로 교체해야 하는 경우 -r(바꾸기) 플래그를 추가합니다:
adb install -r C:\apps\myapp-v2.apk
앱 제거는 패키지 이름으로 수행합니다:
adb uninstall com.example.myapp
파일 복사 — adb pull은 기기에서 컴퓨터로 파일을 가져오고, adb push는 기기에 파일을 업로드합니다:
adb pull /sdcard/DCIM/screenshot.png .
adb push myfile.txt /sdcard/Documents/
대화형 셸 — adb shell 명령어는 기기의 명령 셸을 엽니다. 그 안에서 표준 Linux 명령어(ls, ps, top, dumpsys, pm, am 등)를 실행할 수 있습니다.
adb shell
tissot_sprout:/ $ ls -la /sdcard/
tissot_sprout:/ $ ps | grep com.android.chrome
액티비티 시작 — ADB를 통해 아이콘을 수동으로 찾지 않고도 모든 앱이나 화면을 열 수 있습니다:
adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main
Logcat은 Android 로깅 시스템으로, 애플리케이션, 시스템 서비스 및 커널에서 메시지를 수집합니다. 디버깅에 필수적인 도구입니다: 로그를 통해 앱이 충돌한 이유, 예외를 발생시킨 메서드, 특정 작업에 걸리는 시간을 파악할 수 있습니다.
필터 없는 간단한 시작 — adb logcat. 로그 스트림은 무한합니다. 중지하려면 Ctrl+C를 누르세요. 태그별로 메시지를 필터링하려면 -s 매개변수를 사용합니다:
adb logcat -s MainActivity:V
로깅 중요도 수준(가장 상세한 순에서 심각한 순): V(Verbose), D(Debug), I(Info), W(Warning), E(Error), F(Fatal). 태그와 수준의 조합으로 필요한 메시지만 강조할 수 있습니다.
테스트 전에 누적된 버퍼를 지우려면:
adb logcat -c
로그를 파일에 저장하려면:
adb logcat -d > app_logs.txt
-d(덤프) 플래그는 현재 버퍼를 출력하고 터미널을 차단하지 않고 종료됩니다. 이는 자동화 스크립트에 편리합니다.
스크린샷은 adb shell screencap 명령어로 찍습니다. 결과는 파일에 저장되고 나중에 adb pull로 가져옵니다:
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png
대체 및 파이핑을 사용하여 두 작업을 한 줄로 결합할 수 있습니다. 실제로 문서화 및 테스트 보고서 작성 속도를 높여줍니다.
화면 녹화는 Android 4.4+(API 19)에서 사용 가능합니다. 기본 녹화 시간은 180초, 비트레이트는 4Mbps입니다. 주요 명령어:
adb shell screenrecord /sdcard/demo.mp4
녹화를 중지하려면 Ctrl+C를 누르세요. 비디오 해상도는 기기 화면 해상도와 일치하지만 1080p를 초과하지 않습니다. 비트레이트를 변경하려면 --bit-rate를 지정합니다:
adb shell screenrecord --bit-rate 8000000 /sdcard/demo.mp4
진단 명령어: adb shell dumpsys는 모든 시스템 서비스의 상태를 출력합니다. 배터리 정보만 얻으려면:
adb shell dumpsys battery
설치된 패키지 목록은 Package Manager로 얻을 수 있습니다:
adb shell pm list packages
앱 설정 재설정(설정에서 데이터 지우기와 동일):
adb shell pm clear com.example.myapp
Wi-Fi 디버깅은 기기를 USB에 계속 연결할 필요를 없앱니다. 컴퓨터와 기기가 같은 네트워크에 있는지 확인합니다. 먼저 adb tcpip 5555를 실행하고 USB를 분리한 다음 IP로 연결합니다:
adb tcpip 5555
adb connect 192.168.1.100:5555
기기 IP 주소를 모르는 경우 케이블을 분리하기 전에 adb shell ip addr show wlan0으로 확인합니다.
데이터 백업은 앱 또는 전체 시스템을 루트 없이 수행할 수 있습니다:
adb backup -apk -shared -all -system -f mybackup.ab
백업에서 복원:
adb restore mybackup.ab
입력 에뮬레이션 — adb shell input 명령어는 터치, 스와이프, 키 누름 및 텍스트 입력을 시뮬레이션할 수 있습니다. 이는 추가 프레임워크 없이 UI 테스트 자동화의 기초입니다:
adb shell input tap 500 1000
adb shell input swipe 300 500 800 500
adb shell input text "Hello, ADB!"
다른 모드로 재부팅:
adb reboot # normal reboot
adb reboot recovery # recovery mode
adb reboot bootloader # bootloader (fastboot)
Fastboot 모드는 이미지 플래싱, 부트로더 잠금 해제 및 사용자 지정 리커버리 설치에 대한 액세스를 제공합니다.
여러 기기 또는 에뮬레이터가 동시에 연결된 경우 ADB는 특정 일련 번호가 필요합니다. adb devices 명령어는 일련 번호와 함께 모든 연결된 기기를 나열합니다.
특정 기기에 명령을 보내려면 -s 플래그를 사용합니다:
adb -s 0123456789ABCD install myapp.apk
기기가 하나만 있는 경우 플래그를 생략할 수 있습니다. 그러나 여러 에뮬레이터가 동시에 실행되는 CI 환경에서는 일련 번호 지정이 필수입니다.
ADB 서버 종료 — 기기가 감지되지 않거나 오류가 발생하면 서버 재시작이 도움이 됩니다:
adb kill-server
adb start-server
그런 다음 adb devices를 실행하면 서버가 다시 시작되고 기기 데몬으로 요청을 리디렉션합니다.
| 명령어 | 설명 |
|---|---|
| adb devices | 연결된 기기 목록 표시 |
| adb install |
기기에 APK 파일 설치 |
| adb uninstall |
패키지 이름으로 앱 제거 |
| adb shell | 대화형 명령 셸 열기 |
| adb push |
컴퓨터에서 기기로 파일 복사 |
| adb pull |
기기에서 컴퓨터로 파일 복사 |
| adb logcat | 시스템 및 앱 로그 보기 |
| adb shell screencap | 스크린샷 찍기 |
| adb shell screenrecord | 화면 비디오 녹화 |
| adb reboot | 기기 재부팅 |
| adb tcpip 5555 | Wi-Fi용 ADB를 TCP/IP 모드로 전환 |
| adb connect |
Wi-Fi로 기기에 연결 |
자주 묻는 질문
설정 → 휴대전화 정보를 열고 빌드 번호를 7번 탭합니다. 기본 설정 메뉴로 돌아가면 개발자 옵션 섹션이 나타납니다. 그 안에서 USB 디버깅을 활성화합니다. Android 4.2부터 컴퓨터에 처음 연결할 때 기기 화면에서 RSA 디버깅 키를 확인해야 합니다.
기기가 컴퓨터를 신뢰하지 않습니다. 휴대폰 화면 잠금을 해제하고, USB 디버깅 허용 대화상자가 나타나면 이 컴퓨터 항상 허용을 체크하고 확인을 탭합니다. 대화상자가 나타나지 않으면 USB 케이블을 뺐다가 다시 연결하거나 adb kill-server && adb start-server를 실행합니다.
ADB는 화면 상호 작용이 필요하지 않습니다. USB로 기기를 연결하고, adb devices에 나타날 때까지 기다린 후(디버깅이 이미 활성화된 경우) adb install
ADB는 APK를 직접 설치하여 설치 중 Google Play Protect 검사를 우회하므로 게시 전에 앱을 테스트할 수 있습니다. 그러나 설치 후 최종 맬웨어 검사는 여전히 실행됩니다. ADB는 Google 계정이 필요하지 않으므로 기업 키오스크 및 Google 서비스가 없는 기기에 중요합니다.
네, 대부분의 ADB 명령어는 루트 없이 작동합니다. 예외는 보호된 시스템 파티션에 대한 액세스가 필요한 명령어입니다(예: 부트 파티션 직접 덤프 또는 시스템 파일 수정). 일상적인 작업 — 앱 설치, 로깅, 스크린샷, 백업, 입력 에뮬레이션 — 에는 루트가 필요하지 않습니다.
ADB(Android Debug Bridge)는 전문적인 수준에서 Android로 작업하는 모든 사람에게 필수적인 도구입니다. 기본 앱 설치부터 복잡한 테스트 자동화 및 기기 복구까지 — ADB는 컴퓨터와 스마트폰 또는 태블릿 간의 상호 작용의 거의 모든 시나리오를 다룹니다.
이 문서에서 설명한 명령어를 숙달하면 터미널을 통해 Android 기기를 자신 있게 관리하고, 로그를 분석하고, 문서화용 스크린샷을 찍고, 백업을 수행하고, 개발 프로세스를 가속화할 수 있습니다. 정기적인 연습과 adb help 출력 학습을 통해 이 강력한 도구의 숙련된 사용자가 될 수 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.