에뮬레이터 콘솔 명령어 전송

실행 중인 각 가상 기기에는 에뮬레이션된 기기 환경을 쿼리하고 제어할 수 있는 콘솔이 제공됩니다. 예를 들어 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 포트 리디렉션과 네트워크 특성, 전화 통신 이벤트를 관리할 수 있습니다.

다음 명령어를 실행하려면 에뮬레이터가 이미 실행 중이어야 합니다. 에뮬레이터 실행에 관한 자세한 내용은 Android Emulator에서 앱 실행명령줄에서 에뮬레이터 시작을 참고하세요.

콘솔 세션 시작 및 중지

콘솔에 액세스하여 터미널 창에서 명령어를 입력하려면 telnet을 사용하여 콘솔 포트에 연결하고 인증 토큰을 제공합니다. 콘솔에 OK가 표시될 때마다 명령어를 수락할 준비가 된 것입니다. 일반적인 메시지는 없습니다.

실행 중인 가상 기기의 콘솔에 연결하려면 다음 단계를 따르세요.

  1. 터미널 창을 열고 다음 명령어를 입력합니다.

    telnet localhost console-port
    

    에뮬레이터 창 제목에는 별도의 창에서 실행될 때는 콘솔 포트 번호가 나열되지만 도구 창에서 실행될 때는 번호가 표시되지 않습니다. 예를 들어 콘솔 포트 5554를 사용하는 에뮬레이터의 창 제목은 Pixel8_API_34:5554일 수 있습니다. 또한 adb devices 명령어는 실행 중인 가상 기기 및 그 콘솔 포트 번호의 목록을 출력합니다. 자세한 내용은 기기 쿼리하기를 참고하세요.

    참고: 에뮬레이터는 포트 5554~5585에서 연결을 수신 대기하고 localhost 연결만 허용합니다.

  2. 콘솔에 OK가 표시되면 auth auth_token 명령어를 입력합니다.

    콘솔 명령어를 입력하려면 에뮬레이터 콘솔에 인증이 필요합니다. auth_token은 홈 디렉터리에 있는 .emulator_console_auth_token 파일의 내용과 일치해야 합니다.

    이 파일이 없으면 telnet localhost console-port 명령어가 파일을 만들며, 이 파일에는 임의로 생성된 인증 토큰이 포함됩니다. 인증을 사용 중지하려면 .emulator_console_auth_token 파일에서 토큰을 삭제하거나 파일이 없으면 빈 파일을 만듭니다.

  3. 콘솔에 연결한 후 콘솔 명령어를 입력합니다.

    help, help command 또는 help-verbose를 입력하여 콘솔 명령어 목록을 확인하고 특정 명령어에 관해 알아보세요.

  4. 콘솔 세션을 종료하려면 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 firstactivitysnapshot
    
  • fold: 기기를 접어 더 작은 화면 구성을 표시합니다(기기가 폴더블이고 현재 펼쳐져 있는 경우).

  • 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
    OK
    
  • event 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 100
    
  • network 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 80
    
  • network 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} phonenumber gsm 매개변수는 다음과 같습니다.

    • 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: 활성 디스플레이 녹화 프로세스를 중지합니다.

자동화 및 매크로

자동화 하위 시스템을 사용하면 개발자가 실행 중인 가상 기기에서 매크로 상태 전환을 기록하고 이를 다시 재생하여 자동 테스트 흐름을 실행할 수 있습니다.

  • 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 셸 명령어를 실행합니다.

디지털 지문 시뮬레이션 및 검증

그림 1. 지문 인증 화면

finger 명령어를 사용하여 앱의 디지털 지문 인증을 시뮬레이션하고 검증합니다. SDK 도구 24.3 이상과 Android 6.0 (API 수준 23) 이상이 필요합니다.

디지털 지문 인증을 시뮬레이션하고 검증하려면 다음 단계를 따르세요.

  1. 아직 디지털 지문 ID가 없는 경우 Settings > Security > Fingerprint를 선택하고 등록 안내에 따라 에뮬레이터에 새 디지털 지문을 등록합니다.

  2. 지문 인증을 허용하도록 앱을 설정합니다. 이 설정을 실행하면 기기에 디지털 지문 인증 화면이 표시됩니다.

  3. 앱에서 디지털 지문 인증 화면을 표시하는 동안 콘솔로 이동하여 finger touch 명령어와 생성한 디지털 지문 ID를 입력합니다. 이는 손가락 터치를 시뮬레이션합니다.

  4. 그런 다음 finger remove 명령어를 입력하여 손가락 삭제를 시뮬레이션합니다. 앱은 사용자가 터치한 다음 지문 센서에서 손가락을 뗀 것처럼 응답해야 합니다.