Avvia l'emulatore dalla riga di comando

L'SDK Android include un emulatore di dispositivi Android, ovvero un dispositivo virtuale in esecuzione sul computer. L'emulatore di Android ti consente di sviluppare e testare app per Android senza usare un dispositivo fisico.

In questa pagina vengono descritte le funzionalità della riga di comando che puoi utilizzare con l'emulatore di Android. Per informazioni sull'utilizzo dell'interfaccia utente dell'emulatore Android, vedi Esecuzione di app sull'emulatore Android.

Avvia l'emulatore

Utilizza il comando emulator per avviare l'emulatore, in alternativa all'esecuzione del progetto o all'avvio tramite Gestione AVD.

Ecco la sintassi della riga di comando di base per avviare un dispositivo virtuale da un prompt del terminale:

emulator -avd avd_name [ {-option [value]} … ]

Oppure

emulator @avd_name [ {-option [value]} … ]

Ad esempio, se avvii l'emulatore da Android Studio in esecuzione su Mac, la riga di comando predefinita sarà simile alla seguente:

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Nexus_5X_API_23 -netdelay none -netspeed full

Puoi specificare le opzioni di avvio quando avvii l'emulatore, ma non dopo che è stato avviato.

Per un elenco dei nomi della durata di visualizzazione media, inserisci il seguente comando:

emulator -list-avds

Utilizza questa opzione per visualizzare un elenco di nomi AVD dalla home directory di Android. Puoi eseguire l'override della home directory predefinita impostando la variabile di ambiente ANDROID_SDK_HOME, che specifica il root della directory specifica dell'utente in cui sono archiviati tutta la configurazione e i contenuti AVD.

Puoi impostare la variabile di ambiente nella finestra del terminale prima di avviare un dispositivo virtuale o tramite le impostazioni utente nel sistema operativo. Ad esempio, nel file .bashrc su Linux.

Per interrompere l'emulatore Android, chiudi la finestra dell'emulatore.

Installare un'app

Oltre a installare un'app tramite Android Studio o l'interfaccia utente dell'emulatore, puoi installarla su un dispositivo virtuale utilizzando l'utilità adb.

Per utilizzare adb al fine di installare, eseguire e testare la tua app, segui questi passaggi generali:

  1. Crea e pacchettizza la tua app in un APK, come descritto in Creare ed eseguire la tua app.
  2. Avvia l'emulatore dalla riga di comando, come descritto nella sezione precedente, utilizzando le eventuali opzioni di avvio necessarie.
  3. Installa l'app utilizzando adb.
  4. Esegui e testa la tua app utilizzando l'emulatore.
    Mentre l'emulatore è in esecuzione, puoi utilizzare la console Emulator per emettere i comandi in base alle tue esigenze.

Per disinstallare un'app, procedi come faresti su un dispositivo Android.

Il dispositivo virtuale conserva l'app e i relativi dati sullo stato durante i riavvii in una partizione del disco dei dati utente (userdata-qemu.img). Per cancellare questi dati, avvia l'emulatore con l'opzione -wipe-data o cancella i dati in Gestione AVD. Per ulteriori informazioni sulla partizione dei dati utente e altro spazio di archiviazione, consulta la sezione seguente.

Nota: l'utilità adb visualizza il dispositivo virtuale come un dispositivo fisico reale. Per questo motivo, potrebbe essere necessario utilizzare il flag -d con alcuni comandi adb comuni, come install. Il flag -d consente di specificare quale dei vari dispositivi connessi da utilizzare come destinazione di un comando. Se non specifichi -d, l'emulatore ha come target il primo dispositivo dell'elenco.

Informazioni sulle directory e sui file predefiniti

L'emulatore utilizza file associati, di cui il sistema AVD e le directory dei dati sono i più importanti. È utile comprendere la struttura e i file della directory dell'emulatore quando specifichi le opzioni della riga di comando, anche se in genere non è necessario modificare le directory o i file predefiniti.

L'emulatore Android utilizza l'hypervisor Quick Emulator (QEMU). Le versioni iniziali dell'emulatore Android utilizzavano QEMU 1 (pesce rosso), mentre le versioni successive utilizzano QEMU 2 (ranchu).

Directory di sistema AVD

La directory di sistema contiene le immagini del sistema Android utilizzate dall'emulatore per simulare il sistema operativo. Questa directory contiene file di sola lettura specifici della piattaforma condivisi da tutte le AVD dello stesso tipo, tra cui livello API, architettura della CPU e variante Android. Le posizioni predefinite sono le seguenti:

  • macOS e Linux - ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Microsoft Windows XP - C:\Documents and Settings\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\
  • Windows Vista - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

Dove:

  • apiLevel indica un livello API numerico o una lettera per le release di anteprima. Ad esempio, android-M indica l'anteprima di Android Marshmallow. Al momento del rilascio, è diventato il livello API 23, designato da android-23.
  • variant è un nome corrispondente a funzionalità specifiche implementate dall'immagine di sistema. Ad esempio, google_apis o android-wear.
  • arch è l'architettura della CPU di destinazione. Ad esempio, x86.

Utilizza l'opzione -sysdir per specificare una directory di sistema diversa per la durata di visualizzazione media.

L'emulatore legge i seguenti file dalla directory di sistema:

Tabella 1. I file di directory di sistema letti dall'emulatore Android

