전체 치트시트Android 개발

adb

Android Platform Tools 34+

Android Debug Bridge CLI 빠른 참조 — 디바이스 발견, install / uninstall, logcat, shell, push / pull, 포트 포워딩, 무선 디버깅 — 자주 쓰는 옵션과 실전 예시까지 함께 정리했습니다.

명령어 33개

디바이스

adb devices

연결된 모든 디바이스 / 에뮬레이터를 시리얼과 상태(`device`, `unauthorized`, `offline`)와 함께 나열합니다.

-l 자세한 정보 표시(product, model, transport); -e 에뮬레이터만; -d USB 디바이스만

adb devices -l
adb connect <ip>:<port>

Wi-Fi 또는 TCP/IP로 디바이스에 연결합니다(기본 포트 5555). Android 11+에서는 먼저 `adb pair <ip>:<port>`로 페어링하세요.

ip:port; --one-time 세션 종료 시 연결 해제

adb pair 192.168.1.42:41235 && adb connect 192.168.1.42:5555
adb disconnect [<ip>:<port>]

하나 또는 모든 무선 디바이스의 연결을 해제합니다. 인자를 주지 않으면 모든 연결을 해제합니다.

adb disconnect 192.168.1.42:5555 && adb disconnect
adb -s <serial> <command>

여러 디바이스가 연결되어 있을 때 특정 디바이스를 대상으로 지정합니다(`<serial>`을 `adb devices`의 값으로 대체).

adb -s emulator-5554 shell pm list packages

설치 / 제거

adb install <apk>

APK를 설치합니다. `-r`은 데이터를 유지하며 재설치, `-d`는 version-code 다운그레이드 허용, `-t`는 테스트 전용 APK 허용, `-g`는 모든 런타임 권한 부여.

-r; -d; -t; -g; --abi <abi>; --user <id>

adb install -r -g app-release.apk
adb install-multi-package <apk1> <apk2>

분할 APK 번들을 원자적으로 설치합니다 — 여러 ABI / 구성을 가진 App Bundle에 사용됩니다.

adb install-multi-package base.apk split_config.arm64.apk
adb uninstall <package>

패키지 이름으로 앱을 제거합니다. `-k`는 데이터 + 캐시 디렉터리를 유지합니다.

-k 사용자 데이터 유지

adb uninstall com.example.myapp

Logcat

adb logcat

디바이스의 로그 버퍼를 스트리밍합니다. 태그 / 우선순위 필터: `*:V`(verbose), `*:E`(errors).

-v threadtime; -d 덤프 후 종료; -s <tag>; -t <N>; --pid=<pid>; -f <file> 파일로 저장

adb logcat *:E
adb logcat -d

현재 버퍼를 stdout으로 덤프하고 종료합니다(비-스트리밍). 일회성 점검을 위해 grep과 함께 사용하세요.

-d -t 500 마지막 500줄

adb logcat -d -t 200 | grep -i 'myapp'
adb logcat -s <tag>:<level>

주어진 레벨(V/D/I/W/E)로 특정 태그의 항목만 표시합니다. 태그는 공백으로 결합합니다.

MyTag:D MyTag2:E

adb logcat -s MyApp:V ReactNative:V

adb shell

디바이스에서 인터랙티브 셸로 들어갑니다. 대부분의 Unix 유틸리티가 동작하며, `/sdcard`가 공용 저장소 루트입니다.

-t TTY 할당(인터랙티브 프로그램용)

adb shell
adb shell <command>

디바이스에서 단일 명령을 실행하고 출력을 반환합니다. 호스트 / 디바이스 인자를 섞을 때는 따옴표 처리에 주의하세요.

adb shell pm list packages | grep com.example && adb shell dumpsys battery
adb shell pm list packages

설치된 패키지를 나열합니다. `-f`는 경로, `-3`은 사용자 설치 앱 필터, `-d`는 비활성화된 패키지 필터.

-f 경로; -3 사용자 앱; -d 비활성; -e 활성; -s 시스템; <filter>

adb shell pm list packages -3 | head -30
adb shell am start -n <package>/<activity>

`package/activity` 정규화된 이름으로 액티비티를 시작합니다. 시작 완료를 기다리려면 `am start -W`를 사용하세요.

-a <action>; -d ; --es <key> <val> 추가 문자열; -W 대기

adb shell am start -n com.example/.MainActivity
adb shell screencap -p /sdcard/screen.png

디바이스 화면을 PNG로 캡처합니다. 가져오려면 `adb pull`과 함께 사용하세요.

-p PNG(기본)

adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png .
adb shell input <source> <command>

입력 이벤트를 주입합니다. 자주 쓰는 예: `tap x y`, `swipe x1 y1 x2 y2 [ms]`, `keyevent <code>`, `text "string"`.

tap; swipe; keyevent; text; roll; press

adb shell input tap 540 1200 && adb shell input keyevent 4

파일 전송

adb push <local> <remote>

로컬 파일 / 디렉터리를 디바이스로 복사합니다. 동기 시맨틱, 바이너리 파일을 보존합니다.

--sync 오래된 파일만 덮어쓰기; --copy-links 심볼릭 링크 보존; -p 진행 표시

adb push app-debug.apk /sdcard/Download/ && adb push ./assets /sdcard/myapp/assets
adb pull <remote> <local>

