실행 중인 각 가상 기기에는 에뮬레이션된 기기 환경을 쿼리하고 제어할 수 있는 콘솔이 제공됩니다. 예를 들어 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 포트 리디렉션과 네트워크 특성, 전화 통신 이벤트를 관리할 수 있습니다.
다음 명령어를 실행하려면 에뮬레이터가 이미 실행 중이어야 합니다. 에뮬레이터 실행에 관한 자세한 내용은 Android Emulator에서 앱 실행과 명령줄에서 에뮬레이터 시작을 참고하세요.
콘솔 세션 시작 및 중지
콘솔에 액세스하여 터미널 창에서 명령어를 입력하려면 telnet을 사용하여 콘솔 포트에 연결하고 인증 토큰을 제공합니다. 콘솔에 OK가 표시될 때마다 명령어를 수락할 준비가 된 것입니다. 일반적인 메시지는 없습니다.
실행 중인 가상 기기의 콘솔에 연결하려면 다음 단계를 따르세요.
터미널 창을 열고 다음 명령어를 입력합니다.
telnet localhost console-port에뮬레이터 창 제목에는 별도의 창에서 실행될 때는 콘솔 포트 번호가 나열되지만 도구 창에서 실행될 때는 번호가 표시되지 않습니다. 예를 들어 콘솔 포트 5554를 사용하는 에뮬레이터의 창 제목은 Pixel8_API_34:5554일 수 있습니다. 또한
adb devices명령어는 실행 중인 가상 기기 및 그 콘솔 포트 번호의 목록을 출력합니다. 자세한 내용은 기기 쿼리하기를 참고하세요.참고: 에뮬레이터는 포트 5554~5585에서 연결을 수신 대기하고 localhost 연결만 허용합니다.
콘솔에 OK가 표시되면
auth auth_token명령어를 입력합니다.콘솔 명령어를 입력하려면 에뮬레이터 콘솔에 인증이 필요합니다.
auth_token은 홈 디렉터리에 있는.emulator_console_auth_token파일의 내용과 일치해야 합니다.이 파일이 없으면
telnet localhost console-port명령어가 파일을 만들며, 이 파일에는 임의로 생성된 인증 토큰이 포함됩니다. 인증을 사용 중지하려면.emulator_console_auth_token파일에서 토큰을 삭제하거나 파일이 없으면 빈 파일을 만듭니다.콘솔에 연결한 후 콘솔 명령어를 입력합니다.
help,help command또는help-verbose를 입력하여 콘솔 명령어 목록을 확인하고 특정 명령어에 관해 알아보세요.콘솔 세션을 종료하려면
quit또는exit를 입력합니다.
세션 예는 다음과 같습니다.
$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
help|h|? Prints a list of commands
help-verbose Prints a list of commands with descriptions
ping Checks if the emulator is alive
automation Manages emulator automation
event Simulates hardware events
geo Geo-location commands
gsm GSM related commands
cdma CDMA related commands
crash Crashes the emulator instance
crash-on-exit Simulates crash on exit for the emulator instance
kill Terminates the emulator instance
restart Restarts the emulator instance
network Manages network settings (ethernet and cellular only)
power Power related commands
quit|exit Quits control session
redir Manages port redirections
sms SMS related commands
avd Controls virtual device execution
qemu QEMU-specific commands
sensor Manages emulator sensors
physics Manages physical model
finger Manages emulator finger print
debug Controls the emulator debug output tags
rotate Rotates the screen clockwise by 90 degrees
screenrecord Records the emulator's display
fold Folds the device
unfold Unfolds the device
multidisplay Configures the multi-display
nodraw turn on/off NoDraw mode. (experimental)
resize-display resize the display resolution to the preset size
virtualscene-image customize virtualscene image for virtulscene camera
proxy manage network proxy server settings
phonenumber set phone number for the device
try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.
파이어 앤 포겟 명령어
세션을 열 필요가 없는 경우 명령어를 실행하고 호출 셸에 제어를 즉시 반환하는 adb emu 단축키를 사용합니다.
adb emu command commandParameter
adb emu로 호출하면 사용 가능한 에뮬레이터에 연결됩니다. 동시에 여러 에뮬레이터를 실행하는 경우 타겟팅하는 특정 에뮬레이터의 시리얼을 전달해야 합니다.
adb -s emulator-serial emu command commandParameter
에뮬레이터 명령어 참조
다음 목록은 매개변수 및 값과 함께 에뮬레이터 콘솔 명령어를 설명합니다.
일반 명령
avd {stop| start| status| name}다음과 같이 가상 기기를 쿼리, 제어, 관리합니다.- stop: 기기 실행을 중지합니다.
- start: 기기 실행을 시작합니다.
- status: 가상 기기 상태를 쿼리하며 상태는 실행 중 또는 중지됨일 수 있습니다.
- name: 가상 기기 이름을 쿼리합니다.
avd snapshot {list| save name| load name| delete name}다음과 같이 스냅샷에 기기 상태를 저장하고 복원합니다.- list: 저장된 모든 스냅샷을 나열합니다.
- save name: 스냅샷을 이름으로 저장합니다.
- 로드 이름: 이름이 지정된 스냅샷을 로드합니다.
- delete name: 이름이 지정된 스냅샷을 삭제합니다.
다음 예에서는
firstactivitysnapshot이름으로 스냅샷을 저장합니다.avd snapshot save firstactivitysnapshotfold: 기기를 접어 더 작은 화면 구성을 표시합니다(기기가 폴더블이고 현재 펼쳐져 있는 경우).
unfold: 기기를 펼쳐 더 큰 화면 구성을 표시합니다(기기가 폴더블이고 현재 접혀 있는 경우).
kill: 가상 기기를 종료합니다.
ping: 가상 기기가 실행 중인지 확인합니다.
rotate: AVD를 시계 반대 방향으로 45도씩 회전합니다.
에뮬레이터 비정상 종료
crash: 앱 실행 중에 에뮬레이터가 비정상 종료됩니다.
crash-on-exit: 앱이 종료될 때 에뮬레이터가 비정상 종료됩니다.
디버그 태그
debug tags ...: 에뮬레이터의 특정 부분에서 디버그 메시지를 사용 설정 또는 사용 중지합니다. 태그 매개변수는
emulator -help-debug-tags를 실행할 때 표시되는 디버그 태그 목록의 값이어야 합니다.-help-debug-tags옵션에 관한 자세한 내용은 일반적으로 사용되는 옵션 표를 참고하세요. 다음 예는 radio 태그를 사용 설정합니다.debug radio
포트 리디렉션
redir list: 현재 포트 리디렉션을 나열합니다.
redir add protocol:host-port:guest-port다음과 같이 새 포트 리디렉션을 추가합니다.- protocol: tcp 또는 udp여야 합니다.
- host-port: 호스트에서 열 포트 번호입니다.
- guest-port: 에뮬레이터에서 데이터를 라우팅할 포트 번호입니다.
redir del protocol:host-port포트 리디렉션을 삭제합니다.- protocol: tcp 또는 udp여야 합니다.
- host-port: 호스트에서 열 포트 번호입니다.
지리적 위치
에뮬레이터에 GPS 수정사항을 전송해 에뮬레이터 내에서 실행 중인 앱에 보고된 지리적 위치를 설정합니다.
가상 기기가 실행되는 즉시 다음 geo 명령어 중 하나를 실행할 수 있습니다. 에뮬레이터는 가상 위치 제공자를 만들어 입력한 위치를 설정합니다. 이 제공자는 앱에서 설정한 위치 리스너에 응답하고 위치를 LocationManager에 제공합니다. 앱은 LocationManager.getLastKnownLocation("gps")를 호출하는 방식으로 위치 관리자에 쿼리하여 에뮬레이션된 기기의 현재 GPS 수정사항을 얻을 수 있습니다.
geo fix longitude latitude [altitude] [satellites] [velocity]: 에뮬레이터에 간단한 GPS 수정사항을 보냅니다. 경도와 위도를 십진수로 지정합니다. 1에서 12까지의 숫자를 사용하여 위치를 파악하는 데 사용할 위성 수를 지정하고 고도를 미터 단위로, 속도를 노트 단위로 지정합니다.
geo nmea sentence: 에뮬레이션된 GPS 모뎀에서 보낸 것처럼 NMEA 0183 문장을 에뮬레이션된 기기로 보냅니다. '$GP'로 문장을 시작합니다. 현재 '$GPGGA' 및 '$GPRCM' 문장만 지원됩니다. 다음 예는 GPS 수신기의 시간, 위치, 수정 데이터를 가져오는 GPGGA (위성 위치 확인 시스템 수정 데이터) 문장입니다.
geo nmea $GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
가짜 하드웨어 이벤트
에뮬레이터 콘솔의 하드웨어 이벤트 하위 시스템을 사용하면 기기와의 거의 모든 물리적 상호작용을 시뮬레이션할 수 있습니다. 여기에는 물리적 버튼, 화면 터치/동작, 로터리 다이얼, 조이스틱 입력, 하드웨어 스위치가 포함됩니다.
event types: 모든 가짜 이벤트 유형을 나열합니다. 코드가 있는 이벤트의 경우 코드 수는 오른쪽의 괄호 안에 나열됩니다. 출력 예시:
event types event <type> can be an integer or one of the following aliases: EV_SYN EV_KEY (405 code aliases) EV_REL (2 code aliases) EV_ABS (27 code aliases) EV_MSC EV_SW (4 code aliases) EV_LED EV_SND EV_REP EV_FF EV_PWR EV_FF_STATUS EV_MAX OKevent send types [types ...]: 하나 이상의 가짜 이벤트 유형을 전송합니다.
event codes type: 지정된 가짜 이벤트 유형의 이벤트 코드를 나열합니다.
event send type[:code]:[value] [...]: 선택적 코드 및 코드 값으로 하나 이상의 가짜 이벤트를 전송합니다.
EV_KEY - 키 코드 참조
EV_KEY 이벤트 유형은 버튼 누르기 및 떼기를 시뮬레이션하는 데 사용됩니다. 다음 표에서는 지원되는 방대한 키 코드 목록을 논리적 카테고리로 나눕니다. 각 키 코드의 경우 1 값을 디스패치하면 누르기를 시뮬레이션하고 0 값을 디스패치하면 떼기를 시뮬레이션합니다. 2 값은 키 반복을 나타냅니다.
하위 표 A: Android 시스템 키
| 코드 | 설명 |
|---|---|
KEY_HOME |
홈 버튼 트리거 |
KEY_BACK |
뒤로 버튼 트리거 |
KEY_MENU |
메뉴 (더보기) 버튼 |
KEY_POWER |
전원 버튼 (누르기/길게 누르기) |
KEY_VOLUMEUP |
볼륨 업 버튼 트리거 |
KEY_VOLUMEDOWN |
볼륨 다운 버튼 트리거 |
KEY_CAMERA |
실제 카메라 촬영 버튼 |
KEY_FOCUS |
카메라 자동 초점 셔터 |
KEY_SEARCH |
검색 버튼 트리거 |
KEY_SLEEP |
수면 명령 트리거 |
KEY_WAKEUP |
절전 모드 해제 명령어 트리거 |
KEY_NOTIFICATION |
알림 창 열기 |
KEY_MUTE |
시스템 오디오 출력 음소거 |
KEY_MICMUTE |
마이크 입력 음소거 |
KEY_BRIGHTNESSDOWN |
디스플레이 밝기 줄이기 |
KEY_BRIGHTNESSUP |
디스플레이 밝기 높이기 |
KEY_PHONE |
기본 전화 앱 열기 |
KEY_SEND |
전화 걸기 또는 시작하기 |
KEY_HEADSETHOOK |
헤드셋 후크 (응답/종료) |
KEY_SCREEN |
화면 보호기 활성화 명령 |
KEY_CONFIG |
구성 시스템 메뉴 |
KEY_SWITCHVIDEOMODE |
시스템 동영상 모드 전환 |
KEY_KBDILLUMTOGGLE |
키보드 백라이트 전환 |
하위 표 B: 미디어 및 재생 컨트롤
| 코드 | 설명 |
|---|---|
KEY_PLAYPAUSE |
재생 및 일시중지 상태 전환 |
KEY_PLAY |
미디어 재생 시작 |
KEY_PAUSECD |
CD 재생 일시중지 |
KEY_STOPCD |
CD 재생 중지 |
KEY_NEXTSONG |
다음 트랙으로 건너뛰기 |
KEY_PREVIOUSSONG |
이전 트랙으로 건너뛰기 |
KEY_REWIND |
활성 트랙 되감기 |
KEY_FASTFORWARD |
활성 트랙 빨리 감기 |
KEY_RECORD |
레코드 트리거 명령어 |
KEY_SHUFFLE |
셔플 재생 전환 |
KEY_REPEAT |
반복 재생 전환 |
KEY_MEDIA |
미디어 키 트리거 |
하위 테이블 C: 탐색 및 일반 키보드
| 코드 | 설명 |
|---|---|
KEY_UP |
D패드 위쪽 방향 |
KEY_DOWN |
D패드 아래쪽 방향 |
KEY_LEFT |
D패드 왼쪽 방향 |
KEY_RIGHT |
D패드 오른쪽 방향 |
KEY_PAGEUP |
페이지 위로 탐색 |
KEY_PAGEDOWN |
페이지 아래로 탐색 |
KEY_INSERT |
키 트리거 삽입 |
KEY_DELETE |
키 트리거 삭제 |
KEY_ENTER |
Enter 키 트리거 |
KEY_ESC |
Esc 키 트리거 |
KEY_TAB |
Tab 키 트리거 |
KEY_SPACE |
스페이스바 키 트리거 |
KEY_BACKSPACE |
Backspace 키 트리거 |
KEY_CLEAR |
입력 버퍼 지우기 |
KEY_CANCEL |
진행 중인 작업 취소 |
KEY_OK |
선택 확인/확인 |
KEY_SELECT |
항목 선택 트리거 |
KEY_GOTO |
지정된 장소로 이동 |
KEY_HELP |
도움말 컨텍스트 액세스 |
하위 표 D: 영숫자 및 키패드 기호
- 표준 알파벳 문자:
KEY_A~KEY_Z(26개 코드) - 숫자 키패드 키:
KEY_1~KEY_0(코드 10개)
| 코드 | 문자 기호 |
|---|---|
KEY_COMMA |
, |
KEY_DOT |
. |
KEY_SLASH |
/ |
KEY_SEMICOLON |
; |
KEY_APOSTROPHE |
' |
KEY_GRAVE |
\` |
KEY_MINUS |
- |
KEY_EQUAL |
= |
KEY_LEFTBRACE |
[ |
KEY_RIGHTBRACE |
] |
KEY_BACKSLASH |
\ |
KEY_KPASTERISK |
* (숫자 키패드) |
KEY_KPPLUS |
+ (숫자 키패드) |
KEY_KPMINUS |
- (숫자 키패드) |
KEY_KPDOT |
. (숫자 키패드) |
KEY_KPSLASH |
/ (숫자 키패드) |
KEY_KPENTER |
Enter (숫자 키패드) |
KEY_KPEQUAL |
= (숫자 키패드) |
KEY_KPCOMMA |
, (숫자 키패드) |
KEY_KPJPCOMMA |
, (일본어 레이아웃) |
KEY_KPLEFTPAREN |
( (숫자 키패드) |
KEY_KPRIGHTPAREN |
) (숫자 키패드) |
KEY_KPPLUSMINUS |
± (숫자 키패드) |
하위 표 E: 특수키 및 기능 키
- 표준 기능 키:
KEY_F1~KEY_F24(24개 코드)
| 코드 | 설명 |
|---|---|
KEY_LEFTSHIFT |
왼쪽 Shift 키보드 수정자 |
KEY_RIGHTSHIFT |
오른쪽 Shift 키보드 수정자 |
KEY_LEFTCTRL |
왼쪽 Control 키보드 수정자 |
KEY_RIGHTCTRL |
오른쪽 Control 키보드 수정자 |
KEY_LEFTALT |
왼쪽 Alt 키보드 특수키 |
KEY_RIGHTALT |
오른쪽 Alt 키보드 특수키 |
KEY_LEFTMETA |
왼쪽 Meta/Command 키 |
KEY_RIGHTMETA |
오른쪽 Meta/Command 키 |
KEY_CAPSLOCK |
Caps Lock 키보드 전환 |
KEY_NUMLOCK |
Num Lock 키보드 전환 |
KEY_SCROLLLOCK |
Scroll Lock 키보드 전환 |
KEY_COMPOSE |
Compose 문자 도우미 |
KEY_FN |
물리적 키보드 FN 키 |
KEY_FN_ESC |
기능 키 조합 |
KEY_FN_1 |
특수 기능 단축키 1 |
KEY_FN_2 |
특수 기능 단축키 2 |
KEY_FN_D |
특수 기능 단축키 D |
KEY_FN_E |
특수 기능 단축키 E |
KEY_FN_F |
특수 기능 단축키 F |
KEY_FN_S |
특수 기능 단축키 S |
KEY_FN_B |
특수 기능 단축키 B |
하위 표 F: 게임패드 및 조이스틱
| 코드 | 설명 |
|---|---|
BTN_A/BTN_B/BTN_C |
컨트롤러 전면 버튼 A/B/C |
BTN_X/BTN_Y/BTN_Z |
컨트롤러 전면 버튼 X/Y/Z |
BTN_START |
게임패드 시작 메뉴 버튼 |
BTN_SELECT |
게임패드 선택 버튼 |
BTN_MODE |
컨트롤러 모드 전환 |
BTN_TL/BTN_TR |
왼쪽 / 오른쪽 어깨 범퍼 |
BTN_TL2/BTN_TR2 |
왼쪽 / 오른쪽 아날로그 트리거 |
BTN_THUMBL/BTN_THUMBR |
왼쪽 / 오른쪽 스틱 클릭 |
BTN_DPAD_UP |
게임패드 D패드 위쪽 트리거 |
BTN_DPAD_DOWN |
게임패드 D패드 아래쪽 트리거 |
BTN_DPAD_LEFT |
게임패드 D패드 왼쪽 트리거 |
BTN_DPAD_RIGHT |
게임패드 D패드 오른쪽 트리거 |
BTN_THUMB |
조이스틱 기본 엄지 트리거 |
BTN_TOP/BTN_TOP2 |
조이스틱 상단 버튼 |
BTN_PINKIE |
조이스틱 새끼손가락 버튼 트리거 |
BTN_BASE~_BASE6 |
조이스틱 플랫폼 기본 버튼 |
BTN_DEAD |
비활성 게임패드 데드존 플래그 |
BTN_TRIGGER |
물리적 조이스틱 핸드 트리거 |
BTN_JOYSTICK |
일반 조이스틱 입력 코드 |
하위 표 G: 마우스, 터치, 스타일러스 입력
| 코드 | 설명 |
|---|---|
BTN_MOUSE |
일반 마우스 포인터 이벤트 |
BTN_LEFT |
마우스 왼쪽 버튼 클릭 |
BTN_RIGHT |
마우스 오른쪽 버튼 클릭 |
BTN_MIDDLE |
가운데 스크롤 휠 클릭 |
BTN_SIDE |
탐색 측면 키 트리거 |
BTN_EXTRA |
추가 마우스 버튼 트리거 |
BTN_FORWARD |
브라우저 탐색 앞으로 클릭 |
BTN_BACK |
뒤로 브라우저 탐색 클릭 |
BTN_TASK |
시스템 작업 전환기 키 |
BTN_TOUCH |
화면 물리적 접촉 감지됨 |
BTN_STYLUS |
활성 스타일러스 펜 근접 |
BTN_STYLUS2 |
스타일러스의 보조 배럴 스위치 |
BTN_TOOL_PEN |
스타일러스 펜 도구 식별자 |
BTN_TOOL_RUBBER |
스타일러스 지우개 도구 식별자 |
BTN_TOOL_BRUSH |
페인터 브러시 도구 식별자 |
BTN_TOOL_PENCIL |
제도용 연필 도구 식별자 |
BTN_TOOL_AIRBRUSH |
에어브러시 페인트 도구 식별자 |
BTN_TOOL_FINGER |
터치 스크린 손가락 접촉 |
BTN_TOOL_MOUSE |
외부 마우스 도구 식별자 |
BTN_TOOL_LENS |
광학 돋보기 렌즈 도구 |
BTN_TOOL_DOUBLETAP |
동작 더블 탭 속도 플래그 |
BTN_TOOL_TRIPLETAP |
동작 세 번 탭 속도 플래그 |
하위 표 H: 애플리케이션 바로가기
| 코드 | 타겟 작업 |
|---|---|
KEY_WWW |
기본 웹브라우저를 실행합니다. |
KEY_MAIL |
기본 이메일 클라이언트를 엽니다. |
KEY_BOOKMARKS |
브라우저 북마크 목록을 엽니다. |
KEY_CALC |
계산기 유틸리티를 엽니다. |
KEY_FILE |
로컬 파일 탐색기를 엽니다. |
KEY_EDIT |
문서 수정 트리거 |
KEY_NEW |
문서 새 트리거 만들기 |
KEY_OPEN |
문서 열기 트리거 |
KEY_SAVE |
파일 저장 작업 트리거 |
KEY_CLOSE |
파일 닫기 작업 트리거 |
KEY_PRINT |
파일 인쇄 작업 트리거 |
KEY_COPY |
클립보드 버퍼 복사 작업 |
KEY_PASTE |
클립보드 버퍼 삽입 작업 |
KEY_CUT |
클립보드 버퍼 잘라내기 작업 |
KEY_UNDO |
클립보드 버퍼 실행취소 작업 |
KEY_REDO |
클립보드 버퍼 다시 실행 작업 |
KEY_CANCEL |
버퍼 취소 프로세스 트리거 |
KEY_FIND |
문서 검색 유틸리티 |
KEY_REFRESH |
문서 새로고침 유틸리티 |
KEY_EXIT |
문서 닫기 유틸리티 |
KEY_DOCUMENTS |
시스템 문서 포털 실행 |
KEY_HOMEPAGE |
홈페이지 브라우저를 실행합니다. |
KEY_FAVORITES |
브라우저 즐겨찾기 포털을 엽니다. |
KEY_CHAT |
인스턴트 메신저를 실행합니다. |
KEY_EMAIL |
보조 이메일 출시 트리거 |
KEY_FINANCE |
주식/금융 유틸리티 열기 |
KEY_SPORT |
스포츠 추적 유틸리티 열기 |
KEY_SHOP |
디지털 쇼핑 포털 열기 |
KEY_PLAYER |
기본 미디어 플레이어 열기 |
KEY_MP3 |
기본 MP3 플레이어 열기 |
KEY_TEXT |
기본 텍스트 편집기 열기 |
KEY_LIST |
체크리스트 유틸리티 열기 |
KEY_MEMO |
메모장 / 메모 유틸리티 열기 |
KEY_CALENDAR |
캘린더 / 일정 포털을 엽니다. |
KEY_DIRECTORY |
시스템 주소 디렉터리를 엽니다. |
KEY_COMPUTER |
사양 탐색기를 엽니다. |
KEY_TV/KEY_TV2 |
텔레비전 포털을 실행합니다. |
KEY_RADIO |
라디오 유틸리티를 실행합니다. |
KEY_CD/KEY_DVD |
광학 드라이브 리더를 활성화합니다. |
KEY_AUDIO/KEY_VIDEO |
미디어 사양에 액세스 |
KEY_TUNER |
수신기/튜너를 구성합니다. |
KEY_SAT/KEY_SAT2 |
위성 피드를 구성합니다. |
KEY_TAPE |
테이프 미디어 데크 재생 |
KEY_VCR |
VCR 플레이어 피드 재생 |
KEY_VCR2 |
VCR 2 플레이어 피드 재생 |
KEY_AUX |
보조 미디어 포트 입력 |
KEY_SETUP |
설정 구성 메뉴 |
KEY_PROG1~_PROG4 |
사용자 정의 프로그램 키 |
KEY_ZOOM |
표시 영역 확대/축소 전환 |
KEY_MODE |
표시 영역 모드 선택 |
KEY_KEYBOARD |
가상 키보드 표시/숨기기 |
KEY_LANGUAGE |
오디오 트랙 언어 전환 |
KEY_TITLE |
미디어 제목 옵션 열기 |
KEY_SUBTITLE |
자막 인터페이스 전환 |
KEY_ANGLE |
동영상 카메라 각도 변경 |
KEY_EPG |
전자 프로그램 가이드 열기 |
KEY_PVR |
개인 동영상 녹화기 열기 |
KEY_MHP |
멀티미디어 홈 플랫폼 열기 |
KEY_CHANNEL |
TV 튜너 채널 열기 |
KEY_CHANNELUP |
TV 채널 위로 조정 |
KEY_CHANNELDOWN |
TV 채널을 아래로 조정 |
KEY_RED |
빨간색 대화형 버튼 |
KEY_GREEN |
녹색 대화형 버튼 |
KEY_YELLOW |
노란색 대화형 버튼 |
KEY_BLUE |
파란색 대화형 버튼 |
KEY_FIRST |
첫 번째 항목 옵션 선택 |
KEY_LAST |
마지막 항목 옵션 선택 |
KEY_NEXT |
다음 트랙 옵션 선택 |
KEY_PREVIOUS |
이전 트랙 옵션 선택 |
KEY_RESTART |
미디어 트랙 루프 다시 시작 |
KEY_SLOW |
슬로 모션 재생 옵션 |
KEY_AB |
A-B 반복 시퀀스 루프 |
KEY_PLAYCD |
CD 데크 재생 명령어 |
KEY_PAUSECD |
CD 데크 일시중지 명령 |
KEY_STOPCD |
CD 데크 중지 명령어 |
KEY_DIGITS |
디지털 키패드 입력 명령 |
KEY_TEEN |
키패드 청소년 값 옵션 |
KEY_TWEN |
키패드 twen 값 옵션 |
KEY_DEL_EOL |
행 끝까지 삭제 버퍼 |
KEY_DEL_EOS |
화면 버퍼 끝까지 삭제 |
KEY_INS_LINE |
새 줄 버퍼 삽입 |
KEY_BRL_DOT1~_DOT8 |
점자 디스플레이 버튼 입력 |
KEY_VOICECOMMAND |
음성 어시스턴트 앱을 실행합니다. |
KEY_SELECTIVE_SCREEN |
지역 화면 자르기를 트리거합니다. |
KEY_BATTERY |
배터리 알림을 쿼리합니다. |
KEY_STAR/KEY_SHARP |
전화 키패드 기호 |
KEY_PLUS |
전화 키패드 더하기 기호 |
KEY_INFO |
정보 패널 오버레이 표시 |
KEY_TIME |
현재 시계 시간 표시 |
KEY_VENDOR |
공급업체 사양 쿼리 |
KEY_ARCHIVE |
로컬 보관 파일 유틸리티를 엽니다. |
KEY_PROGRAM |
프로그램 매개변수를 구성합니다. |
KEY_POWER2 |
대체 백업 전원을 트리거합니다. |
EV_ABS - 절대 모션 이벤트
EV_ABS 이벤트 유형은 정확한 터치, 드래그 앤 드롭 동작, 멀티터치 핀치 동작, 조이스틱 조정을 시뮬레이션하는 데 중요합니다. 지도 아래의 절대 좌표는 기본 물리적 화면 해상도에 직접 매핑됩니다.
| 코드 | 좌표 범위 | 설명 |
|---|---|---|
ABS_MT_TRACKING_ID |
-1 또는 ≥0 |
추적 ID, -1 터치 종료 |
ABS_MT_POSITION_X |
0~1767 |
X 좌표 (Pixel Fold) |
ABS_MT_POSITION_Y |
0~2207 |
Y 좌표 (Pixel Fold) |
ABS_MT_TOUCH_MAJOR |
픽셀 | 터치 영역 기본 축 너비 |
ABS_MT_TOUCH_MINOR |
픽셀 | 터치 영역 단축 너비 |
ABS_MT_WIDTH_MAJOR |
픽셀 | 도구 주축 너비 |
ABS_MT_WIDTH_MINOR |
픽셀 | 도구 소축 너비 |
ABS_MT_ORIENTATION |
0~255 |
접촉 방향 각도 |
ABS_MT_PRESSURE |
0~255 |
접촉력 크기 |
ABS_MT_DISTANCE |
mm | 화면에서 호버링하는 거리 |
ABS_MT_TOOL_TYPE |
0~2 |
0=finger, 1=pen, 2=pencil |
ABS_MT_BLOB_ID |
정수 | 연락처 blob 식별자 |
ABS_MT_TOOL_X |
픽셀 | 도구 X 위치 좌표 |
ABS_MT_TOOL_Y |
픽셀 | 도구 Y 위치 좌표 |
ABS_MT_SLOT |
0~N |
활성 슬롯 (프로토콜 B) |
ABS_X/_Y/_Z |
아날로그 | 조이스틱 좌표 축 |
ABS_RX/_RY/_RZ |
아날로그 | 조이스틱 회전 축 |
ABS_THROTTLE/_BRAKE |
아날로그 | 페달 및 조향 제어 |
ABS_HAT0X/_HAT0Y |
-1/0/1 |
D패드 모자 및 POV 스위치 |
ABS_PRESSURE |
0~255 |
스타일러스 / 포인터 힘 수준 |
ABS_DISTANCE |
mm | 호버 거리 (스타일러스 펜) |
ABS_TILT_X/_TILT_Y |
도 | 스타일러스 기울기 각도 |
ABS_VOLUME |
아날로그 | 컨트롤러 볼륨 수준 |
Android 터치 상호작용은 멀티터치 (MT) 프로토콜에 의해 구동됩니다. 최신 에뮬레이터는 프로토콜 A (동기화 표시로 구분된 연락처 패킷을 전송하는 스테이트리스)와 프로토콜 B (전용 추적 슬롯에 연락처를 할당하는 스테이트풀)를 모두 구현합니다. 프로토콜 B를 사용하면 핀치 투 줌과 같은 동작을 위해 여러 동시 터치를 효율적으로 추적할 수 있습니다.
EV_REL 및 EV_SW - 동작 및 하드웨어 스위치
EV_REL 이벤트 카테고리는 상대 포인터 또는 좌표 변경사항을 관리하며, 이는 주로 외부 마우스 움직임이나 스크롤 휠을 에뮬레이션하는 데 사용됩니다. EV_SW 이벤트 카테고리는 플립형 스마트폰이나 태블릿이 접혀 있는지, 외부 오디오 하드웨어가 삽입되어 있는지 등 실제 기기 스위치를 관리합니다.
| 코드 | 값 | 설명 |
|---|---|---|
REL_X |
델타 | 가로 커서 이동 |
REL_Y |
델타 | 세로 커서 이동 |
SW_LID |
0/1 |
노트북 덮개 상태 (0=열림, 1=닫힘) |
SW_TABLET_MODE |
0/1 |
태블릿 모드 상태 (0=사용 안함, 1=활성) |
SW_HEADPHONE_INSERT |
0/1 |
헤드폰 잭 상태 (0=Out, 1=In) |
SW_MICROPHONE_INSERT |
0/1 |
마이크 잭 상태 (0=출력, 1=입력) |
명령어 디스패치 구문
이러한 코드를 디스패치하려면 유형, 코드, 값이 콜론으로 구분된 콘솔 명령어를 포맷하세요. 단일 문자열에서 여러 좌표 변경사항을 대기열에 추가할 수 있습니다. 중요한 점은 에뮬레이터 프레임워크가 이러한 입력을 함께 번들로 묶고 처리해야 함을 나타내기 위해 항상 최종 동기화 표시(EV_SYN:0:0)를 추가해야 한다는 것입니다.
이벤트 스크립팅 및 동작 예
Telnet을 사용하면 멀티파트 매개변수를 전송할 수 있으므로 실제 물리적 동작 시퀀스를 시뮬레이션할 수 있습니다. 아래는 호스트 콘솔에서 동작을 자동화하기 위한 원시 이벤트 스크립트 구조입니다.
화면 탭 시뮬레이션
타겟 좌표에서 완전한 화면 탭을 실행하려면 추적 ID를 할당하고, 화면에서 X 및 Y 좌표를 지정하고, 접촉 터치를 시뮬레이션하고, 동기화한 다음, 해제합니다.
# Press down at coordinate (400, 800) and sync
event send EV_ABS:ABS_MT_TRACKING_ID:1
OK
event send EV_ABS:ABS_MT_POSITION_X:400
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Lift finger up and sync
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
세로 스크롤 (스와이프) 시뮬레이션
스크롤 스와이프 동작을 실행하려면 시작 좌표에서 접촉을 누르고 중간 이동 좌표 프레임을 전송한 후 끝에서 해제합니다.
# Finger touch down at start coordinate (500, 1600)
event send EV_ABS:ABS_MT_TRACKING_ID:2
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1600
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Move coordinates upward dynamically
event send EV_ABS:ABS_MT_POSITION_Y:1200
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:800
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_POSITION_Y:400
OK
event send EV_SYN:0:0
OK
# Finger release at coordinate (500, 400)
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
손가락을 모으거나 펼쳐 확대/축소 동작 시뮬레이션
두 손가락 확대/축소를 트리거하려면 활성 MT 슬롯 (0과 1)을 사용하여 서로 멀어지는 동시 터치 좌표 두 개를 추적하고 조정합니다.
# Finger 1 down at (500, 1000) using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:10
OK
event send EV_ABS:ABS_MT_POSITION_X:500
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_KEY:BTN_TOUCH:1
OK
event send EV_SYN:0:0
OK
# Finger 2 down at (600, 1000) using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:11
OK
event send EV_ABS:ABS_MT_POSITION_X:600
OK
event send EV_ABS:ABS_MT_POSITION_Y:1000
OK
event send EV_SYN:0:0
OK
# Fingers slide apart from each other
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_POSITION_X:300
OK
event send EV_SYN:0:0
OK
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_POSITION_X:800
OK
event send EV_SYN:0:0
OK
# Lift Finger 1 using slot 0
event send EV_ABS:ABS_MT_SLOT:0
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_SYN:0:0
OK
# Lift Finger 2 using slot 1
event send EV_ABS:ABS_MT_SLOT:1
OK
event send EV_ABS:ABS_MT_TRACKING_ID:-1
OK
event send EV_KEY:BTN_TOUCH:0
OK
event send EV_SYN:0:0
OK
헤드폰 연결 전환 시뮬레이션
오디오 라우팅 스위치를 테스트하기 위해 헤드폰 잭 삽입 또는 제거를 시뮬레이션합니다. 1 값은 잭 삽입을 나타내고 0은 헤드폰 제거를 나타냅니다.
# Simulate headphones plugged in
event send EV_SW:SW_HEADPHONE_INSERT:1 EV_SYN:0:0
OK
# Simulate headphones unplugged
event send EV_SW:SW_HEADPHONE_INSERT:0 EV_SYN:0:0
OK
실제 기기에서 콘솔 이벤트 코드 검색
맞춤 작업 또는 버튼 동작의 정확한 이벤트 구문 시퀀스를 알아보려면 adb shell을 통해 연결하고 getevent 진단 유틸리티를 실행하세요. 에뮬레이터 GUI와 상호작용하면 콘솔에 정확한 이벤트 코드, 유형, 위치가 출력됩니다.
# Run getevent to monitor input events dynamically
adb shell getevent -lt
/dev/input/event12: EV_KEY KEY_POWER DOWN
/dev/input/event12: EV_SYN SYN_REPORT 00000000
/dev/input/event12: EV_KEY KEY_POWER UP
/dev/input/event12: EV_SYN SYN_REPORT 00000000
- 이벤트 문자 메시지: 키 누르기를 시뮬레이션하는 문자열을 전송합니다. 메시지는 UTF-8 문자열이어야 합니다. 유니코드 게시물이 현재 기기 키보드에 따라 역매핑되며 지원되지 않는 문자는 자동으로 삭제됩니다.
전원 상태 제어
전원 표시: 배터리 및 충전기 상태를 표시합니다.
power ac {on| off}: AC 충전 상태를 on 또는 off로 설정합니다.
전원 상태 {unknown| charging| discharging| not-charging| full}: 지정된 대로 배터리 상태를 변경합니다.
power present {true| false}: 배터리 유무 상태를 설정합니다.
power health {unknown| good| overheat| dead| overvoltage| failure}: 배터리 상태를 설정합니다.
배터리 용량 비율: 배터리 잔량 상태를 0에서 100 사이의 백분율로 설정합니다.
네트워크 연결 상태 (이더넷 및 모바일 데이터만 해당)
network status: 네트워크 상태와 현재 지연 및 속도 특성을 확인합니다.
network delay latency에뮬레이션된 네트워크 지연 시간을 변경합니다.에뮬레이터를 사용하면 다양한 네트워크 지연 시간 수준을 시뮬레이션할 수 있으므로 실제 실행 조건에 더 일반적인 환경에서 앱을 테스트할 수 있습니다. 에뮬레이터 시작 시 지연 시간 수준 또는 범위를 설정하거나 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 지연 시간을 변경할 수 있습니다.
네트워크 지연 시간 형식은 다음 중 하나입니다 (숫자는 밀리초).
네트워크 지연 시간 형식:
gprs: GPRS로 최소 150, 최대 550의 지연 시간 범위를 사용합니다.
edge: EDGE/EGPRS로 최소 80, 최대 400의 지연 시간 범위를 사용합니다.
umts: UMTS/3G로 최소 35, 최대 200의 지연 시간 범위를 사용합니다.
none: 지연 시간이 없습니다.
num: 지정된 지연 시간을 밀리초 단위로 에뮬레이션합니다.
min:max: 지정된 지연 시간 범위를 에뮬레이션합니다.
에뮬레이터 시작 시 지연 시간을 설정하려면 지원되는 지연 시간 값과 함께
-netdelay에뮬레이터 옵션을 사용합니다. 예:emulator -netdelay gprs emulator -netdelay 40,100에뮬레이터가 실행되는 동안 네트워크 지연을 변경하려면 콘솔에 연결하고
network delay명령어를 사용합니다.network delay gprs network delay 40 100network speed speed에뮬레이터를 사용하면 다양한 네트워크 전송 속도를 시뮬레이션할 수 있습니다. 에뮬레이터 시작 시 전송 속도 또는 범위를 설정하거나 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 속도를 변경할 수 있습니다.네트워크 속도 형식은 다음 중 하나입니다 (숫자는 킬로비트/초).
네트워크 속도 형식:
gsm: GSM/CSD로 14.4 업로드, 14.4 다운로드 속도를 사용합니다.
hscsd: HSCSD로 14.4 업로드, 43.2 다운로드 속도를 사용합니다.
gprs: GPRS로 40.0 업로드, 80.0 다운로드 속도를 사용합니다.
edge: EDGE/EGPRS로 118.4 업로드, 236.8 다운로드 속도를 사용합니다.
umts: UMTS/3G로 128.0 업로드, 1920 다운로드 속도를 사용합니다.
hsdpa: HSDPA. 348.0 업로드, 14400.0 다운로드 속도를 사용합니다.
lte: LTE로 58,000 업로드, 173,000 다운로드 속도를 사용합니다.
evdo: EVDO로 75,000 업로드, 280,000 다운로드 속도를 사용합니다.
full: 무제한 속도지만 컴퓨터의 연결 속도에 따라 달라집니다.
num: 업로드 및 다운로드에 모두 사용되는 정확한 속도를 킬로비트/초로 설정합니다.
up:down: 업로드 및 다운로드의 정확한 속도를 각각 킬로비트/초로 설정합니다.
에뮬레이터 시작 시 네트워크 속도를 설정하려면
-netspeed에뮬레이터 옵션을 사용합니다. 예:emulator -netspeed gsm @Pixel_API_26 emulator -netspeed 14.4,80 @Pixel_API_26에뮬레이터가 실행되는 동안 네트워크 속도를 변경하려면 콘솔에 연결하고
network speed명령어를 사용합니다.network speed 14.4 80network capture {start| stop} file패킷을 파일로 전송합니다. 다음 목록은 매개변수 및 매개변수 값을 설명합니다.참고: Android Emulator 36.5 이상에서는 기본적으로 netsim에서 Wi-Fi 연결 트래픽을 처리합니다. 네트워크 캡처 콘솔 명령은 QEMU slirp 스택을 통해 라우팅된 기존 모바일/WAN 트래픽만 캡처합니다. 최신 에뮬레이터 버전에서 Wi-Fi, 블루투스 또는 고급 네트워크 패킷을 캡처하려면 고급 에뮬레이터 네트워킹 가이드의 네트워크 트래픽 캡처를 참고하세요.
start file: 네트워크 패킷 캡처를 시작합니다. 보안을 위해 파일은 베어 파일 이름이어야 합니다 (
/와 같은 경로 구분자 없음,..없음). 패킷 캡처 파일은 AVD의 콘텐츠 디렉터리 아래console_out/폴더에 저장됩니다 (예:~/.android/avd/avd_name.avd/console_out/file).stop file: 지정된 파일로 패킷 전송을 중지합니다.
전화 에뮬레이션
Android Emulator에는 에뮬레이션된 자체 GSM 및 CDMA 모뎀이 포함되어 있어 에뮬레이터에서 전화 기능을 시뮬레이션할 수 있습니다. 예를 들어 GSM을 사용하면 인바운드 전화 통화를 시뮬레이션하고 데이터 연결을 설정 및 종료할 수 있습니다. CDMA를 사용하면 구독 소스와 기본 로밍 목록을 제공합니다. Android 시스템은 실제 통화와 아주 동일한 방식으로 시뮬레이션된 통화를 처리합니다. 에뮬레이터는 통화 오디오를 지원하지 않습니다.
gsm {call| accept| cancel| busy} phonenumbergsm 매개변수는 다음과 같습니다.- call: 전화번호에서 걸려오는 수신 전화 통화를 시뮬레이션합니다.
- accept: 전화번호에서 걸려오는 수신 전화를 수락하고 통화 상태를 활성으로 변경합니다. 현재 상태가 waiting 또는 held일 때만 통화 상태를 active로 변경할 수 있습니다.
- cancel: phonenumber에서 걸려오는 수신 전화 또는 phonenumber로 거는 발신 전화를 종료합니다.
- busy: 전화번호로 거는 발신 전화를 종료하고 통화 상태를 busy로 변경합니다. 현재 상태가 waiting일 때만 통화 상태를 busy로 변경할 수 있습니다.
gsm {data| voice} state데이터 상태 명령어는 GPRS 데이터 연결 상태를 변경하고 음성 상태 명령어는 GPRS 음성 연결 상태를 다음과 같이 변경합니다.- unregistered: 사용 가능한 네트워크가 없습니다.
- home: 로컬 네트워크가 켜져 있고 로밍은 되지 않습니다.
- roaming: 로밍 네트워크가 켜져 있습니다.
- searching: 네트워크를 검색 중입니다.
- denied: 긴급 전화만 가능합니다.
- off: unregistered와 같습니다.
- on: home과 같습니다.
gsm hold: 통화 상태를 보류로 변경합니다. 현재 상태가 active 또는 waiting일 때만 통화 상태를 hold로 변경할 수 있습니다.
gsm list: 모든 수신 및 발신 통화와 그 상태를 나열합니다.
gsm status: 현재 GSM 음성/데이터 상태를 보고합니다. 값은 음성 및 데이터 명령어에 관해 설명된 값입니다.
gsm signal {rssi| ber}다음 15초 업데이트 때 보고된 신호 강도 (rssi)와 비트 오류율 (ber)을 변경합니다. 다음 목록은 매개변수 및 그 값을 설명합니다.- rssi: 범위는 0에서 31이고 알 수 없는 경우는 99입니다.
- ber: 범위는 0에서 7이고 알 수 없는 경우는 99입니다.
gsm signal-profile num: 신호 강도 프로필을 설정합니다. num은 0~4의 숫자입니다.
cdma ssource source현재 CDMA 구독 소스를 설정합니다. 여기서 소스는 CDMA 이동통신사의 구독자와 그 값을 포함하는 네트워크 기반 허용 목록입니다.- nv: 비휘발성 RAM에서 구독을 읽습니다.
- ruim: 이동식 사용자 ID 모듈 (RUIM)에서 구독을 읽습니다.
cdma prl_version version: 현재 기본 로밍 목록 (PRL) 버전을 덤프합니다. 버전 번호는 시스템 선택 및 획득 프로세스 중에 사용되는 정보가 포함된 PRL 데이터베이스용입니다.
에뮬레이터에서 센서 관리
이러한 명령어는 AVD에서 사용 가능한 센서와 관련이 있습니다. 센서 명령어를 사용하는 것 외에 가속도계 및 추가 센서 탭의 가상 센서 화면에서 에뮬레이터의 설정을 확인하고 조정할 수 있습니다.
센서 상태: 모든 센서와 센서 상태를 나열합니다.
sensor get sensor-name: sensor-name의 설정을 가져옵니다. 다음 예는 가속 센서값을 가져옵니다.
sensor get acceleration acceleration = 2.23517e-07:9.77631:0.812348콜론(:)으로 구분된 acceleration 값은 가상 센서의 x, y, z 좌표를 나타냅니다.
sensor set sensor-name value-x:value-y:value-z: sensor-name 값을 설정합니다. 다음 예는 가속 센서를 콜론으로 구분된 x, y, z 값으로 설정합니다.
sensor set acceleration 2.23517e-07:9.77631:0.812348
SMS 에뮬레이션
sms send sender-phone-number textmessage에뮬레이션된 수신 SMS를 생성합니다. 다음 목록은 매개변수 및 그 값을 설명합니다.- sender-phone-number: 임의의 숫자 문자열을 포함합니다.
- textmessage: SMS 메시지입니다.
다음 예는 'hi there' 메시지를 4085555555 전화번호로 전송합니다.
sms send 4085555555 hi there
콘솔은 SMS 메시지를 Android 프레임워크로 전달하고 Android 프레임워크는 SMS를 처리하는 에뮬레이터의 앱(예: 메시지 앱)에 메시지를 전달합니다. 숫자 10개를 전달하면 앱에서 전화번호로 형식을 지정합니다. 더 길거나 짧은 숫자 문자열은 전송 방식을 표시합니다.
디지털 지문 시뮬레이션
finger touch fingerprint-id: 센서를 터치하는 손가락을 시뮬레이션합니다.
finger remove: 손가락 삭제를 시뮬레이션합니다.
이러한 명령어를 사용하는 방법에 관한 안내는 디지털 지문 시뮬레이션 및 검증에 관한 다음 섹션을 참고하세요.
화면 녹화
화면 녹화 명령어를 사용하면 호스트 시스템에서 직접 에뮬레이터의 실제 디스플레이의 고화질 동영상 파일을 캡처할 수 있습니다. 이는 지속적 통합 파이프라인 및 자동화된 버그 보고에 매우 유용합니다.
screenrecord {start| stop} file디스플레이 녹화 프로세스를 시작하거나 중지합니다.- start file: 동영상 녹화를 시작합니다. 출력 파일은 필수
.webm확장자로 끝나야 합니다. 캡처된 동영상은 AVD의 콘솔 출력 디렉터리(~/.android/avd/avd_name.avd/console_out/file) 바로 아래에 저장됩니다. - stop file: 활성 디스플레이 녹화 프로세스를 중지합니다.
- start file: 동영상 녹화를 시작합니다. 출력 파일은 필수
자동화 및 매크로
자동화 하위 시스템을 사용하면 개발자가 실행 중인 가상 기기에서 매크로 상태 전환을 기록하고 이를 다시 재생하여 자동 테스트 흐름을 실행할 수 있습니다.
automation {record| stop-record| play| stop-play}자동화된 매크로 녹음을 관리합니다.- record: 기기 상태 변경사항과 입력을 녹화하기 시작합니다.
- stop-record: 현재 매크로 녹화 세션을 중지합니다.
- play: 녹화된 매크로 시퀀스의 재생을 시작합니다.
- stop-play: 활성 매크로 재생 시퀀스를 중지합니다.
물리 (6DoF)
물리 명령은 고급 모션 추적을 시뮬레이션하는 데 사용되는 6자유도 (6DoF) 물리적 움직임 모델의 정답 공간 포즈 로깅을 관리합니다.
physics {record-gt| stop}물리적 포즈 모델 녹화 파일을 관리합니다.- record-gt: 그라운드 트루스 6DoF 이동 데이터 기록을 시작합니다.
- stop: 현재 그라운드 트루스 녹화 프로세스를 중지합니다.
고급 기기 제어
이 섹션에서는 네트워크 프록시, 다중 디스플레이 구성, 렌더링 재정의, 하이퍼바이저 직접 디버깅 등 고급 에뮬레이션 구성을 위한 고도로 전문화된 콘솔 명령어 엔드포인트를 집계합니다.
multidisplay {add| del}다중 화면 구성을 테스트하기 위해 보조 가상 모니터를 추가하거나 삭제합니다. 참고: Pixel Fold 또는 크기 조절이 가능한 에뮬레이터와 같은 폴드 프로필에서는 보조 모니터가 지원되지 않습니다.proxy {set| clear}콘솔에서 프로그래매틱 방식으로 네트워크 프록시 전달을 구성합니다.- set host port: 대상 프록시 설정을 구성합니다.
- clear: 프록시 구성을 기본값으로 재설정합니다. 참고: 프록시 설정 작업은 헤드리스 실행 환경에서 실패합니다.
virtualscene-image {wall| table} image_path가상 장면 카메라 피드에 표시되는 배경 벽 또는 가로 테이블을 맞춤 사용자 이미지 파일로 맞춤설정합니다.resize-display scale사전 설정된 비율 간에 화면 해상도를 동적으로 조정합니다. 참고: 해상도 조정은 헤드리스 구성에서 지원되지 않습니다.nodraw {on| off}대량 백그라운드 헤드리스 자동화 실행 중에 시스템 메모리와 GPU 부하를 줄이기 위해 호스트 화면에서 실제 GUI 렌더링을 사용 중지합니다.grpc port맞춤 gRPC 포트 엔드포인트를 통해 고급 프로그래매틱 기기 제어를 구성합니다.qemu monitor기본 하이퍼바이저의 콘솔에 대한 직접 대화형 터미널 액세스를 제공합니다. 이 명령어는 활성 Telnet 콘솔 세션에서만 입력할 수 있습니다.icebox track pid지정된 앱 프로세스에서 처리되지 않은 예외나 비정상 종료가 발생할 때 자동 시스템 스냅샷을 사용 설정합니다.phonenumber number대상 기기의 가상 로컬 전화번호를 설정합니다.
gRPC 프로그래매틱 인터페이스
최신 에뮬레이터 버전은 기존 Telnet 콘솔과 함께 강력한 gRPC 프로그래매틱 인터페이스를 지원합니다. Telnet 콘솔은 빠른 대화형 세션이나 간단한 스크립팅에 적합하지만 gRPC 인터페이스는 지속적 통합 (CI) 및 헤드리스 환경에서 고성능의 안전하고 강력한 자동화된 제어를 위해 설계되었습니다. gRPC는 직접 서비스 엔드포인트를 제공하여 텍스트 스트림을 파싱하거나, 터미널 세션 핸드셰이크를 관리하거나, 암호화되지 않은 localhost 포트를 노출할 필요가 없습니다.
기존 Telnet 콘솔과 최신 gRPC 프로그래매틱 인터페이스 중에서 선택하려면 성능, 보안, 기능 기능을 비교한 다음 내용을 검토하세요.
| 기능 | Telnet 콘솔 | gRPC 인터페이스 |
|---|---|---|
| 용도 | 수동 디버깅, 대화형 세션 | 헤드리스 CI/CD, 대규모 자동 테스트 장비 |
| 속도 | 느림, 텍스트 오버헤드, 연결 지연 시간 | 최적화됨, 멀티플렉싱된 HTTP/2, 빠른 프로토콜 |
| 보안 | 암호화되지 않음, 로컬 포트 (5554~5585) | TLS로 보안이 유지되며 네트워크를 통해 작동합니다. |
| 스트림 | 지원되지 않음, 요청-응답만 지원됨 | logcat, 게스트 오디오 캡처 스트림 |
| 미디어 | 호스트/게스트 디스크에 출력 파일을 씁니다. | 유선 바이너리 버퍼를 직접 사용합니다. |
| 게스트 OS | 고정된 에뮬레이터 명령어로 제한됩니다. | 네이티브 게스트 bash 셸 명령어를 실행합니다. |
gRPC 실행 및 호출
gRPC 엔드포인트를 사용하려면 명령줄에서 Android Emulator를 실행하고 -grpc 플래그를 포함하여 타겟 루프백 포트를 지정합니다.
# Start the emulator with the gRPC service enabled on port 8556
emulator -grpc localhost:8556 @Pixel_Fold
gRPC 서비스를 사용 설정한 상태로 에뮬레이터가 실행되면 프로그래매틱 RPC 호출을 할 수 있습니다. 명령줄 테스트의 경우 grpcurl 유틸리티를 사용하여 에뮬레이터의 서비스와 통신합니다. 모든 요청은 JSON 형식으로 지정되고 일반 텍스트를 통해 전송됩니다.
# Query the status of the virtual device using grpcurl
grpcurl -plaintext -d '{}' localhost:8556 \
android.emulation.control.EmulatorController/getStatus
# Simulate an incoming phone call
grpcurl -plaintext -d '{"operation": "InitCall", "number": "1234567890"}' localhost:8556 \
android.emulation.control.EmulatorController/sendPhone
# Simulate typing text into the guest OS
grpcurl -plaintext -d '{"text": "Hello"}' localhost:8556 \
android.emulation.control.EmulatorController/sendKey
gRPC 서비스에 대한 텔넷 콘솔 매핑
다음 참조 표에서는 기존 Telnet 콘솔 명령어를 해당 gRPC 서비스 및 메서드에 매핑하여 일반적인 가상 기기 상호작용을 프로그래매틱 방식으로 자동화하는 방법을 보여줍니다.
| 카테고리 | 기존 텔넷 명령어 | gRPC 서비스 / 메서드 |
|---|---|---|
| Status | ping |
EmulatorController/getStatus |
| Status | avd name |
incubating.AvdService/getAvdInfo |
| Status | kill |
EmulatorController/setVmState |
| Status | restart |
EmulatorController/setVmState |
| 전원 | power display |
EmulatorController/getBattery |
| 전원 | power capacity |
EmulatorController/setBattery |
| Geo Loc | geo fix |
EmulatorController/setGps |
| 센서 | sensor set |
incubating.SensorService/setSensor |
| 생체 인식 | finger touch |
EmulatorController/sendFingerprint |
| 자세 | posture |
EmulatorController/setPosture |
| 자세 | physics/fold |
EmulatorController/setPhysicalModel |
| SMS | sms send |
EmulatorController/sendSms |
| GSM 통화 | gsm call |
EmulatorController/sendPhone |
| GSM 통화 | phonenumber |
EmulatorController/setPhoneNumber |
| 리디렉션 | redir add |
Waterfall/ForwardPort |
| 입력 | event send EV_KEY |
EmulatorController/sendKey |
| 입력 | event send EV_ABS |
EmulatorController/sendTouch |
| 미디어 | screenrecord |
incubating.ScreenRecording |
| 렌더링 | nodraw |
EmulatorController/setDisplayMode |
| 스냅샷 | avd snapshot list |
SnapshotService/ListSnapshots |
| 스냅샷 | avd snapshot load/save |
SnapshotService/LoadSnapshot |
gRPC에 고유한 프로그래매틱 명령어
gRPC 인터페이스는 기존 Telnet 콘솔 연결을 통해 실행하는 것이 물리적으로 불가능한 여러 최첨단 기능을 제공합니다. 여기에는 직접 logcat 스트리밍, 양방향 오디오 캡처 또는 삽입, 호스트 GUI 수정, 직접 셸 액세스가 포함됩니다.
| gRPC 서비스 / 메서드 | 매개변수 | 기능 |
|---|---|---|
streamLogcat |
{"maxLines": 100} |
게스트 시스템 logcat 출력을 스트리밍합니다. |
streamAudio |
{} |
유선을 통해 스피커 오디오를 스트리밍합니다. |
injectAudio |
{"audio": "..."} |
마이크 오디오 스트림 삽입 |
UiController |
{"theme": "DARK"} |
호스트 창 창 테마를 수정합니다. |
Waterfall/Exec |
{"cmd": "ls"} |
네이티브 게스트 OS 셸 명령어를 실행합니다. |
디지털 지문 시뮬레이션 및 검증

finger 명령어를 사용하여 앱의 디지털 지문 인증을 시뮬레이션하고 검증합니다. SDK 도구 24.3 이상과 Android 6.0 (API 수준 23) 이상이 필요합니다.
디지털 지문 인증을 시뮬레이션하고 검증하려면 다음 단계를 따르세요.
아직 디지털 지문 ID가 없는 경우 Settings > Security > Fingerprint를 선택하고 등록 안내에 따라 에뮬레이터에 새 디지털 지문을 등록합니다.
지문 인증을 허용하도록 앱을 설정합니다. 이 설정을 실행하면 기기에 디지털 지문 인증 화면이 표시됩니다.
앱에서 디지털 지문 인증 화면을 표시하는 동안 콘솔로 이동하여
finger touch명령어와 생성한 디지털 지문 ID를 입력합니다. 이는 손가락 터치를 시뮬레이션합니다.그런 다음
finger remove명령어를 입력하여 손가락 삭제를 시뮬레이션합니다. 앱은 사용자가 터치한 다음 지문 센서에서 손가락을 뗀 것처럼 응답해야 합니다.