File Descrizione Opzione per specificare un file diverso
kernel-qemu o kernel-ranchu L'immagine del kernel binario per la durata di visualizzazione media. kernel-ranchu è l'emulatore QEMU 2, la versione più recente. -kernel
ramdisk.img L'immagine della partizione di avvio. Si tratta di un sottoinsieme di system.img caricato inizialmente dal kernel prima dell'installazione dell'immagine di sistema. In genere contiene solo alcuni programmi binari e script di inizializzazione. -ramdisk
system.img La versione iniziale di sola lettura dell'immagine di sistema. In particolare, la partizione contenente le librerie di sistema e i dati corrispondenti al livello API e alla variante. -system
userdata.img La versione iniziale della partizione dati, che viene visualizzata come data/ nel sistema emulato e contiene tutti i dati scrivibili per la durata di visualizzazione media. L'emulatore utilizza questo file quando crei una nuova durata di visualizzazione media o usi l'opzione ‑wipe-data. Per ulteriori informazioni, consulta la descrizione del file userdata-qemu.img nella sezione seguente. -initdata
-init-data

Directory dei dati AVD

La directory dei dati AVD, chiamata anche directory dei contenuti, è specifica per una singola istanza AVD e contiene tutti i dati modificabili per la durata di visualizzazione media.

La località predefinita è la seguente, dove name è il nome della durata di visualizzazione media:

  • macOS e Linux - ~/.android/avd/name.avd/
  • Microsoft Windows XP - C:\Documents and Settings\user\.android\name.avd\
  • Windows Vista e versioni successive - C:\Users\user\.android\name.avd\

Utilizza l'opzione -datadir per specificare una directory dei dati AVD diversa.

Nella tabella seguente sono elencati i file più importanti contenuti in questa directory:

Tabella 2. File importanti nella directory dei dati AVD

File Descrizione Opzione per specificare un file diverso
userdata-qemu.img

Il contenuto della partizione dati, che viene visualizzata come data/ nel sistema emulato. Quando crei una nuova durata di visualizzazione (AVD) o utilizzi l'opzione -wipe-data per ripristinarne le impostazioni di fabbrica, l'emulatore copia il file userdata.img nella directory di sistema per creare questo file.

Ogni istanza virtuale del dispositivo utilizza un'immagine dei dati utente scrivibile per archiviare i dati specifici dell'utente e della sessione. Ad esempio, utilizza l'immagine per archiviare i dati, le impostazioni, i database e i file delle app installate da un utente unico. Ogni utente ha una directory ANDROID_SDK_HOME diversa in cui sono archiviate le directory dei dati per le AVD create dall'utente. Ogni AVD ha un singolo file userdata-qemu.img.

-data
cache.img L'immagine della partizione cache, visualizzata come cache/ nel sistema emulato. È vuota quando crei una durata di visualizzazione media o utilizzi l'opzione -wipe-data. Archivia file di download temporanei e viene compilato da gestore dei download e talvolta dal sistema. Ad esempio, il browser lo utilizza per memorizzare nella cache le pagine web e le immagini scaricate mentre l'emulatore è in esecuzione. Quando spegni il dispositivo virtuale, il file viene eliminato. Puoi mantenere il file utilizzando l'opzione -cache. -cache
sdcard.img

(Facoltativo) Un'immagine di partizione della scheda SD che consente di simulare una scheda SD su un dispositivo virtuale. Puoi creare un file immagine della scheda SD in Gestione AVD o utilizzando lo strumento mksdcard. Il file è archiviato sul tuo computer di sviluppo e deve essere caricato all'avvio.

Quando definisci una durata di visualizzazione media in Gestione AVD, puoi scegliere di utilizzare un file della scheda SD gestita automaticamente o un file creato con lo strumento mksdcard. Puoi visualizzare il file sdcard.img associato a una durata di visualizzazione media in AVD Manager. L'opzione -sdcard sostituisce il file della scheda SD specificato nella durata di visualizzazione media.

Puoi sfogliare, inviare file, nonché copiare e rimuovere file da una scheda SD simulata utilizzando l'interfaccia utente dell'emulatore o l'utilità adb mentre il dispositivo virtuale è in esecuzione. Non puoi rimuovere una scheda SD simulata da un dispositivo virtuale in esecuzione.

Per copiare i file sulla scheda SD prima di caricarli, monta il file immagine come dispositivo loop e quindi copia i file. In alternativa, utilizza un'utilità come il pacchetto mtools per copiare i file direttamente nell'immagine.

L'emulatore considera il file come un pool di byte, quindi il formato della scheda SD non è importante.

L'opzione -wipe-data non influisce su questo file. Se vuoi cancellare il file, eliminalo e ricrealo utilizzando Gestione AVD o lo strumento mksdcard. Modificando le dimensioni del file, il file viene eliminato e ne viene creato uno nuovo.

-sdcard

Elenco directory e file utilizzati dall'emulatore

Puoi scoprire dove si trovano i file in due modi:

  • Utilizza l'opzione -verbose o -debug init quando avvii l'emulatore dalla riga di comando. Esamina l'output.
  • Utilizza il comando -help-option emulator per elencare una directory predefinita. Ad esempio:
    emulator -help-datadir
    Use '-datadir <dir>' to specify a directory where writable image files will be searched. On this system, the default directory is: /Users/me/.android See '-help-disk-images' for more information about disk image files.

Opzioni di avvio dalla riga di comando

In questa sezione sono elencate le opzioni che puoi specificare nella riga di comando quando avvii l'emulatore.

Nota: Android Emulator è in continuo sviluppo per renderlo più affidabile. Per informazioni sullo stato dei problemi segnalati in base a varie opzioni della riga di comando e per segnalare i bug, consulta Android Issue Tracker.

Opzioni più utilizzate

La tabella seguente elenca le opzioni di avvio dalla riga di comando che potresti utilizzare più spesso:

Tabella 3. Opzioni della riga di comando più utilizzate

