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

Each running virtual device provides a console that lets you query and control the emulated device environment. For example, you can use the console to manage port redirection, network characteristics, and telephony events while your app is running on the emulator.

The following commands require that you already have an emulator running. For more information about running an emulator, see Run apps on the Android Emulator and Start the emulator from the command line .

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

To access the console and enter commands from a terminal window, use telnet to connect to the console port and provide your authentication token. Each time the console displays OK , it's ready to accept commands. There isn't a typical prompt.

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

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

    The emulator window title lists the console port number when running in a separate window but not when running in a tool window. For example, the window title for an emulator using console port 5554 could be Pixel8_API_34:5554 . Also, the adb devices command prints a list of running virtual devices and their console port numbers. For more information, see Query for devices .

    Примечание: Эмулятор принимает соединения на портах 5554–5585 и принимает соединения только с localhost .

  3. После того, как в консоли отобразится OK , введите команду auth auth_token .
  4. Прежде чем вы сможете вводить консольные команды , эмулятору потребуется аутентификация. auth_token должен совпадать с содержимым файла .emulator_console_auth_token в вашем домашнем каталоге.

    If that file doesn't exist, the telnet localhost console-port command creates the file, which contains a randomly generated authentication token. To disable authentication, delete the token from the .emulator_console_auth_token file or create an empty file if it doesn't exist.

  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  (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
  

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

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

Таблица 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 ...

Enables or disables debug messages from specific parts of the emulator. The tags parameter must be a value from the list of debug tags that appears when you execute emulator -help-debug-tags . For more information about the -help-debug-tags option, see the table of commonly used options .

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

geo fix longitude latitude [altitude] [satellites] [velocity] Sends a simple GPS fix to the emulator. Specify longitude and latitude in decimal degrees. Use a number from 1 to 12 to specify the number of satellites to use to determine the position, and specify altitude in meters and velocity in knots.
geo nmea sentence Sends an NMEA 0183 sentence to the emulated device as if it were sent from an emulated GPS modem. Start sentence with '$GP'. Only '$GPGGA' and '$GPRCM' sentences are currently supported. The following example is a GPGGA (Global Positioning System Fix Data) sentence that gets the time, position, and fix data for a GPS receiver:
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 : keydown и keyup:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Sends a string of characters that simulate keypresses. The message must be a UTF-8 string. Unicode posts are reverse-mapped according to the current device keyboard, and unsupported characters are discarded silently.
Управление состоянием питания Описание
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.
Состояние сетевого подключения
(Только Ethernet и сотовая связь)
Описание
network status Проверяет состояние сети, а также текущие характеристики задержки и скорости.
network delay latency

Изменяет задержку эмулируемой сети.

The emulator lets you simulate various network latency levels so that you can test your app in an environment more typical of actual running conditions. You can set a latency level or range at emulator startup, or you can use the console to change the latency while the app is running in the emulator.

Формат измерения сетевой 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

To make changes to network delay while the emulator is running, connect to the console and use the netdelay command with a supported latency value from the preceding Network latency format list.

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 Мбит/с на загрузку и 80 Мбит/с на выгрузку.
  • 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

To make changes to network speed while the emulator is running, connect to the console and use the network speed command with a supported speed value from the preceding Network speed format list.

network speed 14.4 80
network capture {start|stop} file

Отправляет пакеты в файл. Ниже приведен список параметров и их значений:

  • start file : Starts capturing network packets. For security, file must be a bare filename (no path separators like / , and no .. ). The packet capture file will be saved under your AVD's content directory in the console_out/ folder (for example, ~/.android/avd/ avd_name .avd/console_out/ 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, содержащей информацию, используемую в процессе выбора и приобретения системы.
Управление датчиками в эмуляторе Описание
These commands relate to which sensors are available in the AVD. Besides using the sensor command, you can see and adjust the settings in the emulator in the Virtual sensors screen in the Accelerometer and Additional sensors tabs.
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

The console forwards the SMS message to the Android framework, which passes it to an app on the emulator that handles SMS, such as the Messages app. If you pass 10 numbers, the app formats it as a phone number. Longer or shorter numeric strings display the way you sent them.

имитация отпечатков пальцев Описание
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 , чтобы имитировать удаление пальца.

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