Cómo enviar comandos de la consola del emulador

Cada dispositivo virtual en ejecución cuenta con una consola que te permite consultar y controlar el entorno del dispositivo emulado. Por ejemplo, puedes usar la consola para administrar el redireccionamiento de puertos, las características de la red y los eventos de telefonía mientras tu app se ejecuta en el emulador.

Para usar los siguientes comandos, es necesario tener un emulador en ejecución. Si deseas obtener más información sobre cómo ejecutar un emulador, consulta Cómo ejecutar apps en Android Emulator y Cómo iniciar el emulador desde la línea de comandos.

Cómo iniciar y detener una sesión de la consola

Si quieres acceder a la consola y escribir comandos, desde una ventana de terminal, usa telnet para conectarte al puerto de consola y proporciona tu token de autenticación. Cada vez que la consola muestre OK, estará lista para aceptar comandos. No hay un mensaje típico.

Para conectarte a la consola de un dispositivo virtual en ejecución:

  1. Abre una ventana de terminal e ingresa el siguiente comando:
  2. telnet localhost console-port

    El título de la ventana del emulador muestra el número de puerto de la consola cuando se ejecuta en una ventana por separado, pero no cuando se ejecuta en una ventana de herramientas. Por ejemplo, el título de la ventana para un emulador que usa el puerto de consola 5554 podría ser Pixel8_API_34:5554. Además, el comando adb devices imprime una lista de dispositivos virtuales en ejecución y sus números de puerto de consola. Para obtener más información, consulta Cómo realizar consultas de dispositivos.

    Nota: El emulador detecta las conexiones en los puertos 5554 a 5585 y solo acepta conexiones de localhost.

  3. Después de que la consola muestre OK, ingresa el comando auth auth_token.
  4. Antes de poder ingresar los comandos de la consola, la consola del emulador requiere autenticación. auth_token debe coincidir con el contenido del archivo .emulator_console_auth_token en tu directorio principal.

    Si no existe ese archivo, el comando telnet localhost console-port lo creará y contendrá un token de autenticación generado de manera aleatoria. Para inhabilitar la autenticación, borra el token del archivo .emulator_console_auth_token o crea un archivo vacío si no existe.

  5. Después de conectarte, ingresa los comandos de la consola.
  6. Ingresa help, help command o help-verbose para ver una lista de comandos de la consola y obtener información sobre comandos específicos.

  7. Para salir de la sesión de la consola, ingresa quit o exit.

La siguiente es una sesión de ejemplo:

$ 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.

Referencia de comandos del emulador

En la siguiente tabla, se describen los comandos de la consola del emulador con sus parámetros y valores:

Tabla 1: Comandos de la consola del emulador

Comandos generales Descripción
avd {stop|start|status|name} Consulta, controla y administra el dispositivo virtual de la siguiente manera:
  • stop: Detiene la ejecución del dispositivo.
  • start: Inicia la ejecución del dispositivo.
  • status: Consulta el estado del dispositivo virtual, que puede ser running o stopped.
  • name: Consulta el nombre del dispositivo virtual.
avd snapshot {list|save name|load name|delete name} Guarda y restablece el estado del dispositivo en las instantáneas como se indica a continuación:
  • list: Enumera todas las instantáneas guardadas.
  • save name: Guarda la instantánea como name.
  • load name: Carga la instantánea con nombre.
  • delete name: Borra la instantánea con nombre.

En el siguiente ejemplo, se guarda una instantánea con el nombre firstactivitysnapshot:

avd snapshot save firstactivitysnapshot
fold Pliega el dispositivo para mostrar la configuración de pantalla más pequeña (si el dispositivo es plegable y está desplegado).
unfold Despliega el dispositivo para mostrar la configuración de pantalla más grande (si el dispositivo es plegable y está plegado).
kill Finaliza el dispositivo virtual.
ping Comprueba si se está ejecutando el dispositivo virtual.
rotate Gira el AVD en sentido antihorario en incrementos de 45 grados.
Falla del emulador Descripción
crash Hace que el emulador falle durante la ejecución de la app.
crash-on-exit Hace que el emulador falle al salir de la app.
Etiquetas de depuración Descripción
debug tags ...

Habilita o inhabilita los mensajes de depuración de partes específicas del emulador. El parámetro tags debe ser un valor de la lista de etiquetas de depuración que aparece cuando ejecutas emulator -help-debug-tags. Para obtener más información sobre la opción -help-debug-tags, consulta la tabla de opciones de uso general.