Opzione della riga di comando Descrizione
Avvio rapido
-no-snapshot-load Esegue un avvio a freddo e salva lo stato dell'emulatore all'uscita.
-no-snapshot-save Esegue un avvio rapido, se possibile, ma non salva lo stato dell'emulatore all'uscita.
-no-snapshot Disattiva completamente la funzionalità Avvio rapido e non carica o salva lo stato dell'emulatore.
Hardware del dispositivo
-camera-back mode
-camera-front mode
Imposta la modalità di emulazione per una fotocamera rivolta verso la parte posteriore o anteriore. Questa sostituisce qualsiasi impostazione della videocamera nella durata di visualizzazione media.

mode può essere uno qualsiasi dei seguenti valori:

  • emulated: l'emulatore simula una fotocamera nel software.
  • webcamn: l'emulatore utilizza una webcam collegata al tuo computer di sviluppo, specificata in numero. Per un elenco di webcam, utilizza l'opzione -webcam-list. Ad esempio, webcam0.
  • none: disattiva la fotocamera nel dispositivo virtuale.

Ad esempio:

emulator @Nexus_5X_API_23 -camera-back webcam0

-webcam-list Elenca le webcam installate sul computer di sviluppo che sono disponibili per l'emulazione. Ad esempio:
emulator @Nexus_5X_API_23 -webcam-list
        List of web cameras connected to the computer:
        Camera 'webcam0' is connected to device 'webcam0'
        on channel 0 using pixel format 'UYVY'

Nell'esempio, il primo webcam0 è il nome che utilizzi nella riga di comando. Il secondo webcam0 è il nome utilizzato dal sistema operativo sul computer di sviluppo. Il secondo nome varia a seconda del sistema operativo.

A partire da SDK Tools 25.2.4, il nome della durata di visualizzazione media è obbligatorio.

Immagini e memoria del disco
-memory size

Specifica le dimensioni della RAM fisica, da 128 a 4096 MB. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -memory 2048

Questo valore sostituisce l'impostazione della durata di visualizzazione media.

-sdcard filepath Specifica il nome file e il percorso di un file immagine di partizione della scheda SD. Ad esempio:

emulator @Nexus_5X_API_23 -sdcard C:/sd/sdcard.img

Se il file non viene trovato, viene comunque avviato l'emulatore, ma senza scheda SD. Il comando restituisce un avviso Nessuna immagine della scheda SD.

Se non specifichi questa opzione, il valore predefinito è sdcard.img nella directory dei dati, a meno che la durata di visualizzazione dei dati non specifichi qualcosa di diverso. Per maggiori dettagli sulle schede SD emulate, vedi Directory dati AVD.

-wipe-data Elimina i dati utente e copia i dati dal file di dati iniziale. Questa opzione cancella i dati del dispositivo virtuale e li riporta allo stesso stato della prima definizione. Tutte le app e le impostazioni installate vengono rimosse. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -wipe-data

Per impostazione predefinita, il file di dati utente è userdata-qemu.img e il file di dati iniziale è userdata.img. Entrambi i file si trovano nella directory dei dati. L'opzione -wipe-data non influisce sul file sdcard.img. Per ulteriori informazioni sui dati utente, consulta la sezione Comprendere le directory e i file predefiniti.

Debug
-debug tags Attiva o disattiva la visualizzazione dei messaggi di debug per uno o più tag. Separa i diversi tag con uno spazio, una virgola o una colonna. Ecco alcuni esempi:

$ emulator @Nexus_5X_API_23 -debug init,metrics

Per disattivare un tag, inserisci un trattino (-) davanti al tag. Ad esempio, la seguente opzione mostra tutti i messaggi di debug, tranne quelli relativi ai socket di rete e alle metriche:

-debug all,-socket,-metrics

Per un elenco di tag e descrizioni, utilizza l'opzione -help-debug-tags. Ecco alcuni esempi:

emulator -help-debug-tags

Puoi definire i tag di debug predefiniti nella variabile di ambiente ANDROID_VERBOSE. Definisci i tag da utilizzare in un elenco delimitato da virgole. Ecco un esempio che mostra come specificare i tag socket e gles:

ANDROID_VERBOSE=socket,gles

Equivale a utilizzare:

-debug-socket -debug-gles

oppure

-debug socket,gles

-debug-tag
-debug-no-tag
Attiva un tipo di messaggio di debug specifico. Utilizza il modulo no per disabilitare un tipo di messaggio di debug. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -debug-all -debug-no-metrics

Per un elenco dei tag, utilizza il comando emulator -help-debug-tags.

-logcat logtags Abilita la visualizzazione dei messaggi Logcat per uno o più tag e li scrive nella finestra del terminale. Ad esempio, il seguente comando abilita i messaggi di errore da tutti i componenti:

emulator @Nexus_5X_API_23 -logcat *:e

logtags utilizza lo stesso formato del comando adb logcat logtags. Inserisci adb logcat -help per ulteriori informazioni. È un elenco di filtri di log separati da spazi o virgole nel formato componentName:logLevel. componentName è un carattere jolly asterisco (*) o il nome di un componente, ad esempio ActivityManager, SystemServer, InputManager o WindowManager.

logLevel è uno di questi valori:

  • v - messaggio dettagliato
  • d - debug
  • i - informativo
  • w - livello log degli avvisi
  • e - errore
  • s - silenzioso

L'esempio seguente mostra i messaggi del componente GSM a livello di log informativo:

emulator @Nexus_5X_API_23 -logcat '*:s GSM:i'

