유선연결(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 > Tips' 카테고리의 다른 글
SDCard 통째로 Cloning 하는 법 (Ubuntu 20.04.1 LTS) (2) | 2021.01.06 |
---|---|
(에러) cleartext http traffic to not permitted 문제 해결 (0) | 2020.03.16 |
No toolchains found in the NDK toolchains, TaskExecutionException, RuntimeException (0) | 2018.10.05 |
커스텀 콜백 ( 리스너) 만들기 (1) | 2018.06.18 |
안드로이드 개발시 유용한 필수? 라이브러리 추천 (Kotlin 업데이트) (0) | 2018.03.28 |