디바이스의 파일 / 디렉터리를 호스트로 복사합니다. 기본 대상은 `.`(현재 디렉터리).

-a 타임스탬프 보존; -p 진행 표시

adb pull /sdcard/screen.png ./screenshots/latest.png

포워딩

adb forward tcp:<host-port> tcp:<device-port>

호스트 포트를 디바이스 포트로 포워딩합니다 — Chrome 탭에 대한 Chrome 원격 디버그 소켓을 여는 데 흔히 사용됩니다.

--remove; --remove-all

adb forward tcp:9222 localabstract:chrome_devtools_remote
adb reverse tcp:<device-port> tcp:<host-port>

디바이스 포트를 호스트 포트로 역방향 포워딩합니다 — 개발 서버가 `localhost:3000`에서 실행 중이고 디바이스가 그에 접근해야 할 때 유용합니다.

adb reverse tcp:3000 tcp:3000 && curl http://localhost:3000/api/health
adb forward --list

활성 포트 포워드 및 reverse 목록을 표시합니다. 리셋하려면 `adb forward --remove-all`과 함께 사용하세요.

adb forward --list && adb reverse --list

앱 관리

adb shell pm clear <package>

특정 패키지의 앱 데이터 + 캐시를 지웁니다 — `설정 → 앱 → 스토리지 → 비우기`와 같은 효과.

adb shell pm clear com.example.myapp
adb shell pm grant <package> <permission>

UI 프롬프트 없이 런타임 권한(예: `android.permission.CAMERA`)을 부여합니다 — 테스트 설정에서 흔히 사용됩니다.

adb shell pm grant com.example.myapp android.permission.READ_CONTACTS
adb shell am force-stop <package>

실행 중인 앱을 강제 종료합니다(프로세스가 죽음). 포그라운드 앱을 재설치할 때 유용합니다.

adb shell am force-stop com.example.myapp && adb install -r app.apk

부팅 / 리커버리

adb reboot

디바이스를 재부팅합니다. 변형: `recovery`, `bootloader`, `fastboot`, `download`, `edl`.

recovery | bootloader | fastboot | download | edl

adb reboot bootloader && fastboot flashall
adb sideload <zip>

리커버리 모드에서 서명된 OTA / 공장 이미지 zip을 사이드로드합니다(보통 `adb reboot recovery`로 진입).

adb sideload ota-update.zip

디버깅

adb shell run-as <package> <cmd>

앱의 UID로 명령을 실행합니다 — 디버그 가능한 APK가 자신의 비공개 데이터 디렉터리를 읽기 위해 필요합니다.

<package> cat ./databases/my.db > /sdcard/dump.db

adb shell run-as com.example.myapp ls databases
adb shell dumpsys <service>

시스템 서비스(`battery`, `window`, `activity`, `package`, `gfxinfo`, `netstats`)의 상태를 덤프합니다.

battery; activity; package; window; gfxinfo <pkg>; netstats

adb shell dumpsys gfxinfo com.example.myapp framestats

서버

adb start-server

adb 서버를 명시적으로 시작합니다(보통은 어떤 명령에서나 자동 시작됨). `kill-server` 후에 사용하세요.

adb start-server
adb kill-server

adb 서버를 중지하고 모든 디바이스의 연결을 해제합니다. adb가 `offline` 상태에서 멈췄을 때 유용합니다.

adb kill-server && adb start-server && adb devices

기타

adb --version

Platform Tools 버전을 출력합니다.

adb --version
adb help

모든 adb 하위 명령을 한 줄 설명과 함께 나열합니다.

adb help

무선

adb pair <ip>:<port>

개발자 옵션에 표시된 6자리 페어링 코드를 사용해 Wi-Fi로 디바이스를 페어링합니다. 그 후 실제 디버그 포트로 `adb connect`를 호출합니다.

<ip>:<port>

adb pair 192.168.1.42:41235

관련 명령어 치트시트

ADB 소개

Android Debug Bridge(adb)는 Android SDK Platform Tools(2009년부터)와 함께 제공되는 CLI 도구입니다. USB, Wi-Fi 또는 TCP/IP로 개발 워크스테이션을 안드로이드 디바이스나 에뮬레이터에 연결하며, 세 가지 하위 구성 요소로 이루어집니다: 호스트에서 실행되는 서버(포트 5037), 디바이스에서 실행되는 데몬(`adbd`), 그리고 `adb` CLI. 현재 Platform Tools 라인은 34+(Android 14와 함께 출시)입니다. `adb`는 APK 설치, logcat 읽기, JDWP로 앱 디버깅, ROM 사이드로드, UI 테스트 스크립팅, 파일 push/pull의 기반입니다. 무선 디버깅은 Android 11에서 추가되었으며(13+에서 QR 페어 플로우) 자주 쓰는 관련 명령으로 `fastboot`(부트로더 / 리커버리)와 `emulator`(QEMU 기반 AVD)가 있습니다. ADB는 앱의 소스 코드를 업로드하지 않으며, APK와 디바이스 상태만 전송합니다. SDK Platform Tools는 Apache 2.0 라이선스로, 독립 ZIP 또는 SDK Manager를 통해 제공됩니다.

치트시트 버전 1.0.0