Se non fornisci l'opzione -logcat nella riga di comando, l'emulatore cerca la variabile di ambiente ANDROID_LOG_TAGS. Se ANDROID_LOG_TAGS viene definito con un valore logtags valido e non è vuoto, l'emulatore utilizza il suo valore per abilitare l'output Logcat nel terminale per impostazione predefinita. Puoi anche reindirizzare al terminale lo stesso messaggio di log o altri messaggi di log tramite adb.

Per maggiori informazioni su Logcat e adb, consulta lo strumento a riga di comando Logcat, Visualizzare e scrivere log con Logcat, la classe Log e i comandi Issue adb.

-show-kernel Mostra i messaggi di debug del kernel nella finestra del terminale. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -show-kernel

Questa opzione può essere utilizzata per verificare che il processo di avvio funzioni correttamente.

-verbose Stampa i messaggi di inizializzazione dell'emulatore nella finestra del terminale. Ad esempio:

emulator @Nexus_5X_API_23 -verbose

Visualizza i file e le impostazioni effettivamente selezionati all'avvio di un dispositivo virtuale definito in una durata di visualizzazione media. Questa opzione equivale a specificare -debug-init.

Rete
-dns-server servers Utilizza i server DNS specificati. servers è un elenco separato da virgole di massimo quattro nomi o indirizzi IP di server DNS. Ad esempio:
emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255

Per impostazione predefinita, l'emulatore tenta di rilevare i server DNS che stai utilizzando e configura alias speciali nella rete firewall emulata per consentire al sistema Android di connettersi direttamente ai server. Utilizza l'opzione -dns-server per specificare un elenco diverso di server DNS.

-http-proxy proxy Effettua tutte le connessioni TCP attraverso un proxy HTTP/HTTPS specificato. Se l'emulatore deve accedere a internet tramite un server proxy, puoi utilizzare questa opzione o la variabile di ambiente http_proxy per configurare il reindirizzamento appropriato. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy può essere uno dei seguenti:

http://server:port
http://username:password@server:port

Il prefisso http:// può essere omesso.

Se questa opzione non è fornita, l'emulatore cerca la variabile di ambiente http_proxy e utilizza automaticamente qualsiasi valore corrispondente al formato proxy. Per maggiori informazioni, consulta la pagina relativa all'utilizzo dell'emulatore con un proxy.

-netdelay delay

Imposta l'emulazione della latenza di rete su uno dei seguenti valori delay in millisecondi:

  • gsm: GSM/CSD (min 150, max 550).
  • hscsd: HSCSD (min 80, max 400).
  • gprs: GPRS (min 35, max 200).
  • edge: EDGE/EGPRS (min 80, max 400).
  • umts: UMTS/3G (min 35, max 200).
  • hsdpa: HSDPA (min 0, max 0).
  • lte - LTE (min 0, max 0).
  • evdo: EVDO (min 0, max 0).
  • none: nessuna latenza, l'impostazione predefinita (min 0, max 0).
  • num: specifica la latenza esatta.
  • min:max: specifica le latenze minime e massime individuali.

Ad esempio:

emulator @Nexus_5X_API_23 -netdelay gsm

L'emulatore supporta la limitazione della rete e la latenza di connessione più elevata. Puoi definirlo tramite la configurazione dell'interfaccia oppure con le opzioni ‑netspeed e -netdelay.

-netfast Disattiva la limitazione della rete. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -netfast

Questa opzione equivale a specificare -netspeed full -netdelay none. Questi sono i valori predefiniti per queste opzioni.

-netspeed speed

Imposta l'emulazione della velocità di rete. Specifica le velocità massime di caricamento e download della rete con uno dei seguenti valori speed in Kbps:

  • gsm - GSM/CSD (aumento: 14,4, riduzione: 14,4).
  • hscsd - HSCSD (aumento: 14,4, riduzione: 57,6).
  • gprs - GPRS (aumento: 28,8, abbassamento: 57,6).
  • edge - EDGE/EGPRS (aumento: 473,6, basso: 473,6).
  • umts - UMTS/3G (aumento: 384,0, basso: 384,0).
  • hsdpa - HSDPA (aumento: 5760,0, riduzione: 13.980,0).
  • lte - LTE (in aumento: 58.000, in calo: 173.000).
  • evdo - EVDO (aumento: 75.000, riduzione: 280.000).
  • full: nessun limite, il valore predefinito (aumento: 0,0, basso: 0,0).
  • num: specifica la velocità in caricamento e in download.
  • up:down: specifica le singole velocità di salita e discesa.

Ad esempio:

emulator @Nexus_5X_API_23 -netspeed edge

L'emulatore supporta la limitazione della rete e la latenza di connessione più elevata. Puoi definirlo tramite la configurazione dell'interfaccia oppure con le opzioni ‑netspeed e -netdelay.

-port port Imposta il numero di porta TCP utilizzato per la console e adb. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -port 5556

Il valore predefinito è 5554 per la prima istanza di dispositivo virtuale in esecuzione sulla macchina. Normalmente un dispositivo virtuale occupa una coppia di porte adiacenti: una porta della console e una porta adb. La console del primo dispositivo virtuale in esecuzione su una determinata macchina utilizza le porte della console 5554 e adb 5555. Le istanze successive utilizzano un numero di porta che aumenta di due. Ad esempio, 5556/5557, 5558/5559 e così via. L'intervallo va da 5554 a 5682, consentendo 64 dispositivi virtuali simultanei.

Le assegnazioni delle porte corrispondono spesso alla specifica di -ports port,{port + 1}. {port + 1} deve essere senza costi ed è prenotato per adb. Se una delle porte della console o adb è già in uso, l'emulatore non si avvia.