En el siguiente ejemplo, se habilita la etiqueta radio:

debug radio
Redirección de puerto Descripción
redir list Enumera el redireccionamiento del puerto actual.
redir add protocol:host-port:guest-port Agrega un nuevo redireccionamiento de puertos como se indica a continuación:
  • protocol: Debe ser tcp o udp.
  • host-port: Es el número de puerto para abrir en el host.
  • guest-port: Es el número de puerto al que se deben enrutar los datos en el emulador.
redir del protocol:host-port Borra un redireccionamiento del puerto.
  • protocol: Debe ser tcp o udp.
  • host-port: Es el número de puerto para abrir en el host.
Ubicación geográfica Descripción

Establece la ubicación geográfica informada en las apps que se ejecutan dentro de un emulador enviando datos del GPS al emulador.

Puedes emitir uno de los siguientes comandos geo tan pronto como se ejecute un dispositivo virtual. El emulador establece la ubicación que ingresas y crea un proveedor de ubicación ficticia. Este proveedor responde a los objetos de escucha de ubicación establecidos por las apps y proporciona la ubicación al LocationManager. Cualquier app puede realizar una consulta al administrador de ubicaciones con el objetivo de obtener los datos del GPS para el dispositivo emulado llamando a LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Envía una vez datos del GPS al emulador. Especifica longitude y latitude en grados decimales. Usa un número del 1 al 12 para especificar la cantidad de satellites que se usarán para determinar la posición y especifica altitude en metros y velocity en nudos.
geo nmea sentence Envía una frase de NMEA 0183 al dispositivo emulado, como si se hubiera enviado desde un módem de GPS emulado. Comienza sentence con '$GP'. Por el momento, solo se admiten las frases '$GPGGA' y '$GPRCM'. En el siguiente ejemplo, se incluye una frase de GPGGA (datos fijos de sistema de posicionamiento global) que obtiene los datos de hora, posición y corrección de un receptor de 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
Eventos de hardware falsos Descripción
event types Enumera todos los tipos de eventos falsos. Para los eventos que tienen códigos, la cantidad de códigos se detalla entre paréntesis a la derecha.

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 ...] Envía uno o más tipos de eventos falsos.
event codes type Detalla los códigos de evento para el tipo de evento falso especificado.
event send type[:code]:[value] [...] Envía uno o más eventos falsos con códigos y valores de código opcionales.

Para descubrir exactamente qué evento enviar, puedes usar el comando adb mientras presionas de forma manual los botones del emulador.

Estos son los eventos que se generan cuando presionas el botón de encendido:

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
      
Por ejemplo, para simular la acción de mantener presionado el botón de encendido, envía dos eventos EV_KEY para keydown y keyup:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Envía una cadena de caracteres que simulan pulsaciones de teclas. El mensaje debe ser una string UTF-8. Las publicaciones de Unicode se asignan al revés, según el teclado del dispositivo actual, y los caracteres no compatibles se descartan sin emitir sonido.
Controles de estado de encendido Descripción
power display Muestra el estado de la batería y el cargador.
power ac {on|off} Establece el estado de carga de CA en on o off.
power status {unknown|charging|discharging|not-charging|full} Cambia el estado de la batería según lo especificado.
power present {true|false} Establece el estado de presencia de la batería.
power health {unknown|good|overheat|dead|overvoltage|failure} Establece el estado de la batería.
power capacity percent Establece el estado de la capacidad restante de la batería en un porcentaje de 0 a 100.
Estado de conexión de red Descripción
network status Comprueba el estado de la red y las características actuales de demora y velocidad.
network delay latency

Cambia la latencia de red emulada.

El emulador te permite simular varios niveles de latencia de red para que puedas probar tu app en un entorno más típico de las condiciones reales de ejecución. Puedes establecer un nivel o rango de latencia al inicio del emulador, o usar la consola para cambiar la latencia mientras se ejecuta la app en el emulador.

El formato de latency de red es uno de los siguientes (los números son milisegundos):

Formato de latencia de red:

  • gprs: GPRS, que utiliza un rango de latencia de un mínimo de 150 y un máximo de 550.
  • edge: EDGE/EGPRS, que utiliza un rango de latencia de un mínimo de 80 y un máximo de 400.
  • umts: UMTS/3G, que utiliza un rango de latencia de un mínimo de 35 y un máximo de 200.
  • none: Sin latencia.
  • num: Emula la latencia especificada en milisegundos.
  • min:max: Emula el rango de latencia especificado.

