Invia comandi della console emulatore

Ogni dispositivo virtuale in esecuzione fornisce una console che consente di eseguire query sull'ambiente del dispositivo emulato e di controllarlo. Ad esempio, puoi utilizzare la console per gestire il reindirizzamento delle porte, le caratteristiche di rete e gli eventi di telefonia mentre l'app è in esecuzione sull'emulatore.

I comandi seguenti richiedono che sia già in esecuzione un emulatore. Per maggiori informazioni sull'esecuzione di un emulatore, vedi Eseguire app sull'emulatore Android e Avviare l'emulatore dalla riga di comando.

Avviare e interrompere una sessione della console

Per accedere alla console e inserire comandi da una finestra del terminale, utilizza telnet per connetterti alla porta della console e fornire il token di autenticazione. Ogni volta che nella console viene visualizzato OK, la console è pronta per accettare comandi. Non esiste un prompt tipico.

Per connetterti alla console di un dispositivo virtuale in esecuzione:

  1. Apri una finestra del terminale e inserisci questo comando:
  2. telnet localhost console-port

    Il titolo della finestra dell'emulatore elenca il numero di porta della console quando viene eseguita in una finestra separata, ma non quando viene eseguita in una finestra degli strumenti. Ad esempio, il titolo della finestra per un emulatore che utilizza la porta della console 5554 potrebbe essere Pixel8_API_34:5554. Inoltre, il comando adb devices stampa un elenco dei dispositivi virtuali in esecuzione e i relativi numeri di porta della console. Per maggiori informazioni, consulta Query per i dispositivi.

    Nota: l'emulatore rimane in ascolto delle connessioni sulle porte da 5554 a 5585 e accetta connessioni solo da localhost.

  3. Quando nella console viene visualizzato OK, inserisci il comando auth auth_token.
  4. Prima di poter inserire i comandi della console, la console dell'emulatore richiede l'autenticazione. auth_token deve corrispondere ai contenuti del file .emulator_console_auth_token nella tua home directory.

    Se il file non esiste, il comando telnet localhost console-port crea il file, che contiene un token di autenticazione generato in modo casuale. Per disabilitare l'autenticazione, elimina il token dal file .emulator_console_auth_token o crea un file vuoto se non esiste.

  5. Dopo aver effettuato la connessione alla console, inserisci comandi della console.
  6. Inserisci help, help command o help-verbose per visualizzare un elenco di comandi della console e scoprire di più su comandi specifici.

  7. Per uscire dalla sessione della console, inserisci quit o exit.

Ecco un esempio di sessione:

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

Riferimento per i comandi dell'emulatore

La tabella seguente descrive i comandi della console dell'emulatore con i relativi parametri e valori:

Tabella 1. Comandi della console dell'emulatore

Comandi generici Descrizione
avd {stop|start|status|name} Esegue query, controlla e gestisce il dispositivo virtuale nel modo seguente:
  • stop: interrompe l'esecuzione del dispositivo.
  • start: avvia l'esecuzione del dispositivo.
  • status: esegue una query sullo stato del dispositivo virtuale, che può essere running o stopped.
  • name: esegue una query sul nome del dispositivo virtuale.
avd snapshot {list|save name|load name|delete name} Salva e ripristina lo stato del dispositivo negli snapshot, come segue:
  • list: elenca tutte le istantanee salvate.
  • save name: salva l'istantanea come name.
  • load name: carica lo snapshot denominato.
  • delete name: elimina lo snapshot denominato.

L'esempio seguente salva uno snapshot con il nome firstactivitysnapshot:

avd snapshot save firstactivitysnapshot
fold Consente di piegare il dispositivo per visualizzare la configurazione dello schermo più piccolo, se il dispositivo è pieghevole e al momento aperto.
unfold Consente di aprire il dispositivo per visualizzare la configurazione dello schermo più grande, se il dispositivo è pieghevole e al momento chiuso.
kill Termina il dispositivo virtuale.
ping Controlla se il dispositivo virtuale è in esecuzione.
rotate Ruota la durata di visualizzazione media in senso antiorario con incrementi di 45 gradi.
Arresto dell'emulatore Descrizione
crash Arresto dell'emulatore durante l'esecuzione dell'app.
crash-on-exit Fa in modo che l'emulatore si arresta in modo anomalo quando l'app si chiude.
Tag di debug Descrizione
debug tags ...