L'opzione ‑port segnala le porte e i numeri di serie utilizzati dal dispositivo virtuale e avvisa in caso di problemi con i valori forniti. Nella UI dell'emulatore, puoi vedere il numero di porta della console nel titolo della finestra e visualizzare il numero di porta adb selezionando Guida > Informazioni.

Tieni presente che se il valore port non è pari e è compreso tra 5554 e 5584, il dispositivo virtuale si avvia, ma non sarà visibile quando utilizzi il comando adb devices, se adb server si avvia dopo l'emulatore. Per questo motivo, consigliamo di utilizzare un numero di porta pari per la console.

-ports
console-port,adb-port
Imposta le porte TCP utilizzate per la console e adb. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -ports 5556,5559

L'intervallo di porte valido è compreso tra 5554 e 5682, consentendo l'utilizzo di 64 dispositivi virtuali simultanei. L'opzione -ports segnala le porte e il numero di serie utilizzati dall'istanza dell'emulatore e avvisa in caso di problemi con i valori che hai fornito.

Se possibile, ti consigliamo di utilizzare invece l'opzione -port. L'opzione -ports è disponibile per configurazioni di rete che richiedono impostazioni speciali.

Per maggiori informazioni sull'impostazione delle porte della console e adb, vedi l'opzione -port.

-tcpdump filepath Cattura i pacchetti di rete e li archivia in un file. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -tcpdump /path/dumpfile.cap

Utilizza questa opzione per iniziare ad acquisire tutti i pacchetti di rete inviati tramite la LAN Ethernet virtuale dell'emulatore. In seguito, puoi utilizzare uno strumento come Wireshark per analizzare il traffico.

Tieni presente che questa opzione acquisisce tutti i pacchetti Ethernet e non è limitata alle connessioni TCP.

Sistema
-accel mode Configura l'accelerazione delle VM dell'emulatore. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -accel auto

L'emulazione accelerata funziona solo per le immagini di sistema x86 e x86_64. In Linux, si basa su KVM. Su Windows e Mac, si basa su una CPU Intel e un driver Intel HAXM. Se non stai emulando un dispositivo x86 o x86_64, questa opzione viene ignorata.

I valori validi per mode sono:

  • auto - Determina automaticamente se l'accelerazione è supportata e la utilizza quando possibile (impostazione predefinita).
  • off: disattiva completamente l'accelerazione, utile principalmente per il debug.
  • on: forza l'accelerazione. Se KVM o HAXM non sono installati o utilizzabili, l'emulatore non si avvia e stampa un messaggio di errore.

Per maggiori informazioni, consulta la sezione Configurare l'accelerazione hardware per l'emulatore Android.

-accel-check Verifica se è installato un hypervisor richiesto per l'accelerazione delle VM dell'emulatore (HAXM o KVM). Ecco alcuni esempi:

emulator -accel-check

Per ulteriori informazioni, vedi Controllare se è installato un hypervisor.

-engine engine

Specifica il motore dell'emulatore:

  • auto: seleziona automaticamente un motore (impostazione predefinita).
  • classic: utilizza il vecchio motore QEMU 1.
  • qemu2: utilizza il più recente motore QEMU 2.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -engine auto

Il rilevamento automatico deve scegliere il valore che offre le prestazioni migliori durante l'emulazione di una determinata durata di visualizzazione (AVD). Utilizza l'opzione -engine solo a scopo di debug e confronto.

-gpu mode Seleziona la modalità di emulazione GPU. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -gpu swiftshader_indirect

Per ulteriori informazioni, consulta la sezione Configurare l'accelerazione grafica.

-no-accel Disattiva l'accelerazione delle VM dell'emulatore quando viene utilizzata un'immagine di sistema x86 o x86_64. È utile solo per il debug ed equivale a specificare -accel off. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-accel

Per maggiori informazioni, consulta la sezione Configurare l'accelerazione hardware per l'emulatore Android.

-nojni
-no-jni
Disabilita i controlli estesi per Java Native Interface (JNI) nel runtime Android Dalvik o ART. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -nojni

Quando avvii un dispositivo virtuale, i controlli JNI estesi sono abilitati per impostazione predefinita. Per ulteriori informazioni, consulta i suggerimenti su JNI.

-selinux {disabled|permissive} Imposta il modulo di sicurezza di Security-Enhanced Linux (SELinux) sulla modalità disabled o permissive su un sistema operativo Linux. Ecco alcuni esempi:

me-linux$ emulator @Nexus_5X_API_23 -selinux permissive

Per impostazione predefinita, SELinux è in modalità enforcing, il che significa che viene applicato in modo forzato il criterio di sicurezza. La modalità permissive carica il criterio SELinux ma non lo applica. Questa opzione registra solo le violazioni dei criteri. La modalità disabled disabilita il supporto kernel per SELinux.

-timezone timezone

Imposta il fuso orario per il dispositivo virtuale su timezone anziché su quello dell'host. Ad esempio:

emulator @Nexus_5X_API_23 -timezone Europe/Paris

Per impostazione predefinita, l'emulatore utilizza il fuso orario del computer di sviluppo. Utilizza questa opzione per specificare un fuso orario diverso o se il rilevamento automatico non funziona correttamente. Il valore timezone deve essere nel formato zoneinfo, che è area/location o area/subarea/location. Ecco alcuni esempi:

  • America/Los_Angeles
  • Europe/Paris
  • America/Argentina/Buenos_Aires

Il fuso orario specificato deve essere nel database zoneinfo.

-version Mostra il numero di versione dell'emulatore. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -version

Oppure

emulator -version

Interfaccia utente
-no-boot-anim Disattiva l'animazione all'avvio durante l'avvio dell'emulatore per un avvio più rapido. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-boot-anim

