Participe do evento ⁠#Android11: apresentação de lançamento da versão Beta no dia 3 de junho.

Enviar comandos no console do emulador

Cada dispositivo virtual em execução dispõe de um console que permite consultar e controlar o ambiente do dispositivo emulado. Por exemplo, é possível usar o console para gerenciar redirecionamentos de porta, características de rede e eventos de telefonia enquanto o app está sendo executado no emulador.

Os comandos a seguir precisam de um emulador em execução. Para saber mais sobre como executar um emulador, consulte Executar aplicativos no Android Emulator e Iniciar o emulador na linha de comando.

Iniciar e parar uma sessão do console

Para acessar o console e inserir comandos, em uma janela de terminal, use telnet para se conectar à porta do console e informe o token de autenticação. Cada vez que o console exibe OK, ele está pronto para aceitar comandos. Não há um prompt típico.

Para conectar-se ao console de um dispositivo virtual em execução:

  1. Abra uma janela de terminal e insira o seguinte comando:
  2. telnet localhost console-port

    O título da janela do emulador lista o número da porta do console. Por exemplo, o título da janela de um emulador usando a porta de console 5554 pode ser Nexus_5X_API_23:5554. Além disso, o comando adb devices imprime uma lista de dispositivos virtuais em execução e os números de porta de console. Para ver mais informações, acesse Consultar instâncias de emulador/dispositivo.

    Observação: o emulador detecta conexões nas portas 5554 a 5585 e aceita conexões apenas do localhost.

  3. Depois que o console exibir OK, insira o comando auth auth_token.
  4. Para que você insira comandos, o console do emulador requer autenticação. auth_token precisa corresponder ao conteúdo do arquivo .emulator_console_auth_token no seu diretório inicial.

    O comando telnet localhost console-port criará esse arquivo, que contém um token de autenticação gerado aleatoriamente, caso ele não exista. Para desativar a autenticação, exclua o token do arquivo .emulator_console_auth_token ou crie um arquivo vazio se ele não existir.

  5. Depois de conectar-se ao console, insira os comandos.
  6. Digite help, help command ou help-verbose para ver uma lista de comandos de console e saber mais sobre comandos específicos.

  7. Para sair da sessão de console, insira quit ou exit.

Veja um exemplo de sessão:

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

Referência de comando do emulador

A tabela a seguir descreve os comandos do console do emulador com os parâmetros e valores relacionados.

Tabela 1. Comandos do console do emulador

Comandos gerais Descrição
avd {stop|start|status|name} Consulta, controla e gerencia o dispositivo virtual da seguinte maneira:
  • stop: para a execução do dispositivo.
  • start: inicia a execução do dispositivo.
  • status: consulta o status do dispositivo virtual, que pode ser running ou stopped.
  • name: consulta o nome do dispositivo virtual.
avd snapshot {list|save name|load name|delete name} Salva e restaura o estado do dispositivo em snapshots da seguinte maneira:
  • list: lista todos os snapshots salvos.
  • save name: salva o snapshot como name.
  • load name: carrega o snapshot nomeado.
  • delete name: exclui o snapshot nomeado.

O exemplo a seguir salva um snapshot com o nome firstactivitysnapshot.


avd snapshot save firstactivitysnapshot
fold Dobra o dispositivo para exibir a menor configuração de tela (se o dispositivo for dobrável e estiver desdobrado no momento).
unfold Desdobra o dispositivo para exibir a maior configuração de tela (se o dispositivo for dobrável e estiver dobrado no momento).
kill Encerra o dispositivo virtual.
ping Verifica se o dispositivo virtual está sendo executado.
rotate Gira o AVD no sentido anti-horário em incrementos de 45 graus.
Falha no emulador Descrição
crash Causa uma falha no emulador durante a execução do app.
crash-on-exit Causa uma falha no emulador quando o app é encerrado.
Tags de depuração Descrição
debug tags ...

Ativa ou desativa mensagens de depuração de partes específicas do emulador. O parâmetro tags precisa ser um valor da lista de tags de depuração que aparece quando você executa emulator -help-debug-tags. Para mais informações sobre a opção -help-debug-tags, consulte Opções do emulador usadas com mais frequência.

O exemplo a seguir ativa a tag radio:


debug radio
Redirecionamento de porta Descrição
redir list Lista o redirecionamento de porta atual.
redir add protocol:host-port:guest-port Adiciona um novo redirecionamento de porta, da seguinte maneira:
  • protocol: precisa ser tcp ou udp.
  • host-port: o número da porta a ser aberta no host.
  • guest-port: o número da porta para a qual rotear dados no emulador.
redir del protocol:host-port Exclui um redirecionamento de porta.
  • protocol: precisa ser tcp ou udp.
  • host-port: o número da porta a ser aberta no host.
Localização geográfica Descrição
Define a localização geográfica relatada para os apps em execução dentro de um emulador, enviando um ponto GPS para o emulador.

Você poderá emitir o comando geo assim que um dispositivo virtual estiver em execução. O emulador define o local que você insere criando um provedor de locais fictícios. Esse provedor responde aos listeners de localização definidos por apps e também informa o local para o LocationManager. Qualquer app pode consultar o gerenciador de localização para ver o ponto GPS atual do dispositivo emulado chamando LocationManager.getLastKnownLocation("gps")

geo fix longitude latitude satellites [altitude] Envia um ponto GPS simples para o emulador. Especifique longitude e latitude em graus decimais. Use um número de 1 a 12 para especificar a quantidade de satellites a ser usada para determinar a posição e especifique altitude em metros.
geo nmea sentence Envia uma sentença NMEA 0183 para o dispositivo emulado, como se ela tivesse sido enviada de um modem GPS emulado. Inicie sentence com "$GP". Apenas as sentenças "$GPGGA" e "$GPRCM" são compatíveis no momento. O exemplo a seguir é uma sentença de Dados de Posição do Sistema de Posicionamento Global (GPGGA, na sigla em inglês) que recebe o horário, a posição e os dados de localização de um receptor 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 falsos de hardware Descrição
event types Lista todos os tipos de eventos falsos. Para eventos que têm códigos, o número de códigos é listado entre parênteses à direita.


    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 ...] Envia um ou mais tipos de eventos falsos.
event codes type Lista os códigos de evento para o tipo de evento falso especificado.
event send type[:code]:[value] [...] Envia um ou mais eventos falsos com códigos opcionais e valores de código.

Para descobrir exatamente que evento enviar, você pode usar o comando adb enquanto pressiona manualmente os botões no emulador.

Estes são os eventos gerados quando você pressiona o botão liga/desliga:


    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
          
Neste caso específico, precisávamos enviar apenas os dois eventos EV_KEY, keydown e keyup, para simular um pressionamento do botão liga/desliga:

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

event text message Envia uma string de caracteres que simulam pressionamentos de tecla. A mensagem precisa ser uma string UTF-8. As postagens Unicode são mapeadas de maneira reversa de acordo com o teclado do dispositivo atual, e os caracteres incompatíveis são descartados silenciosamente.
Controlar o estado de energia relatado pelo emulador para apps Descrição
power display Exibe o estado da bateria e do carregador.
power ac {on|off} Define o estado de carregamento CA como on ou off.
power status {unknown|charging|discharging|not-charging|full} Muda o status da bateria conforme especificado.
power present {true|false} Define o estado de presença da bateria.
power health {unknown|good|overheat|dead|overvoltage|failure} Define o estado de integridade da bateria.
power capacity percent Define o estado da capacidade restante da bateria como uma porcentagem de 0 a 100.
Status da conexão de rede Descrição
network status Verifica o status da rede e as características atuais de atraso e velocidade.
network delay latency Altera a latência da rede emulada.

O emulador permite simular vários níveis de latência de rede para que você possa testar o app em um ambiente mais próximo das condições reais em que ele será executado. Você pode definir um nível de latência ou um intervalo na inicialização do emulador ou usar o console para mudar a latência enquanto o app está sendo executado no emulador.

Para definir a latência na inicialização, use a opção de emulador -netdelay com um valor compatível de latency, de acordo com a lista de formatos de latência de rede abaixo. Veja alguns exemplos:


emulator -netdelay gprs
    emulator -netdelay 40,100

Para fazer mudanças no atraso da rede enquanto o emulador está em execução, conecte-se ao console e use o comando netdelay com um valor compatível de latency da lista de formatos de latência de rede abaixo.


network delay gprs
    network delay 40 100

Formato de latência de rede:

