프로그래밍/Android

[안드로이드] adb 개념과 사용법 / 무선 디버깅 연결방법

Lou Park 2021. 8. 24. 21:49

adb 개념

안드로이드 디버그 브릿지 (adb)는 안드로이드 기반 에뮬레이터 혹은 실제 휴대기기와 통신할 수 있게 해주는 커맨드라인 툴이다. 이름 잘 지었는걸? 앱 설치 / 로그캣 명령어 확인 / 디버깅 등 앱 개발에 유용한 명령어 뿐만아니라 Unix shell에 접근할 수 있게 함으로서 기기 내 파일 관리, 프로세스 확인 등 다양한 작업을 가능하게 한다.

 

adb는 명령어를 전송하는 클라이언트 / 각 기기에서 백그라운드 프로세스로 실행되는 데몬(adbd) / 클라이언트와 데몬간의 통신을 관리하는 서버로 이루어져있다. 안드로이드 스튜디오에서 기기가 제대로 detect되지 않을때 adb server를 재시작하는 이유가 여기에 있었다...

 

 

adb 사용하기

터미널에 adb를 입력해보고, 환경변수 등록이 되지 않았다면 이 챕터를 따라가자.

$ zsh: command not found: adb

Android SDK를 깔았던 기억이 있다면...adb도 당신의 컴퓨터 속에 있다. Android SDK 경로의 platform-tools 폴더 내에 있을건데,

Android SDK 경로는 안드로이드 스튜디오에서 SDK Manager를 열면 손쉽게 확인할 수 있다.

 

Android Studio에서 SDK Manager를 실행시킨 모습

bash면 ~/.bash\_profile 혹은 ~/.bashrc, zsh면 ~/.zshrc를 열어서 가장 아랫 줄에 adb 경로를 추가한다. 아래는 예로 내 컴퓨터의 adb경로를 추가해주었다. 끝에는 adb라고 지정해 주지 않아 해당 경로안의 다른 프로그램도 실행시킬 수 있다. (sqlite3등...)

$ export PATH="$PATH:/Users/lou/Library/Android/sdk/platform-tools/:"

source로 설정 파일을 새로 고친 후 adb를 쳐서 제대로 적용되었는지 확인하자.

$ source ~/.zshrc

이제 adb를 사용하기 위한 준비가 끝났다.

 

 

adb 유용한 명령어들

adb devices

기기목록 조회: 현재 adb 서버에서 인식가능한 기기 시리얼 넘버 목록을 보여준다.

 

adb -s <시리얼넘버> <명령어>

명령시 특정 기기 지정: 연결된 기기가 하나라면 따로 "-s 시리얼넘버"를 통해서 기기를 지정해 줄 필요 없지만, 여러대일 경우 명령어를 치기전에 타겟 디바이스를 지정 해 주어야 한다.

 

adb kill-server adb 서버를 재시작한다.

 

adb install <파일명>.apk apk 파일을 설치한다. 여러가지 옵션을 함께 줄 수 있는데 주요 옵션들은 다음과 같다.

-r: 설치된 앱을 대체

-t: 테스트 패키지 허용

-d: 버전 다운그레이드 허용 (debuggable 패키지만)

-g: 런타임 권한 모두 허용

-k: 데이터, 캐시 유지

 

adb logcat 로그캣 보기

 

adb shell <명령어> Unix shell 접근하기

 

adb shell service list: 현재 실행중인 서비스와 해당 패키지 네임 조회

adb shell cat /proc/version: 커널 버전 확인

adb shell cat /proc/cpuinfo: CPU 정보 확인

adb shell cat /proc/meminfo: 메모리 정보 확인

adb shell ps: 프로세스 정보

adb shell top: 프로세스별 리소스 사용량 확인

 

 

무선 디버깅 활성화 하기 (Android 11 이상)

무선 디버깅을 활성화하면 물리적인 연결 없이 동일 네트워크 상에 있는 것 만으로도 adb에 기기를 인식시킬 수 있다. 안드로이드 11 이상 기준의 설명이니, 10 이하는 https://developer.android.com/studio/command-line/adb 에서 확인하면 된다.

 

1. 휴대전화에서 [설정 > 개발자 옵션 > 무선 디버깅]을 활성화 한다.

2. 이 네트워크에서 무선 디버깅을 허용하시겠습니까? 라는 다이얼로그에서 허용을 클릭한다.

3. [무선 디버깅] 메뉴를 다시 한 번 더 눌러 상세 화면으로 들어간다.

4. [페어링 코드로 기기 페어링]을 선택한다.

 

5. 이제 부터는 컴퓨터 키보드를 만질 시간~ 위 사진처럼 IP 주소 및 포트와 Wi-Fi 페어링 코드가 뜰 것이다. 컴퓨터 터미널에 해당 IP 주소와 포트를 조합하여 입력한다.

$ adb pair 192.168.0.17:45797
$ adb pair <아이피>:<포트>

6. 그런다음 Enter pairing code에 해당 페어링 코드를 입력해준다.

7. 정상적으로 페어링 되었음을 확인 후 adb devices를 입력하여 기기 연결을 확인해주면된다.

 

정상적으로 연결된 모습

거추장스러운 USB 선 없이 디버깅이 되다니 내일 회사에 가서 무선 디버깅 적용할 생각만으로도 너무 행복하다...

오늘 하루 참 버그때문에 당황스럽고 힘들었지만 내일은 하고싶은거 먹고싶은거 많은 날이 될 수 있길~

 

 

참고자료

https://superfelix.tistory.com/89

https://developer.android.com/studio/command-line/adb