Sui computer più lenti, questa opzione può accelerare notevolmente la sequenza di avvio.

-screen mode Consente di impostare la modalità touchscreen emulato. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -screen no-touch

mode può essere uno qualsiasi dei seguenti valori:

  • touch: emula un touchscreen (impostazione predefinita).
  • multi-touch: emula uno schermo multi-touch.
  • no-touch: disattiva l'emulazione dello schermo touch e multi-touch.

Opzioni avanzate

Le opzioni di avvio dalla riga di comando nella tabella seguente sono disponibili, ma non sono comunemente utilizzate dallo sviluppatore di app medio.

Nelle descrizioni, la directory di lavoro è la directory corrente nel terminale in cui inserisci i comandi. Per informazioni sulla directory e sulla directory dei dati del sistema AVD, nonché sui file archiviati al loro interno, consulta la sezione sulle directory e sui file predefiniti.

Alcune di queste opzioni sono appropriate per gli sviluppatori di app esterni, mentre altre vengono utilizzate principalmente dagli sviluppatori di piattaforme. Gli sviluppatori di app creano app Android e le eseguono in specifiche durate di utilizzo. Gli sviluppatori di piattaforme lavorano sul sistema Android ed lo eseguono all'interno dell'emulatore senza una durata di visualizzazione media precreata.

Tabella 4. Opzioni avanzate della riga di comando

Opzione avanzata Breve descrizione
-bootchart timeout

Abilita il bootcharting con un timeout in secondi. Alcune immagini di sistema Android hanno un sistema di inizializzazione modificato che integra una funzione di bootcharting. Con questa opzione puoi passare un periodo di timeout del bootcharting al sistema. Se nel sistema init non è attivato il bootcharting, l'opzione non fa nulla. Questa opzione è utile principalmente per gli sviluppatori di piattaforme, non per gli sviluppatori di app esterni.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -bootchart 120
-cache filepath

Specifica un file immagine della partizione della cache. Fornisce un nome file e un percorso assoluto o un percorso relativo alla directory dei dati per configurare un file di cache permanente. Se il file non esiste, l'emulatore lo crea come file vuoto.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -cache
   ~/.android/avd/Nexus_5X_API_23.avd/cache_persistent.img

Se non utilizzi questa opzione, il valore predefinito è un file temporaneo denominato cache.img. Per ulteriori informazioni, consulta la directory dei dati AVD.

-cache-size size

Imposta le dimensioni della partizione della cache in MB.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -cache-size 1000

Se non specifichi questa opzione, il valore predefinito è 66 MB. In genere, la maggior parte degli sviluppatori di app non ha bisogno di questa opzione, a meno che non debbano scaricare file molto grandi e più grandi della cache predefinita. Per ulteriori informazioni sul file della cache, consulta Directory dei dati AVD.

-data filepath

Imposta il file immagine della partizione dei dati utente. Fornisce un nome file e un percorso assoluto o un percorso relativo alla directory di lavoro per configurare un file di dati utente permanente. Se il file non esiste, l'emulatore crea un'immagine dal file userdata.img predefinito, la memorizza nel nome file specificato e memorizza i dati utente alla chiusura.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -data
   ~/.android/avd/Nexus_5X_API_23.avd/userdata-test.img

Se non utilizzi questa opzione, il valore predefinito è un file denominato userdata-qemu.img. Per ulteriori informazioni sul file di dati utente, consulta Directory dei dati AVD.

-datadir dir

Specifica una directory dei dati utilizzando un percorso assoluto. Per ulteriori informazioni, consulta Directory dei dati AVD.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -datadir
   ~/.android/avd/Nexus_5X_API_23.avd/mytest
-force-32bit

Utilizza l'emulatore a 32 bit su piattaforme a 64 bit. Occasionalmente, questa opzione è utile per test o debug. Ad esempio, si verificava un problema per cui l'emulatore a volte non veniva eseguito su Windows a 64 bit, mentre a 32 bit veniva eseguito. Questa opzione è stata utile per eseguire confronti al fine di eseguire il debug del problema. Ecco un esempio:

emulator @Nexus_5X_API_23 -force-32bit
-help-disk-images

Consente di ricevere assistenza sulle immagini disco. Questa opzione fornisce informazioni pertinenti per gli sviluppatori di app e piattaforme. Ecco alcuni esempi:

emulator -help-disk-images
-help-char-devices

Consente di ricevere assistenza sulle specifiche relative ai caratteri device. Alcune opzioni di emulatore richiedono un parametro device. Ecco alcuni esempi:

emulator -help-char-devices
-help-sdk-images

Consente di ricevere assistenza sulle immagini disco pertinenti per gli sviluppatori di app. Questa opzione consente di ottenere informazioni sulla posizione dei file immagine per una durata di visualizzazione media creata con gli strumenti SDK. Ecco alcuni esempi:

emulator -help-sdk-images
-help-build-images

Consente di ricevere assistenza sulle immagini disco pertinenti per gli sviluppatori della piattaforma. Ecco alcuni esempi:

emulator -help-build-images
-initdata filepath
-init-data filepath

Specifica la versione iniziale della partizione dati. Dopo aver cancellato i dati utente, l'emulatore copia i contenuti del file specificato nei dati utente (per impostazione predefinita il file userdata-qemu.img) anziché utilizzare il file userdata.img predefinito come versione iniziale. Specifica il nome file e un percorso assoluto o un percorso relativo alla directory di lavoro.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -initdata
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/userdata-test.img

Se non specifichi un percorso, il file viene inserito nella directory di sistema. Per ulteriori informazioni, consulta la sezione Directory di sistema AVD.

-kernel filepath

