안드로이드 디바이스 브릿지(ADB) 설치 및 활용하기
2024-08-30 23:13:31

출처

ADB?

Android Device Bridge 의 준말로, 커맨드라인 명령어로 안드로이드 기기와 통신할 수 있게 해주는 툴이다. 명령어로 어플 설치/디버깅이 가능하며, unix shell 에 접근할 수 있으므로 기기상으로 다양한 명령어를 실행할 수 있다.

ADB 구조

  1. 클라이언트 - 명령어를 보내는 프로그램 자체이며, 개발 환경에서 실행된다. adb 명령어를 사용하는 즉시 클라이언트를 invoke 하는 개념으로 보면 된다.
  2. 대몬(adbd) - 기기에서 명령어를 실행하는 주체이며, 기기별로 백그라운드 프로세스로서 동작한다.
  3. 서버 - 클러이언트와 대몬 간 통신을 주관하는 개념이며, 개발 환경에서 백그라운드 프로세스로서 작동한다.

ADB 설치 방법

  1. ✅ homebrew 로 설치
    1. brew install android-platform-tools
    2. adb devices
  2. sdk manager 로 설치
  3. manual install

ADB 동작 방식

adb 명령어 실행 시 클라이언트가 실행 중인 adb 서버 프로세스를 탐지한다. 서버가 실행 중이 아니라면 서버 프로세스를 시작한다. 서버는 TCP 5037 번 포트에 바인딩되며(모든 클라이언트 또한 동일하다) 클라이언트로부터 오는 명령어를 listen 한다. 이후 모든 실행 중인 기기와의 연결을 설정한다. 16번째 에뮬레이터까지를 주관하는 5555~5585 까지의 홀수 번호 포트들을 쭉 훑으며 에뮬레이터들의 위치를 확인한다. 또한 서버가 adb 대문을 찾으면 해당 포트와의 연결을 수행한다. 참고로 홀수 번호 포트는 adb 연결을 위해 지정된 것이며, 짝수 번호 포트는 콘솔 연결을 담당한다.

콘솔 연결 vs adb 연결

이후 adb 공식 문서에서 실행 방법을 찾아 그대로 연결하면 된다. 우선적으로 adb devices 명령어로 usb 로 연결된 모든 기기들을 목록 형식으로 확인할 수 있을 것이다. 다만 wifi 로 연결하고 싶다면 조금 다른 방법으로 접근해야 한다.

WiFi 로 ADB 연결하기

안드로이드 11 버전(API level 30) 이상에서만 지원하는 기능이다. adb 를 활용하여 무선으로 개발 환경과 연결할 수 있도록 하는 기능이며, 물리적으로 연결하지 않아도 여러 디버깅 기기에 원격으로 배포가 가능하다. 드라이버 설치 등과 같은 복잡한 세팅을 고려하지 않아도 되므로 경쟁력 있는 선택지이다. 몇 가지 조건 하에 무선 연결을 설정할 수 있다.

조건

  • 개발 환경과 안드로이드 기기가 동일한 와이파이 네트워크에 접속해 있을 것
  • 휴대폰의 경우 11버전 이상, TV, WearOS 는 13 버전(API level 33) 이상일 것
  • 최신 버전 안드로이드 스튜디오가 설치되어 있을 것
  • 최신 버전 SDK Platform Tools 가 설치되어 있을 것

연결하기

  1. 디버깅할 기기에서 개발자 옵션 활성화 하기
  2. 안드로이드 스튜디오에서 Pair Devices Using Wi-Fi 선택하기
  3. QR 코드가 표시되는지 확인 후, 디버깅 기기에서 무선 디버깅 옵션 체크하기
  4. 무선 디버깅 옵션을 선택하여 QR 코드를 인식하기. 만약 QR 코드 인식이 불가능 할경우 Pair Device with paring Code 옵션 또한 가능하다. img
  5. 페어링 완료시 기기로 앱을 배포하여 정상 동작하는지 확인한다.
  6. 빠른 연결/해제를 하고 싶다면 개발자 옵션 -> Quick setting developer tiles 에서 Wireless debugging 에 체크한다.

커맨드 라인으로 와이파이 연결하기

  1. 개발자 옵션 활성화
  2. 무선 디버깅 활성화
  3. 개발 환경에서 터미널을 실행한 후 android_sdk/platform-tools 위치로 이동 (주로 ~/Library/Android/sdk/platform-tools)
  4. IP주소와 포트 번호를 찾고 안드로이드 스튜디오에서 페어링 코드로 기기 연결하기 옵션을 선택한다. IP 주소, 포트 번호, 페어링 코드를 간단하게 메모해 두자. 굉장히 당연한 부분인데, 로컬 IP가 아니라 디버깅 디바이스에서 무선 디버깅을 선택한 뒤 “페어링 코드로 기기 페어링”을 선택하여 wifi paring code, IP주소 및 포트 번호를 확인하여 해당 정보로 접근하는 것이다.
  5. 개발 환경 터미널에서 adb pair ipaddr:port 형식 명령어를 실행하되, ip번호:포트 형식으로 입력한다.
  6. 정상 실행시 페어링 코드를 입력한다. img
  • 꿀팁: 맥북에서 ip addrs, port 번호 확인하는 방법:Essential Mac Terminal Commands for IP Address Lookup (heatware.net)

  • ifconfig en0 : 와이파이 연결에 대한 인터페이스는 주로 en0 항목이며, 이더넷 연결은 대체로 en1 으로 확인할 수 있다. en0 에서 확인되는 IP 가 바로 네트워크 상 내 기기의 로컬 IP 주소이다. ipconfig getifaddr en0 로 IP 주소만 직접적으로 확인할 수 있다.

  • 내 원격/공개 IP 주소를 확인하려면 fast.com 과 같은 인터넷 속도 측정 웹사이트에서 확인할 수도 있고 비슷한 기능을 제공하는 여러 웹사이트에 들어가서 확인할 수도 있고, dig 명령어를 활용하여 공용 IP 를 직접적으로 받아올 수도 있다. dig +short myip.opendns.com @resolver1.opendns.com 명령어를 실행하면 다양한 DNS 서버 중 요청 컴퓨터의 ip를 반환하게 되며, 나의 공개 IP 를 확인할 수 있다.

  • 혹은 curl igconfig.me 명령어로 확인할 수도 있다.

  • 함께 보면 좋을 2024 년도 버전 맥OS 터미널 명령어 치트시트: The Essential Cheat Sheet for Mac Terminal Commands [2024] (heatware.net)

  • 최종

1
2
3
4
5
# device IP:Port
192.168.219.106:34133

# connect to the device
adb pair 192.168.219.106:34133

adb paring image 1

adb paring image 2

adb paring image 2

위처럼 정상적으로 연결됨을 확인할 수 있다.

ADB로 할 수 있는 작업들

  • adb shell [commands] 로 쉘 명령어를 실행할 수 있다.
    • screencap [path]/[filename.ext] 형식으로 스크린샷을 촬영할 수 있다. 즉 기기 제어 또한 가능하다.
  • 기기와 개발환경 간에 파일 주고받기가 가능하다. (pull, push)
    • adb screenshot img
  • sqlite 등 다양한 작업들이 가능하다.
Prev
2024-08-30 23:13:31