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

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

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

콘솔 세션 시작 및 중지

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

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

  1. 터미널 창을 열고 다음 명령어를 입력합니다.
  2. telnet localhost console-port

    에뮬레이터 창 제목에는 콘솔 포트 번호가 나열됩니다. 예를 들어 콘솔 포트 5554를 사용하는 에뮬레이터의 창 제목은 Nexus_5X_API_23:5554일 수 있습니다. 또한 adb devices 명령어는 실행 중인 가상 기기 및 그 콘솔 포트 번호의 목록을 출력합니다. 자세한 내용은 에뮬레이터/기기 인스턴스 쿼리를 참조하세요.

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

  3. 콘솔에 OK가 표시되면 auth auth_token 명령어를 입력합니다.
  4. 콘솔 명령어를 입력하려면 에뮬레이터 콘솔에 인증이 필요합니다. auth_token은 홈 디렉터리에 있는 .emulator_console_auth_token 파일의 콘텐츠와 일치해야 합니다.

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

  5. 콘솔에 연결한 후 콘솔 명령어를 입력합니다.
  6. help, help command 또는 help-verbose를 입력하여 콘솔 명령어 목록을 확인하고 특정 명령어에 관해 알아보세요.

  7. 콘솔 세션을 종료하려면 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|?         print a list of commands
        help-verbose     print a list of commands with descriptions
        ping             check if the emulator is alive
        automation       manage emulator automation
        event            simulate hardware events
        geo              Geo-location commands
        gsm              GSM related commands
        cdma             CDMA related commands
        crash            crash the emulator instance
        crash-on-exit    simulate crash on exit for the emulator instance
        kill             kill the emulator instance
        restart          restart the emulator instance
        network          manage network settings
        power            power related commands
        quit|exit        quit control session
        redir            manage port redirections
        sms              SMS related commands
        avd              control virtual device execution
        qemu             QEMU-specific commands
        sensor           manage emulator sensors
        physics          manage physical model
        finger           manage emulator finger print
        debug            control the emulator debug output tags
        rotate           rotate the screen clockwise by 90 degrees
        screenrecord     Records the emulator's display
        fold             fold the device
        unfold           unfold the device
        multidisplay     configure the multi-display

    try 'help <command>' for command-specific help
    OK
    exit
    Connection closed by foreign host.
    

에뮬레이터 명령어 참조

다음 표는 매개변수 및 값과 함께 에뮬레이터 콘솔 명령어를 설명합니다.

표 1. 에뮬레이터 콘솔 명령어

일반 명령어 설명
avd {stop|start|status|name} 다음과 같이 가상 기기를 쿼리, 제어 및 관리합니다.
  • stop: 기기의 실행을 중지합니다.
  • start: 기기의 실행을 시작합니다.
  • status: 가상 기기 상태를 쿼리하며 상태는 running 또는 stopped일 수 있습니다.
  • name: 가상 기기 이름을 쿼리합니다.
avd snapshot {list|save name|load name|delete name} 다음과 같이 스냅샷에서 기기 상태를 저장하고 복원합니다.
  • list: 저장된 모든 스냅샷을 나열합니다.
  • save name: 스냅샷을 이름으로 저장합니다.
  • load 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 satellites [altitude] 에뮬레이터에 간단한 GPS 수정사항을 보냅니다. longitudelatitude를 십진수로 지정합니다. 1에서 12까지의 숫자를 사용하여 위치를 파악하는 데 사용할 satellites 수를 지정하고 altitude를 미터 단위로 지정합니다.
geo nmea sentence 에뮬레이션된 GPS 모뎀에서 보낸 것처럼 NMEA 0183 문장을 에뮬레이션된 기기로 보냅니다. '$GP'로 sentence를 시작합니다. 현재 '$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] [...] 선택적 코드 및 코드값으로 하나 이상의 가짜 이벤트를 전송합니다.

전송할 이벤트를 정확하게 찾으려면 adb 명령어를 사용하면서 수동으로 에뮬레이터의 버튼을 누르고 있으면 됩니다.

다음은 전원 버튼을 누를 때 생성되는 이벤트입니다.


    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
          
이러한 특정 경우에는 keydown 이벤트와 keyup 이벤트라는 EV_KEY 이벤트 두 개만 전송하여 전원 버튼의 길게 누르기를 시뮬레이션해야 했습니다.

    event send EV_KEY:KEY_POWER:0
    OK
    event send EV_KEY:KEY_POWER:1
    OK
          