Utilizza un kernel emulato specifico. Se non specifichi un percorso, l'emulatore cerca nella directory di sistema.

Utilizza l'opzione ‑show‑kernel per visualizzare i messaggi di debug del kernel.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -kernel
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/kernel-test.img -show-kernel

Se non specifichi questa opzione, il valore predefinito è kernel-ranchu. Per ulteriori informazioni, consulta la sezione Directory di sistema AVD.

-noaudio
-no-audio

Disattiva il supporto audio per questo dispositivo virtuale. Alcuni computer Linux e Windows hanno i driver audio difettosi che causano sintomi diversi, ad esempio impedendo l'avvio dell'emulatore. In questo caso, utilizza questa opzione per risolvere il problema. In alternativa, puoi usare la variabile di ambiente QEMU_AUDIO_DRV per modificare il backend audio.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -noaudio
-nocache
-no-cache

Avvia l'emulatore senza una partizione della cache. Se non utilizzi questa opzione, il valore predefinito è un file temporaneo denominato cache.img. Questa opzione è riservata agli sviluppatori di piattaforme. Per saperne di più, consulta Directory dei dati AVD.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -nocache
-no-snapshot

Blocca le operazioni di caricamento e salvataggio automatici, causando l'esecuzione di una sequenza di avvio completa da parte dell'emulatore, oltre alla perdita dello stato alla chiusura. Sostituisce l'opzione -snapshot.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-snapshot
-no-snapshot-load

Impedisce all'emulatore di caricare lo stato AVD dall'archiviazione degli snapshot. Esegue un avvio completo.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-snapshot-load
-no-snapshot-save

Impedisce all'emulatore di salvare lo stato AVD nello spazio di archiviazione degli snapshot all'uscita, il che significa che tutte le modifiche andranno perse.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-snapshot-save
-no-snapshot-update-time

Non tenta di correggere l'ora orologio AVD immediatamente al ripristino degli snapshot. Questa opzione può essere utile durante il test perché evita un improvviso salto temporale. Gli aggiornamenti sull'orario vengono comunque inviati alla durata di visualizzazione media ogni 15 secondi circa.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-snapshot-update-time
-no-snapstorage

Avvia l'emulatore senza montare un file per archiviare o caricare gli snapshot dello stato, forzando l'avvio completo e disattivando la funzionalità dello snapshot dello stato. Questa opzione sostituisce le opzioni -snapstorage e -snapshot.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-snapstorage
-no-window

Disattiva la visualizzazione grafica delle finestre nell'emulatore. Questa opzione è utile quando si esegue l'emulatore su server senza display. Puoi accedere all'emulatore tramite adb o la console. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -no-window
-partition-size size

Specifica la dimensione della partizione dei dati di sistema in MB. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -partition-size 1024
-prop name=value

Imposta una proprietà di sistema Android nell'emulatore all'avvio. name deve essere un nome di proprietà etichettato come qemu_prop di massimo 32 caratteri, senza spazi, e value deve essere una stringa di massimo 92 caratteri. Per un esempio, vedi il file property_contexts. Puoi specificare diverse opzioni ‑prop su una riga di comando. Questa opzione può essere utile per il debug. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Trasmette gli argomenti al software di emulatore QEMU. Tieni presente che QEMU 1 e QEMU 2 possono usare argomenti diversi. Quando utilizzi questa opzione, assicurati che sia l'ultima opzione specificata, in quanto tutte le opzioni successive vengono interpretate come opzioni specifiche di QEMU. Questa opzione è piuttosto avanzata e dovrebbe essere utilizzata solo dagli sviluppatori che hanno molto familiarità con QEMU e l'emulazione di Android.
-qemu -h

Mostra la guida di -qemu. Ecco alcuni esempi:

emulator -qemu -h
-ramdisk filepath

Specifica un'immagine di avvio ramdisk. Specifica il nome file e un percorso assoluto o un percorso relativo alla directory di lavoro.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -ramdisk
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/ramdisk-test.img

Se non utilizzi questa opzione, il valore predefinito è il file ramdisk.img nella directory di sistema. Per ulteriori informazioni, consulta la sezione Directory di sistema AVD.

-report-console socket

Segnala la porta della console a una terza parte remota prima di avviare l'emulazione. Può essere utile per uno script di test automatizzato. socket deve utilizzare uno di questi formati:

  • tcp:port[,server][,max=seconds][,ipv6]
  • unix:port[,server][,max=seconds][,ipv6]

Per ulteriori informazioni, utilizza l'opzione -help-report-console come descritto nella sezione relativa alla guida per le opzioni specifiche.

-shell

Crea una console shell radice sul terminale corrente. Questa opzione differisce dal comando adb shell per i seguenti modi:

  • Crea una shell root che ti consente di modificare molte parti del sistema.
  • Funziona anche se il adb daemon nel sistema emulato è danneggiato.
  • Premi Ctrl + C (o Comando + C, su macOS) per arrestare l'emulatore al posto della shell.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -shell
-snapshot name

Specifica il nome di uno snapshot all'interno di un file di archiviazione degli snapshot per le operazioni di avvio e salvataggio automatici.

Anziché eseguire una sequenza di avvio completa, l'emulatore può riprendere l'esecuzione da uno snapshot di stato precedente, che di solito è molto più veloce. Quando fornisci questa opzione, l'emulatore carica lo snapshot con questo nome dall'immagine dello snapshot e lo salva con lo stesso nome all'uscita.

Se non utilizzi questa opzione, il valore predefinito è una sequenza di avvio completa. Se lo snapshot specificato non esiste, l'emulatore esegue invece una sequenza di avvio completa ed esegue un'operazione di salvataggio.