Attiva o disattiva i messaggi di debug da parti specifiche dell'emulatore. Il parametro tags deve essere un valore presente nell'elenco dei tag di debug che compare quando esegui emulator -help-debug-tags. Per maggiori informazioni sull'opzione -help-debug-tags, consulta la tabella delle opzioni più comuni.

Nell'esempio seguente viene attivato il tag radio:

debug radio
Reindirizzamento delle porte Descrizione
redir list Elenca il reindirizzamento delle porte attuale.
redir add protocol:host-port:guest-port Aggiunge un nuovo reindirizzamento delle porte, come segue:
  • protocol: deve essere tcp o udp.
  • host-port: il numero di porta da aprire nell'host.
  • guest-port: il numero di porta a cui instradare i dati sull'emulatore.
redir del protocol:host-port Elimina un reindirizzamento delle porte.
  • protocol: deve essere tcp o udp.
  • host-port: il numero di porta da aprire nell'host.
Posizione geografica Descrizione

Imposta la posizione geografica segnalata alle app in esecuzione all'interno di un emulatore inviando una posizione GPS all'emulatore.

Puoi eseguire uno dei seguenti comandi geo non appena è in esecuzione un dispositivo virtuale. L'emulatore imposta la posizione inserita creando un provider di posizione fittizio. Questo provider risponde ai listener di posizione impostati dalle app e fornisce la posizione a LocationManager. Qualsiasi app può inviare una query a Gestione posizioni per ottenere la posizione GPS corrente del dispositivo emulato chiamando il numero LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Invia una semplice correzione GPS all'emulatore. Specifica longitude e latitude in gradi decimali. Utilizza un numero compreso tra 1 e 12 per specificare il numero di satellites da usare per determinare la posizione e specifica altitude in metri e velocity in nodi.
geo nmea sentence Invia una frase NMEA 0183 al dispositivo emulato come se fosse stata inviata da un modem GPS emulato. Inizia sentence con "$GP". Al momento sono supportate solo le frasi "$GPGGA" e "$GPRCM". L'esempio seguente è una frase GPGGA (Global Positioning SystemFix Data) che ottiene i dati su ora, posizione e posizione per un ricevitore 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
Eventi hardware falsi Descrizione
event types Elenca tutti i tipi di eventi falsi. Per gli eventi che hanno dei codici, il numero di codici è elencato tra parentesi a destra.

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 ...] Invia uno o più tipi di eventi falsi.
event codes type Elenca i codici evento per il tipo di evento falso specificato.
event send type[:code]:[value] [...] Invia uno o più eventi falsi con codici facoltativi e valori di codice.

Per scoprire esattamente quale evento inviare, puoi usare il comando adb mentre premi manualmente i pulsanti dell'emulatore.

Questi sono gli eventi generati quando premi il tasto di accensione:

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
      
Ad esempio, per simulare una pressione prolungata del tasto di accensione, invia due eventi EV_KEY per keydown e keyup:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Invia una stringa di caratteri che simula la pressione dei tasti. Il messaggio deve essere una stringa UTF-8. I post Unicode vengono mappati in modo inverso in base alla tastiera attuale del dispositivo e i caratteri non supportati vengono eliminati automaticamente.
Controlli di alimentazione Descrizione
power display Mostra lo stato della batteria e del caricabatterie.
power ac {on|off} Imposta lo stato di ricarica con alimentazione su on o off.
power status {unknown|charging|discharging|not-charging|full} Modifica lo stato della batteria come specificato.
power present {true|false} Imposta lo stato di presenza della batteria.
power health {unknown|good|overheat|dead|overvoltage|failure} Imposta lo stato di integrità della batteria.
power capacity percent Imposta lo stato di capacità rimanente della batteria come percentuale da 0 a 100.
Stato della connessione di rete Descrizione
network status Controlla lo stato della rete, le caratteristiche di ritardo attuale e velocità.
network delay latency

Modifica la latenza di rete emulata.

L'emulatore ti consente di simulare vari livelli di latenza di rete per poter testare l'app in un ambiente più tipico delle condizioni di esecuzione effettive. Puoi impostare un livello o un intervallo di latenza all'avvio dell'emulatore oppure puoi utilizzare la console per modificare la latenza mentre l'app è in esecuzione nell'emulatore.

Il formato della rete latency è uno dei seguenti (i numeri sono in millisecondi):

Formato latenza di rete:

  • gprs: GPRS, che utilizza un intervallo di latenza minimo di 150 e massimo di 550.
  • edge: EDGE/EGPRS, che utilizza un intervallo di latenza minimo di 80 e massimo di 400.
  • umts: UMTS/3G, che utilizza un intervallo di latenza minimo di 35 e massimo 200.
  • none: nessuna latenza.
  • num: emula la latenza specificata in millisecondi.
  • min:max: emula l'intervallo di latenza specificato.

