본문 바로가기

Android/Tips

(필수&추천) 자주쓰는 안드로이드 adb 명령 정리 ( Mac 또는 리눅스 계열 OS용 )

유선연결(USB) 뿐 아니라 무선연결(Wifi)에서도  테스트 개발 폰이나 예뮬레이터를 제어할 수 있습니다. 

adb 제어를 처음 접하는 분들을 위한  내용입니다. 주로 사용을 많이 하는 부분을 정리하였습니다. 

1. terminal 에서 adb 연결하기

$adb connect <ip>(:<port 생략가능>)

예)

$adb connect 192.168.0.1(:5555)

 

같은 망에 있다면 USB, Wifi 모두 연결 가능함. 

단, Wifi 의 경우 방화벽이나 기타 네트워크 환경에 따라서 연결불가할 수 있음.

( 21. 1. 27 추가 - wifi 연결 )

무선연결시 최초 디바이스 연결시 USB 로 1번은 연결 해줘야한다. 그리고 '개발자모드 - PC USB 디버깅 모드 허용' 도 해주고 나서,

 

$adb tcpip 5555

 

USB 선 연결 해제. 

 

$adb connect <device ip>

2. adb 연결된 리스트 확인 

$adb devices 

(추가) 

$adb devices -l

더 많은 해당 adb 정보를 보여줌. 

3. adb 죽이기

$adb kill-server

이후

$adb connect <ip>

진행하면 된다.

4. 특정 기기로 adb 제어 

$adb devices

또는

$adb devices -l

 

위의 명령어로 내 컴퓨터에 연결되어있는 adb 장치 목록들을 보고 원하는 장치의 이름을 파악한다.

 

$adb -s emulator-5555 install helloWorld.apk 

'emulator-5555' 라는 장치에다가 현재 내 컴퓨터에 보관중인 helloWorld.apk를 설치한다. 

 

참고로 이용중인 adb 장치가 1개 인 경우 

$adb install helloWorld.apk 

명령어로 특정 장치를 가리키는 부분을 생략 가능하다.

 

shell 연결시에도,

$adb -s emulator-5555 shell 

로 가능하다. 

5. adb 파일 송수신

간혹 adb 의 build.prop 을 바꾸어 설정을 변경해서 사용해줘야 할 케이스가 있다. 

직접 adb shell 을 통하여 변경을 시도할 경우에 permission denied 문제로 인하여 변경이 불가하다.  

그럴경우 adb 내의 파일을 pull (내 컴퓨터로 가져옴) 하여 변경 후 다시 push (adb 장치로 전송) 하는 방법이 있다. 

 

$adb root (루트권한)

$adb remount

$adb pull /system/build.prop

(해당 파일이 내 컴퓨터의 현재 경로에 다운로드 된다. 내 컴퓨터의 build.prop 파일에서 필요한 내용 변경 후)

$adb push build.prop /system 

(adb 장치의 system 폴더에 변경한 파일을 전송)

$adb reboot

해당 장치 재부팅

 

(추가 - 라즈베리파이에다가 AOSP 또는 Android Things 설치시 의 부팅 화면 방향 변경)

해당 파일을 바꿔야 하는 저의 케이스는 부팅시 화면을 가로 -> 세로 버전으로 바꿔야했음.

여러 방법 중 해당 파일(build.prop) 에다가 

'ro.sf.hwrotation=90' 추가 

장치에 파일 push 후 재부팅 하여 세로버전으로 부팅되도록 변경함.

6. 해상도변경 (density)

모든 장치는 물리적 density 를 가지고 있다. 하지만 여러가지 개발 상황에 따라 예뮬레이터에서 다른 해상도로 보고싶은 경우가 있다. 

$adb shell wm density

(해당 장치의 물리적 해상도를 보여준다. 변경시 변경된 해상도도 나타내줌)

$adb shell wm density 240

(해당 장치를 240dpi 로 변경)

 

(추가) 화면 회전시

$adb shell settings put system accelerometer_rotation 0

(재부팅시 변경되는 것을 해제)

$adb shell settings put system user-rotation 3

(270도로 회전, 1 = 90 도, 2=180 도 )

7. 장치 재부팅 

$adb reboot

8. Android 버전 확인 

$adb shell getprop ro.build.version.release

9. SDK 버전확인

$adb shell getprop ro.build.version.sdk

10. 기본 환경설정 열기

$adb shell am start -n com.android.settings/com.android.settings.Settings

11. APK 제거

$adb uninstall <패키지명>

(추가) 강제제거

$adb shell pm disable-user --user 0 <패키지명>

이 경우는 보통 AOSP 자체 탑제된 앱을 지우거나 할 경우에 쓰면 편하다. 나의 경우 AOSP 에서 미리 설정해둔 나의 기본앱을

개발하면서 앱을 지워야 할 상황이 왔을 때 주로 쓴다.

12. 특정 앱 실행

$adb shell am start -a android.intent.action.MAIN -n <패키지명>

예) 

$adb shell am start -a android.intent.action.MAIN -n com.helloworld/.MainActivity

 

 

 

(추가됨) 

13. 기존 apk 업데이트 ( replace )

$adb install -r --fastdeploy <.apk 파일 경로> 

버전코드 >= 이상인 경우만 적용 되며, 빠르게 예뮬레이터의 앱을 업데이트 할 수 있다. 

(언제쓰면좋은가?) 현재 주로 사용하는 경우는 같은 서명의 앱파일이 설치되어야 할 때 매번 파일 옮겨서 설치하거나 하는 번거로움을 줄여준다. 

여기에 추가로 12번항목을 같이 쓰면 앱 업데이트 후 바로 실행이 가능하다.

 

예) 

$adb install -r --fastdeploy ./helloworld.apk 

14. 예뮬 OS 버전 확인

$adb shell getprop ro.build.version.release

 

15. 예뮬 SDK 버전 확인

$adb shell getprop ro.build.version.sdk

 

16. 로그 내역 초기화 (삭제)

IDE 툴인 안드로이드 스튜디오 내에서 연결된 장비 Logcat 이 내용이 너무 많아서 느리거나 인식 못하는 경우가 최근들어 많이 생긴다. 

해당 로그내역을 clear 하기 위한 명령어.

 

$adb logcat -c

 

 

 

 

 

(공식 Android 개발 문서 링크 참고)

https://developer.android.com/studio/command-line/adb?hl=ko

 

Android 디버그 브리지(adb)  |  Android 개발자  |  Android Developers

기기와 통신할 수 있는 다목적 명령줄 도구인 Android 디버그 브리지를 알아보세요.

developer.android.com