Para establecer la latencia al inicio del emulador, usa la opción del emulador -netdelay con un valor de latency compatible que se encuentre en la lista anterior de formatos de latencia de red que se muestra abajo. Estos son algunos ejemplos:

emulator -netdelay gprs
emulator -netdelay 40,100

Para realizar cambios en la demora de red mientras el emulador está en funcionamiento, conéctate a la consola y usa el comando netdelay con un valor de latency compatible que se encuentre en la lista anterior de formatos de latencia de red.

network delay gprs
network delay 40 100
network speed speed El emulador te permite simular varias velocidades de transferencia de red.

Puedes establecer una velocidad o rango de transferencia al inicio del emulador, o usar la consola para cambiar la velocidad mientras se ejecuta la app.

El formato de speed de red es uno de los siguientes (los números indican kilobits por segundo):

Formato de velocidad de red:

  • gsm: GSM/CSD, que usa una velocidad de 14.4 ascendente y descendente.
  • hscsd: HSCSD, que usa una velocidad de 14.4 ascendente y 43.2 descendente.
  • gprs: GPRS, que usa una velocidad de 40.0 ascendente y 80.0 descendente.
  • edge: EDGE/EGPRS, que usa una velocidad de 118.4 ascendente y 236.8 descendente.
  • umts: UMTS/3G, que usa una velocidad de 128.0 ascendente y 1,920 descendente.
  • hsdpa: HSDPA, que usa una velocidad de 348.0 ascendente y 14,400.0 descendente.
  • lte: LTE, que usa una velocidad de 58,000 ascendente y 173,000 descendente.
  • evdo: EVDO, que utiliza una velocidad de 75,000 ascendente y 280,000 descendente.
  • full: Velocidad ilimitada, pero depende de la velocidad de conexión de tu computadora.
  • num: Establece una velocidad exacta en kilobits por segundo que se utiliza para carga y descarga.
  • up:down: Establece las velocidades exactas en kilobits por segundo para carga y descarga por separado.

Para establecer la velocidad de red al inicio del emulador, usa la opción del emulador -netspeed con un valor de speed compatible, como en la lista anterior de formatos de velocidad de red. Estos son algunos ejemplos:

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

Para realizar cambios en la velocidad de la red mientras el emulador está en funcionamiento, conéctate a la consola y usa el comando network speed con un valor de speed compatible que se encuentre en la lista anterior de formatos de velocidad de red.

network speed 14.4 80
network capture {start|stop} file Envía paquetes a un archivo. En la siguiente lista, se describen los parámetros y los valores de los parámetros:
  • start file: Comienza a enviar paquetes al archivo especificado.
  • stop file: Comienza a enviar paquetes al archivo especificado.
Emulación de telefonía Descripción
Android Emulator incluye sus propios módems GSM y CDMA emulados que te permiten simular funciones de telefonía en el emulador. Por ejemplo, con GSM, puedes simular llamadas telefónicas entrantes y establecer y detener conexiones de datos. Con CDMA, proporcionas una fuente de suscripción y la lista de roaming preferida. El sistema Android controla las llamadas simuladas exactamente como lo haría con las llamadas reales. El emulador no admite audio de la llamada.
gsm {call|accept|cancel|busy} phonenumber Los parámetros de gsm son los siguientes:
  • call: Simula una llamada entrante desde phonenumber.
  • accept: Acepta una llamada entrante desde phonenumber y cambia el estado de la llamada a active. Podrás cambiar el estado de una llamada a active solo cuando el estado actual sea waiting o held.
  • cancel: Termina una llamada entrante o saliente con phonenumber.
  • busy: Cierra una llamada saliente a phonenumber y cambia el estado de la llamada a busy. Puedes cambiar el estado de una llamada a busy solo cuando el estado actual es waiting.
gsm {data|voice} state El comando data state cambia el estado de la conexión de datos GPRS y el comando data voice state cambia el estado de la conexión de voz GPRS de la siguiente manera:
  • unregistered: No hay redes disponibles.
  • home: En la red local, sin roaming.
  • roaming: En red de roaming.
  • searching: Buscando redes.
  • denied: Solo llamadas de emergencia.
  • off: Igual que unregistered.
  • on: Igual que home.