Per impostare la latenza all'avvio dell'emulatore, utilizza l'opzione emulatore -netdelay con un valore latency supportato, come elencato nel precedente elenco Formati per la latenza di rete precedente. Ecco alcuni esempi:

emulator -netdelay gprs
emulator -netdelay 40,100

Per apportare modifiche al ritardo di rete mentre l'emulatore è in esecuzione, connettiti alla console e usa il comando netdelay con un valore latency supportato dall'elenco Formato latenza di rete precedente.

network delay gprs
network delay 40 100
network speed speed L'emulatore consente di simulare diverse velocità di trasferimento di rete.

Puoi impostare una velocità o un intervallo di trasferimento all'avvio dell'emulatore oppure puoi utilizzare la console per cambiare la velocità mentre l'app è in esecuzione nell'emulatore.

Il formato della rete speed è uno dei seguenti (i numeri sono kilobit/sec):

Formato velocità di rete:

  • gsm: GSM/CSD, che utilizza una velocità di 14,4 in su e 14,4 in basso.
  • hscsd: HSCSD, che utilizza una velocità di 14,4 in alto e 43,2 in basso.
  • gprs: GPRS, che utilizza una velocità di 40,0 in più e 80,0 in basso.
  • edge: EDGE/EGPRS, che utilizza una velocità di 118,4 in più e 236,8 in basso.
  • umts: UMTS/3G, che utilizza una velocità di 128,0 in più e 1920 in meno.
  • hsdpa: HSDPA, che utilizza una velocità di 348,0 in aumento e 14.400,0 in basso.
  • lte: LTE, che utilizza una velocità di 58.000 in più e 173.000 in meno.
  • evdo: EVDO, che utilizza una velocità di 75.000 in alto e 280.000 in basso.
  • full: velocità illimitata, ma dipende dalla velocità di connessione del computer.
  • num: imposta una velocità esatta in kilobit/sec utilizzati sia per il caricamento che per il download.
  • up:down: imposta velocità esatte in kilobit/sec per caricamento e download separatamente.

Per impostare la velocità di rete all'avvio dell'emulatore, utilizza l'opzione emulatore -netspeed con un valore speed supportato, come nell'elenco precedente Network velocità formato. Ecco alcuni esempi:

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

Per apportare modifiche alla velocità di rete mentre l'emulatore è in esecuzione, connettiti alla console e utilizza il comando network speed con un valore speed supportato dall'elenco Formato velocità di rete precedente.

network speed 14.4 80
network capture {start|stop} file Invia pacchetti a un file. Il seguente elenco descrive i parametri e i relativi valori:
  • start file: inizia a inviare pacchetti al file specificato.
  • stop file: interrompe l'invio di pacchetti al file specificato.
Emulazione telefonica Descrizione
L'emulatore Android include i propri modem emulati GSM e CDMA che consentono di simulare le funzioni di telefonia nell'emulatore. Ad esempio, con GSM puoi simulare le telefonate in entrata e stabilire e terminare le connessioni dati. Con CDMA, fornisci un'origine abbonamento e l'elenco di roaming preferito. Il sistema Android gestisce le chiamate simulate esattamente come le chiamate effettive. L'emulatore non supporta l'audio delle chiamate.
gsm {call|accept|cancel|busy} phonenumber I parametri gsm sono i seguenti:
  • call: simula una telefonata in entrata da phonenumber.
  • accept: accetta una chiamata in entrata da phonenumber e modifica lo stato della chiamata in active. Puoi modificare uno stato di chiamata in active solo quando il suo stato attuale è waiting o held.
  • cancel: termina una telefonata in entrata o in uscita da o in uscita verso phonenumber.
  • busy: chiude una chiamata in uscita a phonenumber e modifica lo stato della chiamata in busy. Puoi modificare uno stato di chiamata in busy solo se il suo stato attuale è waiting.
gsm {data|voice} state Il comando data state modifica lo stato della connessione dati GPRS, mentre il comando data voice state lo stato della connessione vocale GPRS, come segue:
  • unregistered: nessuna rete disponibile.
  • home: sulla rete locale, non in roaming.
  • roaming: sulla rete in roaming.
  • searching: ricerca di reti.
  • denied: solo chiamate di emergenza.
  • off: uguale a unregistered.
  • on: uguale a home.
