Отправка консольных команд эмулятора

Каждое работающее виртуальное устройство предоставляет консоль, которая позволяет запрашивать среду эмулируемого устройства и управлять ею. Например, вы можете использовать консоль для управления перенаправлением портов, характеристиками сети и событиями телефонии, пока ваше приложение работает на эмуляторе.

Следующие команды требуют, чтобы у вас уже был запущен эмулятор. Дополнительные сведения о запуске эмулятора см. в разделах «Запуск приложений на эмуляторе Android» и «Запуск эмулятора из командной строки» .

Запуск и остановка сеанса консоли

Чтобы получить доступ к консоли и ввести команды из окна терминала, используйте telnet для подключения к консольному порту и предоставления токена аутентификации. Каждый раз, когда на консоли отображается сообщение «ОК» , она готова принимать команды. Типичного приглашения нет.

Чтобы подключиться к консоли работающего виртуального устройства:

  1. Откройте окно терминала и введите следующую команду:
  2. telnet localhost console-port

    В заголовке окна эмулятора указан номер порта консоли при запуске в отдельном окне, но не в окне инструмента. Например, заголовок окна эмулятора, использующего консольный порт 5554, может быть Pixel8_API_34: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|?         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
    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.

Справочник команд эмулятора

В следующей таблице описаны консольные команды эмулятора с их параметрами и значениями:

Табл. 1. Консольные команды эмулятора

Общие команды Описание
avd {stop|start|status|name} Запрашивает, контролирует и управляет виртуальным устройством следующим образом:
  • stop : Останавливает выполнение устройства.
  • start : запускает выполнение устройства.
  • status : запрашивает статус виртуального устройства, которое может быть running или stopped .
  • name : Запрашивает имя виртуального устройства.
avd snapshot {list|save name |load name |delete name } Сохраняет и восстанавливает состояние устройства в снимках следующим образом:
  • list : список всех сохраненных снимков.
  • save name : сохраняет снимок под name .
  • load name : загружает указанный снимок.
  • delete name : удаляет указанный снимок.

В следующем примере снимок сохраняется с именем firstactivitysnapshot :

avd snapshot save firstactivitysnapshot
fold Складывает устройство, чтобы отобразить его меньшую конфигурацию экрана, если устройство складное и в данный момент развернуто.
unfold Разворачивает устройство для отображения конфигурации его большего экрана, если устройство складное и в данный момент сложено.
kill Завершает работу виртуального устройства.
ping Проверяет, работает ли виртуальное устройство.
rotate Поворачивает AVD против часовой стрелки с шагом 45 градусов.
Сбой эмулятора Описание
crash Вызывает сбой эмулятора во время выполнения приложения.
crash-on-exit Вылетает эмулятор при выходе из приложения.
Отладочные теги Описание
debug tags ...

Включает или отключает сообщения отладки из определенных частей эмулятора. Параметр 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 . Любое приложение может запросить у диспетчера местоположения текущие координаты GPS для эмулируемого устройства, вызвав LocationManager.getLastKnownLocation("gps") .

geo fix longitude latitude [altitude] [satellites] [velocity] Отправляет в эмулятор простые координаты GPS. Укажите longitude и latitude в десятичных градусах. Используйте число от 1 до 12, чтобы указать количество satellites , которые будут использоваться для определения положения, а также укажите altitude в метрах и velocity в узлах.
geo nmea sentence Отправляет предложение NMEA 0183 на эмулируемое устройство, как если бы оно было отправлено с эмулируемого GPS-модема. Начните sentence с «$GP». В настоящее время поддерживаются только предложения «$GPGGA» и «$GPRCM». Следующий пример представляет собой предложение GPGGA (Global Positioning System Fix Data), которое получает данные о времени, положении и координатах для GPS-приемника:
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
      
Например, чтобы имитировать длительное нажатие кнопки питания, отправьте два события 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} 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 — один из следующих (числа — миллисекунды):

Формат задержки сети:

  • gprs : GPRS, который использует диапазон задержки 150 минимум и 550 максимум.
  • edge : EDGE/EGPRS, который использует диапазон задержки 80 минимум и 400 максимум.
  • umts : UMTS/3G, который использует диапазон задержки от 35 минимум до 200 максимум.
  • none : нет задержки.
  • num : эмулирует указанную задержку в миллисекундах.
  • min : max : эмулирует указанный диапазон задержки.

Чтобы установить задержку при запуске эмулятора, используйте параметр эмулятора -netdelay с поддерживаемым значением latency , как указано в предыдущем списке форматов задержки сети . Вот несколько примеров:

emulator -netdelay gprs
emulator -netdelay 40,100

Чтобы внести изменения в задержку сети во время работы эмулятора, подключитесь к консоли и используйте команду netdelay с поддерживаемым значением latency из предыдущего списка форматов задержки сети .

network delay gprs
network delay 40 100
network speed 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 вверх и 14 400,0 вниз.
  • lte : LTE, использующий скорость 58 000 вверх и 173 000 вниз.
  • evdo : EVDO, использующий скорость 75 000 вверх и 280 000 вниз.
  • full : Неограниченная скорость, но зависит от скорости подключения вашего компьютера.
  • num : устанавливает точную скорость в килобитах/сек, используемую как для загрузки, так и для скачивания.
  • up : down : Устанавливает точные скорости в килобитах/сек для загрузки и скачивания отдельно.

Чтобы установить скорость сети при запуске эмулятора, используйте параметр эмулятора -netspeed с поддерживаемым значением speed , как указано в предыдущем списке форматов скорости сети . Вот несколько примеров:

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

Чтобы внести изменения в скорость сети во время работы эмулятора, подключитесь к консоли и используйте команду network speed с поддерживаемым значением speed из предыдущего списка форматов скорости сети .