gsm hold Cambia el estado de una llamada a hold. Puedes cambiar el estado de una llamada a hold solo cuando el estado actual es active o waiting.
gsm list Detalla todas las llamadas entrantes y salientes, así como sus estados.
gsm status Informa el estado actual de voz/datos de GSM. Los valores son los descritos para los comandos voice y data.
gsm signal {rssi|ber} Cambia la intensidad de la señal informada (rssi) y el índice de error de bit (ber) en los próximos 15 segundos de actualización. En la siguiente lista, se describen los parámetros y sus valores:
  • El rango de rssi es de 0 a 31 y 99 para un valor desconocido.
  • El rango de ber es de 0 a 7 y 99 para un valor desconocido.
gsm signal-profile num Establece el perfil de intensidad de la señal. num es un número del 0 al 4.
cdma ssource source Establece la fuente de suscripción de CDMA actual, donde source es una lista de entidades permitidas basada en la red que incluye los suscriptores del proveedor de CDMA y sus valores, de la siguiente manera:
  • nv: lee la suscripción desde la memoria RAM no volátil.
  • ruim: Lee la suscripción desde el módulo extraíble de identidad de usuario (RUIM).
cdma prl_version version Vuelca la versión actual de la lista de roaming preferida (PRL). El número de versión es para la base de datos de la PRL que contiene información utilizada durante el proceso de selección y adquisición del sistema.
Administrar sensores en el emulador Descripción
Estos comandos se relacionan con los sensores disponibles en el AVD. Además de usar el comando sensor, puedes ver y ajustar la configuración del emulador en la pantalla Virtual sensors de las pestañas Accelerometer y Additional sensors.
sensor status Enumera todos los sensores y sus estados. El siguiente es un ejemplo de resultado para el comando sensor status:
sensor get sensor-name Obtiene la configuración de sensor-name. En el siguiente ejemplo, se obtiene el valor del sensor de aceleración:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Los valores de acceleration separados por dos puntos (:) hacen referencia a las coordenadas "x", "y", y "z" de los sensores virtuales.

sensor set sensor-name value-x:value-y:value-z Establece los valores de sensor-name. En el siguiente ejemplo, se establece el sensor de aceleración en los siguientes valores de "x", "y" y "z" separados por dos puntos.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulación de SMS Descripción
sms send sender-phone-number textmessage Genera un SMS entrante emulado. En la siguiente lista, se describen los parámetros y sus valores:
  • sender-phone-number: Incluye una string numérica arbitraria.
  • textmessage: Es el mensaje SMS.

En el siguiente ejemplo, se envía el mensaje "hi there" al número de teléfono 4085555555.

sms send 4085555555 hi there

La consola reenvía el mensaje SMS al framework de Android, que lo pasa a una app en el emulador compatible con SMS, por ejemplo, la app de Mensajes. Si pasas 10 números, la app les aplica el formato de número de teléfono. Las strings numéricas más largas o más cortas se muestran con la forma en que las enviaste.

Simulación de huellas digitales Descripción
finger touch fingerprint-id Simula un dedo que toca el sensor.
finger remove Simula que se levanta un dedo.

Para obtener instrucciones sobre cómo usar estos comandos, consulta la siguiente sección sobre simulación y validación de huellas digitales.

Simulación y validación de huellas digitales

Figura 1: Pantalla de autenticación de huella digital.

Usa el comando finger para simular y validar la autenticación de huellas digitales para tu app. Necesitas la versión 24.3 o versiones posteriores de las herramientas del SDK y Android 6.0 (nivel de API 23) o versiones posteriores.

Para simular y validar la autenticación de huellas digitales, sigue estos pasos:

  1. Si aún no tienes un ID de huella digital, inscriobe una nueva huella en el emulador seleccionando Settings > Security > Fingerprint y sigue las instrucciones correspondientes.
  2. Configura tu app para que acepte la autenticación por huella digital. Después de que realices esta configuración, el dispositivo mostrará la pantalla de autenticación de huellas digitales.
  3. Mientras tu app muestra esa pantalla, ve a la consola y escribe el comando finger touch y el ID de huella digital que creaste. Esto simulará el toque de un dedo.
  4. Luego, ingresa el comando finger remove, que simulará la acción de levantar el dedo.

    La app debe responder como si un usuario tocara el sensor de huellas dactilares y, luego, levantara el dedo.