gsm hold Modifica lo stato di una chiamata in hold. Puoi modificare uno stato di chiamata in hold solo se il suo stato attuale è active o waiting.
gsm list Elenca tutte le chiamate in entrata e in uscita e i relativi stati.
gsm status Segnala lo stato attuale dei dati/della voce GSM. I valori sono quelli descritti per i comandi voice e data.
gsm signal {rssi|ber} Modifica l'intensità del segnale (rssi) e la frequenza di errore di bit (ber) segnalati nei successivi 15 secondi dall'aggiornamento. Nell'elenco seguente sono descritti i parametri e i relativi valori:
  • L'intervallo di rssi è compreso tra 0 e 31 e tra 99 per un valore sconosciuto.
  • L'intervallo di ber è compreso tra 0 e 7 e 99 per un valore sconosciuto.
gsm signal-profile num Imposta il profilo di intensità del segnale. num è un numero compreso tra 0 e 4.
cdma ssource source Consente di impostare l'origine abbonamento CDMA attuale, dove source è una lista consentita basata su rete che contiene gli abbonati dell'operatore CDMA e i relativi valori, come segue:
  • nv: legge l'abbonamento dalla RAM permanente.
  • ruim: legge l'abbonamento dal Removable User Identity Module (RUIM).
cdma prl_version version Esegue il dump della versione corrente dell'elenco di roaming preferito (PRL). Il numero di versione si riferisce al database PRL che contiene le informazioni utilizzate durante il processo di selezione e acquisizione del sistema.
Gestisci i sensori dell'emulatore Descrizione
Questi comandi riguardano i sensori disponibili nella durata di visualizzazione media. Oltre a utilizzare il comando sensor, puoi visualizzare e modificare le impostazioni nell'emulatore nella schermata Sensori virtuali nelle schede Accelerometro e Sensori aggiuntivi.
sensor status Elenca tutti i sensori e il relativo stato. Di seguito è riportato un output di esempio per il comando sensor status:
sensor get sensor-name Recupera le impostazioni per sensor-name. L'esempio seguente restituisce il valore del sensore di accelerazione:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

I valori acceleration separati da due punti(:) si riferiscono alle coordinate x, y e z dei sensori virtuali.

sensor set sensor-name value-x:value-y:value-z Consente di impostare i valori per sensor-name. L'esempio seguente imposta il sensore di accelerazione sui valori x, y e z separati da due punti.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulazione SMS Descrizione
sms send sender-phone-number textmessage Genera un SMS in arrivo emulato. Nell'elenco seguente sono descritti i parametri e i relativi valori:
  • sender-phone-number: contiene una stringa numerica arbitraria.
  • textmessage: il messaggio SMS.

Nell'esempio seguente viene inviato il messaggio "Ciao" al numero di telefono 4085555555:

sms send 4085555555 hi there

La console inoltra il messaggio SMS al framework Android, che lo passa a un'app nell'emulatore che gestisce gli SMS, ad esempio l'app Messaggi. Se passi 10 numeri, l'app lo formatta come numero di telefono. Le stringhe numeriche più lunghe o più brevi mostrano il modo in cui le hai inviate.

Simulazione di impronte Descrizione
finger touch fingerprint-id Simula un dito che tocca il sensore.
finger remove Simula la rimozione di un dito.

Per istruzioni su come utilizzare questi comandi, consulta la sezione seguente sulla simulazione e convalida delle impronte.

Simulazione e convalida delle impronte

Figura 1. Schermata Autenticazione tramite impronta.

Usa il comando finger per simulare e convalidare l'autenticazione tramite impronta per la tua app. Sono necessari SDK Tools 24.3 o versioni successive e Android 6.0 (livello API 23) o versioni successive.

Per simulare e convalidare l'autenticazione tramite impronta, segui questi passaggi:

  1. Se non hai ancora un ID impronta, registra una nuova impronta nell'emulatore selezionando Impostazioni > Sicurezza > Impronta e segui le istruzioni per la registrazione.
  2. Configura l'app in modo che accetti l'autenticazione con impronta. Dopo aver eseguito la configurazione, sul dispositivo viene visualizzata la schermata di autenticazione tramite impronta.
  3. Mentre l'app mostra la schermata di autenticazione tramite impronta, vai alla console e inserisci il comando finger touch e l'ID dell'impronta che hai creato. Simula il tocco del dito.
  4. Quindi, inserisci il comando finger remove per simulare la rimozione del dito.

    L'app dovrebbe rispondere come se un utente toccasse e poi avesse rimosso il dito dal sensore di impronte digitali.