Consulta l'opzione -snapstorage per informazioni su come specificare un file di archiviazione degli snapshot e il file predefinito.

emulator @Nexus_5X_API_23 -snapshot snapshot2

Ricorda che, durante il caricamento di uno snapshot, tutti i contenuti del sistema, dei dati utente e delle immagini della scheda SD vengono sovrascritti con i contenuti archiviati al momento della creazione dello snapshot. A meno che non salvi queste informazioni in uno snapshot diverso, tutte le modifiche apportate andranno perse.

Puoi anche creare uno snapshot dalla console dell'emulatore utilizzando il comando avd snapshot save name. Per maggiori informazioni, vedi Inviare comandi della console Emulator.

-snapshot-list

Visualizza un elenco di snapshot disponibili. Questo comando stampa una tabella di snapshot archiviati nel file di archiviazione degli snapshot con cui è stato avviato l'emulatore e poi esce. Se specifichi anche -snapstorage file, questo comando stampa una tabella degli snapshot archiviati nel file.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -snapshot-list -snapstorage
   ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img

Puoi utilizzare i valori delle colonne ID e TAG nell'output come argomenti per l'opzione -snapshot.

-snapstorage filepath

Specifica un file di repository che contiene tutti gli snapshot di stato. Tutti gli snapshot creati durante l'esecuzione vengono salvati in questo file. Solo gli snapshot in questo file possono essere ripristinati durante l'esecuzione dell'emulatore.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -snapstorage
   ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img

Se non specifichi questa opzione, il valore predefinito è snapshots.img nella directory dei dati. Se il file specificato non esiste, l'emulatore verrà avviato, ma non supporta il salvataggio o il caricamento degli snapshot di stato.

-sysdir dir

Specifica una directory di sistema utilizzando un percorso assoluto. Per ulteriori informazioni, consulta Directory di sistema AVD. Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -sysdir
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/test
-system filepath

Specifica un file di sistema iniziale. Fornisce il nome file e un percorso assoluto o un percorso relativo alla directory di lavoro.

Ecco alcuni esempi:

emulator @Nexus_5X_API_23 -system
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/system-test.img

Se non utilizzi questa opzione, il valore predefinito è il file system.img nella directory di sistema. Per ulteriori informazioni, consulta la sezione Directory di sistema AVD.

-use-system-libs

In Linux, viene utilizzato il sistema libstdc++ anziché la versione integrata nel sistema di emulatore. Usa questa opzione solo se l'emulatore non si avvia normalmente e tieni presente che non funziona sempre. In alternativa, imposta la variabile di ambiente ANDROID_EMULATOR_USE_SYSTEM_LIBS su 1.

Ecco alcuni esempi:

me-linux$ emulator @Nexus_5X_API_23 -use-system-libs
-writable-system

Utilizza questa opzione per avere un'immagine di sistema scrivibile durante la sessione di emulazione. Per farlo:

  1. Avvia un dispositivo virtuale con l'opzione -writable-system.
  2. Inserisci il comando adb remount da un terminale di comando per indicare all'emulatore di rimontare system/ in lettura/scrittura. Per impostazione predefinita, è montato in sola lettura.

L'utilizzo di questo flag crea una copia temporanea dell'immagine di sistema che può essere molto grande, fino a diverse centinaia di MB, ma che verrà eliminata alla chiusura dell'emulatore.

Opzioni deprecate

Le seguenti opzioni della riga di comando sono deprecate:

  • -audio-in
  • -audio-out
  • -charmap
  • -code-profile
  • -cpu-delay
  • -dpi-device
  • -dynamic_skin
  • -enable-kvm
  • -gps
  • -image
  • -keyset
  • -help-keys
  • -help-keyset-file
  • -nand-limits
  • -noskin
  • -no-skin
  • -onion
  • -onion-alpha
  • -onion-rotation
  • -radio
  • -ranchu
  • -raw-keys
  • -scale
  • -shared-net-id
  • -shell-serial
  • -skin
  • -skindir
  • -trace
  • -useaudio

Ricevi assistenza sulle opzioni della riga di comando

In questa sezione viene descritto come ricevere assistenza sulle opzioni della riga di comando. Fornisce informazioni più approfondite sulle opzioni della riga di comando dell'emulatore di uso comune che sono disponibili quando avvii l'emulatore.

Elenca tutte le opzioni dell'emulatore

Per stampare un elenco di tutte le opzioni dell'emulatore, inclusa una breve descrizione, inserisci il seguente comando:

emulator -help

Ricevere assistenza dettagliata per un'opzione specifica

Per stampare la guida per un'opzione di avvio specifica, inserisci il seguente comando:

emulator -help-option

Ecco alcuni esempi:

emulator -help-netspeed

Questa guida è più dettagliata rispetto alla descrizione fornita dall'opzione -help.

Ottieni una guida dettagliata per tutte le opzioni

Per ricevere assistenza dettagliata per tutte le opzioni dell'emulatore, inserisci il seguente comando:

emulator -help-all

Elenco variabili di ambiente dell'emulatore

Per ottenere un elenco di variabili di ambiente dell'emulatore, inserisci il seguente comando:

emulator -help-environment

Puoi impostare le variabili di ambiente nella finestra del terminale prima di avviare un dispositivo virtuale oppure tramite le impostazioni utente nel sistema operativo. Ad esempio, impostala nel file .bashrc su Linux.

Elenca tag di debug

Per stampare un elenco di tag per le opzioni di -debug, inserisci il seguente comando:

emulator -help-debug-tags

Le opzioni -debug consentono di attivare o disattivare i messaggi di debug da componenti dell'emulatore specifici, come specificato dai tag.