network speed 14.4 80
network capture {start|stop} file Отправляет пакеты в файл. В следующем списке описаны параметры и значения параметров:
  • start file : начинает отправку пакетов в указанный файл.
  • stop file : останавливает отправку пакетов в указанный файл.
Эмуляция телефонии Описание
Эмулятор Android включает в себя собственные эмулируемые модемы GSM и CDMA, которые позволяют имитировать функции телефонии в эмуляторе. Например, с помощью GSM вы можете имитировать входящие телефонные звонки, а также устанавливать и прекращать соединения для передачи данных. При использовании CDMA вы указываете источник подписки и список предпочтительного роуминга. Система Android обрабатывает имитированные вызовы точно так же, как и реальные вызовы. Эмулятор не поддерживает звук вызова.
gsm {call|accept|cancel|busy} phonenumber Параметры gsm следующие:
  • call : Имитирует входящий телефонный звонок с phonenumber .
  • accept : принимает входящий вызов с phonenumber и меняет состояние вызова на active . Вы можете изменить состояние вызова на active только в том случае, если его текущее состояние — waiting или held .
  • cancel : Завершает входящий или исходящий телефонный звонок на phonenumber .
  • busy : закрывает исходящий вызов на phonenumber и меняет состояние вызова на busy . Изменить состояние вызова на busy можно только тогда, когда его текущее состояние — waiting .
gsm {data|voice} state Команда data state изменяет состояние соединения для передачи данных GPRS, а команда data voice state изменяет состояние голосового соединения GPRS следующим образом:
  • unregistered : сеть недоступна.
  • home : В локальной сети, без роуминга.
  • roaming : В роуминговой сети.
  • searching : Поиск сетей.
  • denied : Только экстренные вызовы.
  • off : То же, что и unregistered .
  • on .: То же, что и home .
gsm hold Изменяет состояние вызова на hold . Вы можете изменить состояние вызова на hold только в том случае, если его текущее состояние — active или waiting .
gsm list Перечисляет все входящие и исходящие вызовы и их состояния.
gsm status Сообщает о текущем состоянии голоса/данных GSM. Значения описаны для voice команд и команд data .
gsm signal {rssi|ber} Изменяет сообщаемый уровень сигнала (rssi) и частоту ошибок по битам (ber) в течение следующих 15 секунд обновления. В следующем списке описаны параметры и их значения:
  • Диапазон rssi — от 0 до 31 и 99 для неизвестного.
  • Диапазон значений ber — от 0 до 7 и 99 для неизвестного.
gsm signal-profile num Устанавливает профиль мощности сигнала. num — число от 0 до 4.
cdma ssource source Устанавливает текущий источник подписки CDMA, где source — это сетевой список разрешений, содержащий абонентов оператора связи CDMA и их значения, следующим образом:
  • nv: читает подписку из энергонезависимой оперативной памяти.
  • ruim: считывает подписку из съемного модуля идентификации пользователя (RUIM).
cdma prl_version version Выводит текущую версию списка предпочтительного роуминга (PRL). Номер версии относится к базе данных PRL, содержащей информацию, используемую в процессе выбора и приобретения системы.
Управление датчиками на эмуляторе Описание
Эти команды относятся к тому, какие датчики доступны в AVD. Помимо использования команды sensor , вы можете просмотреть и настроить параметры эмулятора на экране «Виртуальные датчики» во вкладках «Акселерометр» и «Дополнительные датчики» .
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 send sender-phone-number textmessage Генерирует эмулированное входящее SMS. В следующем списке описаны параметры и их значения:
  • sender-phone-number : Содержит произвольную числовую строку.
  • textmessage : SMS-сообщение.

В следующем примере сообщение «Привет» отправляется на номер телефона 4085555555:

sms send 4085555555 hi there

Консоль пересылает SMS-сообщение в платформу Android, которая передает его приложению на эмуляторе, обрабатывающему SMS, например приложению «Сообщения». Если вы передадите 10 номеров, приложение отформатирует их как номер телефона. Более длинные или короткие числовые строки отображаются так, как вы их отправили.

Имитация отпечатков пальцев Описание
finger touch fingerprint-id Имитирует прикосновение пальца к датчику.
finger remove Имитирует удаление пальца.

Инструкции по использованию этих команд см. в следующем разделе, посвященном моделированию и проверке отпечатков пальцев .

Моделирование и проверка отпечатков пальцев

Рисунок 1. Экран аутентификации по отпечатку пальца.

Используйте команду finger для имитации и проверки аутентификации по отпечатку пальца для вашего приложения. Вам потребуется SDK Tools 24.3 или более поздняя версия и Android 6.0 (уровень API 23) или более поздняя версия.

Чтобы смоделировать и проверить аутентификацию по отпечатку пальца, выполните следующие действия:

  1. Если у вас еще нет идентификатора отпечатка пальца, зарегистрируйте новый отпечаток пальца в эмуляторе, выбрав «Настройки» > «Безопасность» > «Отпечаток пальца» и следуя инструкциям по регистрации.
  2. Настройте свое приложение для приема аутентификации по отпечатку пальца . После выполнения этой настройки на вашем устройстве отобразится экран аутентификации по отпечатку пальца.
  3. Пока ваше приложение отображает экран аутентификации по отпечатку пальца, перейдите на консоль и введите команду finger touch и созданный вами идентификатор отпечатка пальца. Это имитирует прикосновение пальца.
  4. Затем введите команду finger remove , чтобы имитировать удаление пальца.

    Ваше приложение должно реагировать так, как если бы пользователь коснулся, а затем убрал палец со датчика отпечатков пальцев.