event text message 키 누르기를 시뮬레이션하는 문자열을 전송합니다. 메시지는 UTF-8 문자열이어야 합니다. 유니코드 게시물이 현재 기기 키보드에 따라 역매핑되며 지원되지 않는 문자는 자동으로 삭제됩니다.
에뮬레이터에서 앱에 보고된 전원 상태 제어 설명
power display 배터리 및 충전기 상태를 표시합니다.
power ac {on|off} AC 충전 상태를 on 또는 off로 설정합니다.
power status {unknown|charging|discharging|not-charging|full} 지정된 대로 배터리 상태를 변경합니다.
power present {true|false} 배터리 유무 상태를 설정합니다.
power health {unknown|good|overheat|dead|overvoltage|failure} 배터리 상태를 설정합니다.
power capacity percent 배터리 잔량 상태를 0에서 100 사이의 백분율로 설정합니다.
네트워크 연결 상태 설명
network status 네트워크 상태와 현재 지연 및 속도 특성을 확인합니다.
network delay latency 에뮬레이션된 네트워크 지연 시간을 변경합니다.

에뮬레이터를 사용하면 다양한 네트워크 지연 시간 수준을 시뮬레이션할 수 있으므로 실제 실행되는 더 일반적인 조건의 환경에서 앱을 테스트 할 수 있습니다. 에뮬레이터 시작 시 지연 시간 수준 또는 범위를 설정하거나 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 지연 시간을 변경할 수 있습니다.

에뮬레이터 시작 시 지연 시간을 설정하려면 아래 네트워크 지연 시간 형식 목록에 나열된 대로 지원되는 latency 값과 함께 -netdelay 에뮬레이터 옵션을 사용합니다. 예를 들면 다음과 같습니다.


emulator -netdelay gprs
    emulator -netdelay 40,100

에뮬레이터가 실행되는 동안 네트워크 지연을 변경하려면 콘솔에 연결하고 아래 네트워크 지연 시간 형식 목록에서 지원되는 latency 값과 함께 netdelay 명령어를 사용합니다.


network delay gprs
    network delay 40 100

네트워크 지연 시간 형식

네트워크 지연 시간 형식은 다음 중 하나입니다(숫자는 밀리초).

  • gprs: GPRS. 최소 150, 최대 550의 지연 시간 범위를 사용합니다.
  • edge: EDGE/EGPRS. 최소 80, 최대 400의 지연 시간 범위를 사용합니다.
  • umts: UMTS/3G. 최소 35, 최대 200의 지연 시간 범위를 사용합니다.
  • none: 지연 시간이 없습니다.
  • num: 지정된 지연 시간을 밀리초 단위로 에뮬레이션합니다.
  • min:max: 지정된 지연 시간 범위를 에뮬레이션합니다.
network speed speed 에뮬레이터를 사용하면 다양한 네트워크 전송 속도를 시뮬레이션할 수 있습니다.

에뮬레이터 시작 시 전송 속도 또는 범위를 설정하거나 앱이 에뮬레이터에서 실행되는 동안 콘솔을 사용하여 속도를 변경할 수 있습니다.

에뮬레이터 시작 시 네트워크 속도를 설정하려면 아래 네트워크 속도 형식 목록에 나열된 대로 지원되는 speed 값과 함께 -netspeed 에뮬레이터 옵션을 사용합니다. 예를 들면 다음과 같습니다.


    emulator -netspeed gsm @Pixel_API_26
    emulator -netspeed 14.4,80 @Pixel_API_26
    

에뮬레이터가 실행되는 동안 네트워크 속도를 변경하려면 콘솔에 연결하고 아래 네트워크 속도 형식 목록에서 지원되는 speed 값과 함께 network speed 명령어를 사용합니다.


network speed 14.4 80

네트워크 속도 형식

네트워크 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: 업로드 및 다운로드의 정확한 속도를 각각 킬로비트/초로 설정합니다.
network capture {start|stop} file 패킷을 파일로 전송합니다. 다음 목록은 매개변수 및 매개변수 값을 설명합니다.
  • start file: 지정된 파일로 패킷 전송을 시작합니다.
  • stop file: 지정된 파일로 패킷 전송을 중지합니다.
