Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드 디버그 브리지(ADB) 완벽 가이드: 개념부터 주요 명령어까지

Android Debug Bridge(adb)는 안드로이드 기기와 직접 통신할 수 있도록 지원하는 강력한 커맨드라인 도구입니다. 스마트폰, 태블릿, 스마트워치, 셋톱박스 등 안드로이드 OS가 구동되는 거의 모든 기기에 사용할 수 있으며, 일상적인 사용 환경에서는 접근하기 어려운 다양한 작업을 수행할 수 있습니다.

예를 들어 구글 플레이 스토어 외부에서 앱을 설치하거나, 앱을 디버깅하고, 숨겨진 기능에 접근하며, UNIX 셸을 실행하는 등의 작업이 가능합니다. 다만 보안상의 이유로 이러한 기능을 사용하려면 먼저 개발자 옵션을 활성화하고 USB 디버깅 모드를 켜야 합니다. 여기에 더해 USB 케이블로 연결된 특정 PC에 대해 USB 디버깅 접근 권한을 별도로 승인해야 합니다.

ADB의 세 가지 구성 요소

ADB는 클라이언트-서버 방식으로 동작하는 프로그램으로, 다음 세 가지 구성 요소로 이루어져 있습니다.

  • 클라이언트(Client): 명령어를 전송하는 역할을 하며, 개발용 PC에서 실행됩니다. 터미널에서 adb 명령어를 입력하면 클라이언트가 호출됩니다.

  • 데몬(Daemon): 기기 내부에서 실제 명령어를 실행합니다. 각 안드로이드 기기마다 백그라운드 프로세스 형태로 상시 구동됩니다.

  • 서버(Server): 클라이언트와 데몬 간의 통신을 중개합니다. 개발용 PC에서 백그라운드 프로세스로 실행됩니다.

ADB의 작동 원리

칼리 리눅스(Kali Linux) 터미널에서 adb 클라이언트를 실행하면, 클라이언트는 먼저 이미 구동 중인 adb 서버 프로세스가 있는지 확인합니다. 서버가 없다면 새로 시작하게 됩니다.

서버가 시작되면 로컬 TCP 포트 5037에 바인딩되고, adb 클라이언트들이 전송하는 명령어를 대기합니다. 모든 adb 클라이언트는 포트 5037을 통해 adb 서버와 통신합니다. 이후 서버는 현재 실행 중인 모든 기기와의 연결을 설정하는데, 에뮬레이터는 5555~5585 범위의 홀수 포트를 스캔하여 찾습니다(이 범위는 처음 16개 에뮬레이터가 사용하는 포트입니다). 서버가 adb 데몬을 발견하면 해당 포트로 연결을 맺습니다.

사전 준비: 개발자 옵션 활성화

USB로 연결된 기기에서 adb를 사용하려면 기기 시스템 설정의 개발자 옵션에서 USB 디버깅을 반드시 활성화해야 합니다. 개발자 옵션 화면은 기본적으로 숨겨져 있으며, 다음 절차로 표시할 수 있습니다.

  1. 설정 > 휴대전화 정보(또는 태블릿 정보) 메뉴로 이동합니다.
  2. 빌드 번호(Build number)를 일곱 번 연속으로 탭합니다.
  3. 이전 화면으로 돌아가면 목록 맨 아래에 개발자 옵션이 나타납니다.

기기 연결 방법

  • 안드로이드 기기에서 개발자 옵션을 활성화한 후, USB 케이블로 PC와 연결합니다. 참고로 Wi-Fi를 통한 무선 연결도 가능합니다.

  • 칼리 리눅스에서 터미널을 엽니다.

  • 기기의 IP 주소를 확인해 연결합니다. IP 주소는 설정 > 태블릿 정보(또는 휴대전화 정보) > 상태 > IP 주소에서 확인할 수 있습니다.

    :/> adb connect 'IP 주소'

  • 연결 후 다음 명령어로 호스트 PC와 대상 기기가 정상적으로 연결되었는지 확인합니다. 이 명령은 연결된 기기들의 시리얼 넘버를 출력합니다.

    :/> adb devices

자주 사용하는 ADB 명령어

안드로이드 기기와 연결이 성립되면 다양한 작업을 수행할 수 있습니다. 기기와 통신할 때 유용하게 쓰이는 주요 명령어는 다음과 같습니다.

명령어설명
adb devices연결된 기기 목록 출력
adb kill-serveradb 서버 종료
adb root루트(root) 권한 획득
adb wait-for-devices기기가 연결될 때까지 대기
adb shell stop thermal-engine시스템 서비스 /system/bin/thermal-engine 중지
adb install애플리케이션 설치
adb shell셸(shell) 세션 시작
adb shell dumpsys메모리 사용량 등 시스템 상세 정보 확인
adb shell echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governorcpu1 스케일링 거버너를 성능(performance) 모드로 변경
adb pull기기에서 파일 또는 디렉터리 복사(가져오기)
adb push기기로 파일 또는 디렉터리 복사(보내기)
adb forward tcp:6100 tcp:7100포트 포워딩 설정

마무리

ADB는 단순히 앱을 설치하는 것을 넘어, 기기 제어·디버깅·시스템 설정 변경 등 안드로이드 개발과 보안 테스트 전반에서 필수적인 도구입니다. 다만 잘못된 명령어 입력은 기기 오작동을 유발할 수 있으므로, 각 명령어의 역할을 충분히 이해한 상태에서 신중하게 사용하는 것이 좋습니다.