참고자료키 이벤트 ( adb로 키이벤트 주기 )adb devicesadb 설치태블릿 연결 확인adb 명령어기본 형태기기가 하나만 연결되어 있는 경우여러 기기가 연결되어 있는 경우설치된 패키지명 얻기앱 강제종료앱 설치/삭제루트권한 전환앱 설치앱 삭제앱 추출에뮬레이터디바이스 목록 조회명령줄로 에뮬레이터 실행시리얼 포트 지정명령어 모음앱 삭제 후 설치 전체 명령어
참고자료
- pm (패키지매니저) 명령어 : https://developer.android.com/studio/command-line/adb#pm
- am (활동관리자) 명령어 : https://developer.android.com/studio/command-line/adb#am
키 이벤트 ( adb로 키이벤트 주기 )
# react-native dev menu 띄우는 예시 $ adb shell input keyevent 82 # 안드로이드 뒤로가기 버튼 예시 $ adb shell input keyevent 4
0 --> "KEYCODE_UNKNOWN" 1 --> "KEYCODE_MENU" 2 --> "KEYCODE_SOFT_RIGHT" 3 --> "KEYCODE_HOME" 4 --> "KEYCODE_BACK" 5 --> "KEYCODE_CALL" 6 --> "KEYCODE_ENDCALL" 7 --> "KEYCODE_0" 8 --> "KEYCODE_1" 9 --> "KEYCODE_2" 10 --> "KEYCODE_3" 11 --> "KEYCODE_4" 12 --> "KEYCODE_5" 13 --> "KEYCODE_6" 14 --> "KEYCODE_7" 15 --> "KEYCODE_8" 16 --> "KEYCODE_9" 17 --> "KEYCODE_STAR" 18 --> "KEYCODE_POUND" 19 --> "KEYCODE_DPAD_UP" 20 --> "KEYCODE_DPAD_DOWN" 21 --> "KEYCODE_DPAD_LEFT" 22 --> "KEYCODE_DPAD_RIGHT" 23 --> "KEYCODE_DPAD_CENTER" 24 --> "KEYCODE_VOLUME_UP" 25 --> "KEYCODE_VOLUME_DOWN" 26 --> "KEYCODE_POWER" 27 --> "KEYCODE_CAMERA" 28 --> "KEYCODE_CLEAR" 29 --> "KEYCODE_A" 30 --> "KEYCODE_B" 31 --> "KEYCODE_C" 32 --> "KEYCODE_D" 33 --> "KEYCODE_E" 34 --> "KEYCODE_F" 35 --> "KEYCODE_G" 36 --> "KEYCODE_H" 37 --> "KEYCODE_I" 38 --> "KEYCODE_J" 39 --> "KEYCODE_K" 40 --> "KEYCODE_L" 41 --> "KEYCODE_M" 42 --> "KEYCODE_N" 43 --> "KEYCODE_O" 44 --> "KEYCODE_P" 45 --> "KEYCODE_Q" 46 --> "KEYCODE_R" 47 --> "KEYCODE_S" 48 --> "KEYCODE_T" 49 --> "KEYCODE_U" 50 --> "KEYCODE_V" 51 --> "KEYCODE_W" 52 --> "KEYCODE_X" 53 --> "KEYCODE_Y" 54 --> "KEYCODE_Z" 55 --> "KEYCODE_COMMA" 56 --> "KEYCODE_PERIOD" 57 --> "KEYCODE_ALT_LEFT" 58 --> "KEYCODE_ALT_RIGHT" 59 --> "KEYCODE_SHIFT_LEFT" 60 --> "KEYCODE_SHIFT_RIGHT" 61 --> "KEYCODE_TAB" 62 --> "KEYCODE_SPACE" 63 --> "KEYCODE_SYM" 64 --> "KEYCODE_EXPLORER" 65 --> "KEYCODE_ENVELOPE" 66 --> "KEYCODE_ENTER" 67 --> "KEYCODE_DEL" 68 --> "KEYCODE_GRAVE" 69 --> "KEYCODE_MINUS" 70 --> "KEYCODE_EQUALS" 71 --> "KEYCODE_LEFT_BRACKET" 72 --> "KEYCODE_RIGHT_BRACKET" 73 --> "KEYCODE_BACKSLASH" 74 --> "KEYCODE_SEMICOLON" 75 --> "KEYCODE_APOSTROPHE" 76 --> "KEYCODE_SLASH" 77 --> "KEYCODE_AT" 78 --> "KEYCODE_NUM" 79 --> "KEYCODE_HEADSETHOOK" 80 --> "KEYCODE_FOCUS" 81 --> "KEYCODE_PLUS" 82 --> "KEYCODE_MENU" 83 --> "KEYCODE_NOTIFICATION" 84 --> "KEYCODE_SEARCH" 85 --> "TAG_LAST_KEYCODE"
adb devices
adb 설치
adb
는 Android SDK 플랫폼 도구 패키지에 포함되어 있습니다. 이 패키지는 SDK Manager 를 사용하여 다운로드할 수 있으며android_sdk
/platform-tools/
에 설치됩니다. 독립형 Android SDK 플랫폼 도구 패키지를 원하는 경우 여기서 다운로드 할 수 있습니다.
태블릿 연결 확인
에뮬레이터는
emulator-@@@@
이런식으로 확인되므로, 다른 것이 새로 생겼다면 물리 디바이스구나라고 이해하면 된다.# 현재 연결된 디바이스 목록 확인 ( 에뮬레이터, 물리 디바이스 다 나옴 ) $ adb devices List of devices attached 0c00141d15150711ad0 device # <-- 태블릿! emulator-5554 device # <-- 에뮬레이터
adb 명령어
adb shell
또는 adb root
로 쉘에 접속해서 작업해도 되고, 그게 싫다면
adb shell <명령어>
로 해도 됨.기본 형태
# 모든 명령어 확인 $ adb --help # adb 명령어 기본 형식 $ adb [-d | -e | -s serial_number] <command> # adb shell 명령어 기본 형식 $ adb [-d | -e | -s serial_number] shell <command>
기기가 하나만 연결되어 있는 경우
-d
,-e
,-s
옵션 없이 그냥adb <원하는 명령어>
로 명령어를 주면 알아서 디바이스를 식별함
여러 기기가 연결되어 있는 경우
기기를 특정해서 명령해야함. 기기를 특정하는 방법은 아래의 3가지 중 하나로 가능하다.
-d
: use USB device ( 여러 기기가 usb로 연결돼있으면 에러 )
-e
: use TCP/IP device ( 여러 기기가 TCP/IP로 이용이 가능하다면 에러 )
-s <시리얼번호>
: 시리얼과 일치하는 기기를 특정해서 명령어를 내림
설치된 패키지명 얻기
$ adb shell pm list packages # adb -d shell pm list packages | grep algo
앱 강제종료
# 앱 종료 (안전하게 종료시킬 수 있는 프로세스만 종료) $ adb shell am kill <패키지명> # 앱 강제종료 $ adb shell am force-stop <패키지명>
앱 설치/삭제
루트권한 전환
system 권한으로 설치돼 있고, 또 설치해야하므로 root로 먼저 전환한다.
아래의 설치/삭제 명령어가 제대로 동작하지 않는다면, 웬만하면 root가 아니라서 그럼
# 루트로 전환 $ adb root # 루트로 전환 <-- System 권한으로 설치해야 재부팅 시 안사라져 있음..! $ adb shell whoami # shell인지 root인지 확인
앱 설치
# 앱 설치 명령어 $ adb -d install <path_to_apk> or $ adb shell pm install <path_to_apk>
앱 설치 완료 후에는
adb -d shell ls -al /data/app | grep algo
해서 권한이 System인지 확인!앱 삭제
# 실행중인 앱 종료 $ adb shell am force-stop <앱 패키지명> # adb shell am force-stop com.algocaredeviceapp
# 기존에 설치된 앱 삭제 명령어 $ adb uninstall <앱 패키지명> # adb uninstall com.algocaredeviceapp or $ adb shell pm uninstall <앱 패키지명> # 패키지매니저(pm)로도 가능!
앱 추출
$ adb shell pm list packages -f $ adb shell pull <전체경로/base.apk> <저장할 이름.apk>