O formato de latency da rede é um dos seguintes (os números estão em milésimos de segundo):

  • gprs: GPRS, que usa um intervalo de latência de no mínimo 150 e no máximo 550.
  • edge: EDGE/EGPRS, que usa um intervalo de latência de no mínimo 80 e no máximo 400.
  • umts: UMTS/3G, que usa um intervalo de latência de no mínimo 35 e no máximo 200.
  • none: sem latência.
  • num: emula a latência especificada em milésimos de segundo.
  • min:max: emula o intervalo de latência especificado.
network speed speed O emulador permite simular várias taxas de transferência de rede.

Você pode definir uma taxa de transferência ou um intervalo na inicialização do emulador ou usar o console para mudar a taxa enquanto o app está sendo executado no emulador.

Para definir a velocidade da rede na inicialização, use a opção de emulador -netspeed com um valor compatível de speed, conforme listado na lista de formatos de velocidade de rede abaixo. Veja alguns exemplos:


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

Para fazer mudanças na velocidade da rede enquanto o emulador está em execução, conecte-se ao console e use o comando network speed com um valor compatível de speed da lista de formatos de velocidade da rede abaixo.


network speed 14.4 80

Formato de velocidade da rede:

O formato de speed da rede é um dos seguintes (os números estão em kilobits/s):

  • gsm: GSM/CSD, que usa uma velocidade de 14,4 de upload e 14,4 de download.
  • hscsd: HSCSD, que usa uma velocidade de 14,4 de upload e 43,2 de download.
  • gprs: GPRS, que usa uma velocidade de 40,0 de upload e 80,0 de download.
  • edge: EDGE/EGPRS, que usa uma velocidade de 118,4 de upload e 236,8 de download.
  • umts: UMTS/3G, que usa uma velocidade de 128,0 de upload e 1.920 de download.
  • hsdpa: HSDPA, que usa uma velocidade de 348,0 de upload e 14.400,0 de download.
  • lte: LTE, que usa uma velocidade de 58.000 de upload e 173.000 de download.
  • evdo: EVDO, que usa uma velocidade de 75.000 de upload e 280.000 de download.
  • full: velocidade ilimitada, mas depende da velocidade de conexão do seu computador.
  • num: define uma taxa exata em kilobits/s usada para upload e download.
  • up:down: define taxas exatas em kilobits/s para upload e download separadamente.
network capture {start|stop} file Envia pacotes para um arquivo. A lista a seguir descreve os parâmetros e valores relacionados:
  • start file: começa a enviar pacotes para o arquivo especificado.
  • stop file: para de enviar pacotes para o arquivo especificado.
Emulação de telefonia Descrição
O emulador Android inclui os próprios modems emulados GSM e CDMA que permitem simular funções de telefonia. Por exemplo, com o GSM, é possível simular chamadas de entrada, além de estabelecer e encerrar conexões de dados. Com o CDMA, você informa uma fonte de assinatura e a lista de roaming preferencial. O sistema Android processa chamadas simuladas exatamente como faria com chamadas reais. O emulador não é compatível com áudio de chamada.
gsm {call|accept|cancel|busy} phonenumber Os parâmetros gsm são os seguintes:
  • call: simula uma chamada de entrada de phonenumber.
  • accept: aceita uma chamada de entrada de phonenumber e muda o estado da chamada para active. Você só pode mudar um estado de chamada para active quando o estado atual é waiting ou held.
  • cancel: encerra uma chamada de entrada ou saída de ou para phonenumber.
  • busy: fecha uma chamada de saída para phonenumber e muda o estado da chamada para busy. Você só pode mudar um estado de chamada para busy quando o estado atual é waiting.
gsm {data|voice} state O comando data state muda o estado da conexão de dados GPRS, e o data voice state muda o estado da conexão de voz GPRS da seguinte maneira:
  • unregistered: nenhuma rede disponível.
  • home: em rede local, sem roaming.
  • roaming: em rede de roaming.
  • searching: pesquisando redes.
  • denied: somente chamadas de emergência.
  • off: igual a unregistered.
  • on: igual a home.