텔레포니 에뮬레이션 설명
Android Emulator에는 에뮬레이션된 자체 GSM 및 CDMA 모뎀이 포함되어 있어 에뮬레이터에서 전화 기능을 시뮬레이션할 수 있습니다. 예를 들어 GSM을 사용하면 인바운드 전화 통화를 시뮬레이션하고 데이터 연결을 설정 및 종료 할 수 있습니다. CDMA를 사용하면 구독 소스와 기본 로밍 목록을 제공합니다. Android 시스템은 실제 통화와 아주 동일한 방식으로 시뮬레이션된 통화를 처리합니다. 에뮬레이터는 통화 오디오를 지원하지 않습니다.
gsm {call|accept|cancel|busy} phonenumber gsm 매개변수는 다음과 같습니다.
  • call: phonenumber에서 걸려오는 수신 전화 통화를 시뮬레이션합니다.
  • accept: phonenumber에서 걸려오는 수신 통화를 수락하고 통화 상태를 active로 변경합니다. 현재 상태가 waiting 또는 held일 때만 통화 상태를 active로 변경할 수 있습니다.
  • cancel: phonenumber의 수신 또는 발신 전화 통화를 종료합니다.
  • busy: phonenumber로 거는 발신 통화를 종료하고 통화 상태를 busy로 변경합니다. 현재 상태가 waiting일 때만 통화 상태를 busy로 변경할 수 있습니다.
gsm {data|voice} state data state 명령어는 GPRS 데이터 연결 상태를 변경하고 data voice state는 GPRS 음성 연결 상태를 다음과 같이 변경합니다.
  • unregistered: 사용 가능한 네트워크가 없습니다.
  • home: 로컬 네트워크가 켜져 있고 로밍은 되지 않습니다.
  • roaming: 로밍 네트워크가 켜져 있습니다.
  • searching: 네트워크를 검색 중입니다.
  • denied: 긴급 전화만 허용합니다.
  • off: unregistered와 동일합니다.
  • on: home과 동일합니다.
gsm hold 통화 상태를 hold로 변경합니다. 현재 상태가 active 또는 waiting일 때만 통화 상태를 hold로 변경할 수 있습니다.
gsm list 모든 수신 및 발신 통화와 그 상태를 나열합니다.
gsm status 현재 GSM 음성/데이터 상태를 보고합니다. 값은 voicedata 명령어에 관해 설명된 값입니다.
gsm signal {rssi|ber} 다음 15초 업데이트 때 보고된 신호 강도(rssi)와 비트 오류율(ber)을 변경합니다. 다음 목록은 매개변수 및 그 값을 설명합니다.
  • rssi 범위는 0에서 31이고 알 수 없는 경우는 99입니다.
  • ber 범위는 0에서 7이고 알 수 없는 경우는 99입니다.
gsm signal-profile num 신호 강도 프로필을 설정합니다. 0에서 4까지의 숫자를 입력합니다.
cdma ssource source source: 다음과 같이 현재 CDMA 구독 소스를 설정합니다. 여기서 source는 CDMA 이동통신사의 구독자와 그 값을 포함하는 네트워크 기반 허용 목록입니다.
  • nv: 비휘발성 RAM에서 구독을 읽습니다.
  • ruim: 이동식 사용자 ID 모듈(RUIM)에서 구독을 읽습니다.
cdma prl_version version 현재 기본 로밍 목록(PRL) 버전을 덤프합니다. 버전 번호는 시스템 선택 및 획득 프로세스 중에 사용되는 정보가 포함된 PRL 데이터베이스용입니다.
에뮬레이터에서 센서 관리 설명
이러한 명령어는 AVD에서 사용 가능한 센서와 관련이 있습니다. sensor 명령어를 사용하는 것 외에 AccelerometerAdditional sensors 탭의 Virtual sensors 화면에서 에뮬레이터의 설정을 확인하고 조정할 수 있습니다. 자세한 내용은 확장 컨트롤, 설정 및 도움말 작업을 참조하세요.
sensor status 모든 센서와 센서 상태를 나열합니다. 다음은 sensor status 명령어의 출력 예입니다.
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 손가락 삭제를 시뮬레이션합니다.

이러한 명령어를 사용하는 방법에 관한 안내는 디지털 지문 시뮬레이션 및 검증을 참조하세요.

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

그림 1. 디지털 지문 인증 화면.

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

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

  1. 아직 디지털 지문 ID가 없는 경우 Settings > Security > Fingerprint를 선택하고 등록 안내에 따라 에뮬레이터에 새 디지털 지문을 등록합니다.
  2. 디지털 지문 인증을 허용하도록 앱을 설정합니다. 이 설정을 실행하면 기기에 디지털 지문 인증 화면이 표시됩니다.
  3. 앱에서 디지털 지문 인증 화면을 표시하는 동안 콘솔로 이동하여 finger touch 명령어와 생성한 디지털 지문 ID를 입력합니다. 이것은 손가락 터치를 시뮬레이션합니다.
  4. 그런 다음 finger remove 명령어를 입력하여 손가락 삭제를 시뮬레이션합니다.

    앱은 사용자가 터치한 다음 지문 센서에서 손가락을 뗀 것처럼 응답해야 합니다.