Cómo enviar comandos de la consola del emulador

Cada dispositivo virtual en ejecución proporciona una consola que te permite consultar y controlar el entorno del dispositivo emulado. Por ejemplo, puedes usar la consola para administrar la redirección 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 consola

Si quieres acceder a la consola y, luego, ingresar 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 tiene 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

    En el título de la ventana del emulador, se incluye el número de puerto de la consola. Por ejemplo, el título de la ventana para un emulador que usa el puerto de consola 5554 podría ser Nexus_5X_API_23: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 sobre instancias de emulador o dispositivo.

    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 de tu directorio principal.

    Si no existe ese archivo, el comando telnet localhost console-port lo creará, que 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|?         print a list of commands
        help-verbose     print a list of cmmands with descriptions
        ping             check if the emulator is alive
        automation       record and play back macros for device state 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             connect to the QEMU virtual machine monitor
        sensor           manage emulator sensors
        physics          record and playback physical model state changes
        finger           manage emulator fingerprint
        debug            control the emulator debug output tags
        rotate           rotate the screen by 90 degrees
        screenrecord     record the emulator's display
        fold             fold the device
        unfold           unfold the device
        multidisplay     create/modify/delete displays besides the default android display

    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 como se indica a continuación:
  • stop: Detén 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 nombre.
  • 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 proceso del 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 Bloquea el emulador durante la ejecución de la app.
crash-on-exit Bloquea el emulador 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 Opciones del emulador de uso común.

En el siguiente ejemplo, se habilita la etiqueta radio:


debug radio
Redirección de puerto Descripción
redir list Detalla la redirección de puerto actual.
redir add protocol:host-port:guest-port Agrega una nueva redirección 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 una redirección de 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 el comando geo tan pronto como se ejecute un dispositivo virtual. El emulador establece la ubicación que ingresas y crea un proveedor de ubicación simulada. Este proveedor responde a los receptores de ubicación establecidos por las apps y proporciona la ubicación al LocationManager. Cualquier app puede realizar una consulta al administrador de ubicaciones a fin de obtener los datos del GPS para el dispositivo emulado llamando a LocationManager.getLastKnownLocation("gps")

geo fix longitude latitude satellites [altitude] Envía una vez datos del GPS al emulador. Especifica la longitude y latitude en grados decimales. Usa un número del 1 al 12 a fin de especificar la cantidad de satellites que se usarán para determinar la posición y especifica la altitude en metros.
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 la 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 Detalla 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 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. En el siguiente ejemplo, se envían tres eventos; los dos últimos incluyen un código de evento.

event send EV_PWR EV_SW:SW_LID EV_REL:REL_X
event text message Envía una string 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.
Controlar el estado de energía que informa el emulador a las apps 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 u 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 la capacidad restante de la batería como 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 la red emulada.

El emulador te permite simular varios niveles de latencia de red para que puedas probar tu app en un entorno más relacionado con las condiciones reales en las que se ejecutará. Puedes establecer un nivel o rango de latencia al iniciar emulador, o usar la consola para cambiar la latencia mientras se ejecuta la app.

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 de formatos de latencia de red a continuación. 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 admitido, que se encuentre en la lista de formatos de latencia de red a continuación.


network delay gprs
    network delay 40 100

Formato de latencia de red:

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

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

Para establecer la velocidad de la red al inicio del emulador, usa la opción del emulador -netspeed con un valor de speed compatible, que se encuentre en la lista de formatos de velocidad de red a continuación. 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 admitido, que se encuentre en la lista de formatos de velocidad de red a continuación.


network speed 14.4 80

Formato de velocidad de red:

El formato de la speed de la red es uno de los siguientes (los números son kilobits/seg):

  • 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 utiliza 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/seg utilizada para carga y descarga
  • up:down: Establece las velocidades exactas en kilobits/s para carga y descarga por separado
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: Deja de 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 llamada.
gsm {call|accept|cancel|busy} phonenumber Los parámetros 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. Puedes cambiar el estado de una llamada a active solo cuando el estado actual es waiting o held.
  • cancel: Termina una llamada telefónica entrante o saliente hacia el phonenumber o desde él.
  • 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 data voice state cambia el estado de la conexión de voz GPRS, de la siguiente manera:
  • unregistered: No hay red disponible
  • 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 Configura el perfil de intensidad de la señal. Ingresa un número del 0 al 4.
cdma ssource source source: Establece la fuente de suscripción de CDMA actual, donde source es una lista blanca basada en 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 utilizar el comando sensor, puedes ver y ajustar la configuración del emulador en la pantalla Virtual sensors, en las pestañas Accelerometer y Additional sensors. Para obtener más información, consulta Cómo trabajar con los controles extendidos, la configuración y la ayuda.
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 Obtén 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 descritos en Cómo trabajar con los controles extendidos, la configuración y la ayuda.

sensor set sensor-name value-x:value-y:value-z Define 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. Para obtener más información, consulta Cómo trabajar con los controles extendidos, la configuración y la ayuda.

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: Contiene 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 marco de trabajo 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 los formatea como un 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 Toca el sensor para simular un dedo.
finger remove Simula la extracción del dedo.

Para obtener instrucciones sobre cómo usar estos comandos, consulta 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 a fin de simular y validar la autenticación de huellas digitales para tu app. Necesitas SDK Tools 24.3 o posterior y Android 6.0 (nivel de API 23) o posterior.

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

  1. Si aún no tienes una identificación de huella digital, registra una nueva huella en el emulador seleccionando Settings > Security > Fingerprint y sigue estas instrucciones.
  2. Configura tu app para que acepte la autenticación de huellas digitales. Después de que realices esta configuración, el dispositivo mostrará la pantalla de autenticación de huellas digitales.
  3. Mientras tu app muestra la pantalla de autenticación de huellas digitales, ve a la consola e ingresa 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á el retiro del dedo.

    La app debe responder como si un usuario tocara y, luego, retirara el dedo del sensor de huellas digitales.