에뮬레이터
디바이스 목록 조회
$ emulator -list-avds # 결과 예시 Pixel_4_API_32_2
명령줄로 에뮬레이터 실행
$ emulator -avd avd_name [ {-option [value]} … ] or $ emulator @avd_name [ {-option [value]} … ] # 예시 $ emulator -avd Nexus_5X_API_23 -netdelay none -netspeed full
시리얼 포트 지정
시리얼 포트 조회
$ ls /dev/tty.* $ ls /dev/cu.* $ ls /dev/{tty,cu}.* # 위 두개 커맨드 한번에 조회 # 결과 예시 /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial-AD0JLURQ /dev/tty.PaMuSlide /dev/tty.wlan-debug /dev/cu.Bluetooth-Incoming-Port /dev/cu.PaMuSlide /dev/cu.usbserial-AD0JLURQ /dev/cu.wlan-debug
시리얼 포트 통신 내용 관찰
$ screen /dev/tty.[yourSerialPortName] [yourBaudRate] # 예시 $ screen /dev/tty.usbserial-A6004byf 9600
시리얼 포트 연결해서 에뮬레이터 켜기

# 예시 $ emulator -avd Android.2.0.1 -verbose -qemu -serial COM4 $ emulator -avd Pixel_4_API_32_2 -verbose -qemu -serial /dev/tty.usbserial-AD0JLURQ\ emulator -avd Pixel_4_API_32_2 -verbose -qemu -chardev tty,path=/dev/ttyUSB0,id=usbserial-AD0JLURQ -serial /dev/tty.usbserial-AD0JLURQ\
VERBOSE | Starting hostapd main loop. VERBOSE | Android qemu version 30.9.4.0 (build_id 7759208) (CL:N/A) VERBOSE | Starting QEMU main loop VERBOSE | registered 'boot-properties' qemud service VERBOSE | Adding boot property: 'ro.opengles.version' = '196608' VERBOSE | Adding boot property: 'qemu.sf.fake_camera' = 'front' VERBOSE | Adding boot property: 'dalvik.vm.heapsize' = '512m' VERBOSE | Adding boot property: 'qemu.hw.mainkeys' = '0' VERBOSE | Adding boot property: 'qemu.sf.lcd_density' = '440' INFO | Rootcanal has **NOT** been activated. qemu-system-aarch64: -serial /dev/tty.usbserial-AD0JLURQ: 'serial' is not a valid char driver name qemu-system-aarch64: -serial /dev/tty.usbserial-AD0JLURQ: could not connect serial device to character backend '/dev/tty.usbserial-AD0JLURQ' VERBOSE | Done with QEMU main loop WARNING | Unknown tab selected.
명령어 모음
앱 삭제 후 설치 전체 명령어
$ adb devices # 조회되는 지 확인 $ adb -d root # root로 전환 $ adb -d shell am force-stop com.algocaredeviceapp # 실행중인 앱 강제종료 $ adb -d uninstall com.algocaredeviceapp # 기존 앱 삭제 $ adb -d install ./app-release.apk # 앱 설치 ( 설치할 apk 파일이 있는 곳에서 수행해야함 )