안드로이드 디버깅 브리지(ADB) 핵심 명령어 가이드

시스템 파티션 쓰기 및 앱 배포

시스템 영역에 파일을 수정하거나 배포하려면 우선 verity 보호를 해제하고 루트 권한을 활성화한 후 파티션을 재마운트해야 합니다.

adb disable-verity
adb reboot
adb root
adb remount
adb push C:\config\bluetooth_profile.xml /system/etc/custom/

무선 디버깅 세션 구성

USB 연결 없이 네트워크를 통해 디버깅을 진행하려면 포트 리스너를 설정하고 기기의 IP 주소를 확인해야 합니다.

네트워크 인터페이스 IP 확인

# 호스트 측
ipconfig

# 대상 기기 측
adb shell ifconfig wlan0 | grep inet

TCP 포트 할당

adb tcpip 5557

디바이스 식별 및 서버 관리

  • 연결 상태 및 상세 정보 조회: adb devices -l
  • 장치 시리얼 넘버 추출: adb get-serialno
  • ADB 데몬 재시작 및 정지: adb kill-server / adb start-server
  • 부팅 모드 전환: adb reboot (기본), adb reboot bootloader, adb reboot recovery
  • 네트워크 MAC 주소 확인: adb shell cat /sys/class/net/wlan0/address
  • 프로세서 상세 정보: adb shell cat /proc/cpuinfo

패키지 관리 및 프로세스 모니터링

애플리케이션 설치, 제거, 실행 및 리소스 사용량 추적 명령어입니다.

# APK 설치 및 기존 데이터 유지
adb install -r sample_app_v3.apk

# 외부 저장소로 설치
adb install -s sample_app_v3.apk

# 패키지 제거 (데이터 및 캐시 보존 옵션)
adb uninstall -k com.example.testsuite

# 특정 컴포넌트 직접 실행
adb shell am start -n com.example.testsuite/.ui.LauncherActivity

리소스 분석

# 실시간 상위 4개 프로세스 모니터링
adb shell top -m 4

# 단일 시점 스냅샷
adb shell top -n 1

# 프로세스 목록 및 PID 기반 상태 조회
adb shell ps -A | grep com.example
adb shell ps -p [PID]

# 백그라운드 서비스 레지스트리 확인
adb shell service list

# 시스템 메모리 및 I/O 영역 분석
adb shell cat /proc/meminfo
adb shell cat /proc/iomem

파일 시스템 조작

# 호스트-기기 간 파일 동기화
adb push ./reports/log_dump.txt /data/local/tmp/
adb pull /sdcard/crash_trace.log ./analysis/

# 셸 내 디렉토리 관리
adb shell ls -la /system/bin
adb shell mkdir /data/local/test_workspace
adb shell chmod 644 /system/etc/custom_policy.conf
adb shell mv /data/legacy_config.json /data/archive/legacy_config.json
adb shell rm -rf /data/cache_temp/

화면 해상도 조정 및 런타임 권한

# 디바이스 화면 크기 강제 변경
adb shell wm size 1080x2400

# 기본 해상도로 복원
adb shell wm size reset

# 매니페스트 권한 부여/회수
adb shell pm grant com.example.testsuite android.permission.ACCESS_COARSE_LOCATION
adb shell pm revoke com.example.testsuite android.permission.ACCESS_COARSE_LOCATION

Logcat 버퍼 분류 및 필터링 구문

안드로이드 로그 시스템은 여러 버퍼로 분리되어 있으며, Android Studio 및 명령줄에서 고급 필터링이 가능합니다.

주요 버퍼 옵션

  • radio: 통신 스택(Wi-Fi, Bluetooth, Cellular) 로그
  • events: 시스템 이벤트 및 앱 생명주기 전환
  • main: 기본 애플리케이션(Java/Kotlin) 로그
  • system: OS 프레임워크 및 데몬 로그
adb logcat -b system -b radio

고급 필터 구문

  • 부정 연산: -tag:SyncWorker (해당 태그 제외)
  • 정규식 매칭: tag~:Auth.*Manager
  • 복합 연산: (tag:Network | level:WARN) & package:com.demo.app
  • 암시적 논리: 동일 키는 OR, 상이한 키는 AND로 결합됨. tag:A tag:B package:X(tag:A | tag:B) & package:X
  • 시간 제한: age:15m (호스트 기준 최근 15분)
  • 레벨 필터: level:INFO (INFO 이상 출력, 대소문자 무시)
  • 특수 값: package:mine (현재 IDE 프로젝트 매칭), is:crash, is:stacktrace

오디오 포커스 및 하드웨어 상태 조회

# 오디오 서브시스템 및 마이크 구성 확인
adb shell dumpsys audio | grep -i mic
adb shell dumpsys audio | grep "Audio Focus stack entries"

# 현재 활성 윈도우(포커스 앱) 식별
adb shell dumpsys window | grep mCurrentFocus

오디오 포커스 변경 이력은 시스템 차원에서 영구 저장되지 않으므로, 개발 단계에서 AudioManager.OnAudioFocusChangeListener 인터페이스의 onAudioFocusChange() 콜백을 활용해 내부 로깅을 구현해야 합니다.

MAC 주소 재설정

adb shell ifconfig wlan0 hw ether 02:1B:44:CC:99:11

빌드 속성 및 시스템 정보 추출

# OS 릴리즈 버전
adb shell getprop ro.build.version.release

# 상세 빌드 메타데이터
adb shell getprop | grep ro.build
# 주요 키: ro.build.version.sdk, ro.build.version.security_patch, ro.build.version.incremental

# 하드웨어 식별자
adb shell getprop ro.product.model
adb shell getprop ro.product.brand
adb shell getprop ro.serialno
adb shell getprop ro.product.cpu.abi

태그: android-debug-bridge logcat-filtering shell-commands android-build-properties package-manager

9월 17일 23:43에 게시됨