gsm hold Muda o estado de uma chamada para hold. Você só pode mudar um estado de chamada para hold quando o estado atual é active ou waiting.
gsm list Lista todas as chamadas de entrada e de saída, bem como os estados correspondentes.
gsm status Informa o estado atual de voz e dados GSM. Os valores são aqueles descritos para os comandos voice e data.
gsm signal {rssi|ber} Muda a intensidade do sinal relatado (rssi, na sigla em inglês) e a taxa de erros de bit (ber, na sigla em inglês) nos próximos 15 segundos de atualização. A lista a seguir descreve os parâmetros e valores relacionados:
  • O intervalo de rssi é de 0 a 31, e 99 para desconhecido.
  • O intervalo de ber é de 0 a 7, e 99 para desconhecido.
gsm signal-profile num Define o perfil da intensidade do sinal. Digite um número de 0 a 4.
cdma ssource source source: define a origem da assinatura CDMA atual, em que source é uma lista de permissões baseada em rede que contém os assinantes da operadora CDMA e os valores correspondentes, da seguinte maneira:
  • nv: lê a assinatura da RAM não volátil.
  • ruim: lê a assinatura do Removable User Identity Module (R-UIM).
cdma prl_version version Despeja a versão atual da lista de roaming preferencial (PRL, na sigla em inglês). O número da versão destina-se ao banco de dados da PRL que contém informações usadas durante o processo de seleção e aquisição do sistema.
Gerenciar sensores no emulador Descrição
Esses comandos referem-se aos sensores que estão disponíveis no AVD. Além de usar o comando sensor, você pode ver e ajustar as configurações no emulador na tela Virtual sensors, nas guias Accelerometer e Additional sensors. Para ver mais informações, consulte Trabalhar com os controles estendidos, as configurações e a ajuda.
sensor status Lista todos os sensores e os status correspondentes. Veja a seguir um exemplo de saída para o comando sensor status:
sensor get sensor-name Veja as configurações de sensor-name. O exemplo a seguir acessa o valor do sensor de aceleração:

    sensor get acceleration
    acceleration = 2.23517e-07:9.77631:0.812348
    

Os valores de acceleration separados por dois pontos (:) referem-se às coordenadas x, y e z dos sensores virtuais descritos em Trabalhar com os controles estendidos, as configurações e a ajuda.

sensor set sensor-name value-x:value-y:value-z Defina os valores para sensor-name. O exemplo a seguir define o sensor de aceleração com os seguintes valores de x, y e z separados por dois pontos. Para ver mais informações, consulte Trabalhar com os controles estendidos, as configurações e a ajuda.

sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulação de SMS Descrição
sms send sender-phone-number textmessage Gera um SMS recebido emulado. A lista a seguir descreve o parâmetro e os valores relacionados:
  • sender-phone-number: contém uma string numérica arbitrária.
  • textmessage: a mensagem SMS.

O exemplo a seguir envia a mensagem "olá" para o número de telefone 4085555555.


sms send 4085555555 hi there

O console encaminha a mensagem SMS para o framework do Android, que a passa para um app no emulador que processa SMS, como o app Mensagens. Se você passar dez números, o app os formatará como um número de telefone. Sequências numéricas mais longas ou mais curtas são exibidas da maneira como você as envia.

Simulação de impressão digital Descrição
finger touch fingerprint-id Simula um dedo tocando o sensor.
finger remove Simula um dedo deixando o sensor.

Para ver instruções de como usar esses comandos, consulte Simulação e validação de impressão digital.

Simulação e validação de impressão digital

Figura 1. Tela de autenticação de impressão digital.

Use o comando finger para simular e validar a autenticação de impressão digital para seu aplicativo. Você precisa das Ferramentas do SDK 24.3 ou mais recente e do Android 6.0 (API level 23) ou mais recente.

Para simular e validar a autenticação de impressão digital, siga estas etapas:

  1. Se você ainda não tem um código de impressão digital, cadastre uma nova impressão digital no emulador selecionando Settings > Security > Fingerprint e seguindo as instruções de cadastro.
  2. Configure seu app para aceitar a autenticação de impressão digital. Quando essa configuração é concluída, o dispositivo exibe a tela de autenticação de impressão digital.
  3. Enquanto o app estiver exibindo a tela de autenticação de impressão digital, vá para o console e insira o comando finger touch e o código de impressão digital que você criou. Isso simula um toque do dedo.
  4. Em seguida, insira o comando finger remove para simular a elevação do dedo.

    Seu app responderá como se o usuário tivesse tocado e elevado o dedo do sensor de impressão digital.