Avvia l'emulatore dalla riga di comando

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

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

Avvia l'emulatore

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

Di seguito è riportata la sintassi di base della riga di comando 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 su un Mac, la riga di comando predefinita sarà simile alla seguente:

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Pixel8_API_34 -netdelay none -netspeed full -qt-hide-window -grpc-use-token -idle-grpc-timeout

Tieni presente che gli argomenti -qt-hide-window -grpc-use-token -idle-grpc-timeout vengono utilizzati solo per eseguire la finestra dell'emulatore in Android Studio. Se vuoi eseguire l'emulatore in una finestra separata, non utilizzare questi parametri aggiuntivi.

Puoi specificare le opzioni di avvio all'avvio dell'emulatore, ma non dopo l'avvio.

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

emulator -list-avds

Utilizza questa opzione per visualizzare un elenco di nomi di durata di visualizzazione media dalla home directory di Android. Puoi eseguire l'override della home directory predefinita impostando la variabile di ambiente ANDROID_SDK_HOME che specifica la radice della directory specifica dell'utente in cui sono archiviati tutti i contenuti della configurazione e dei file di visualizzazione media.

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 tuo file .bashrc su Linux.

Per arrestare 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 per 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 l'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 sull'emulatore.
    Mentre l'emulatore è in esecuzione, puoi utilizzare la console emulatore per emettere comandi secondo necessità.

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 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 su altri tipi di archiviazione, consulta la sezione seguente.

Nota: l'utilità adb considera il dispositivo virtuale come un vero e proprio dispositivo fisico. Per questo motivo, potresti dover utilizzare il flag -d con alcuni comandi adb comuni, come install. Il flag -d consente di specificare quale tra vari dispositivi connessi utilizzare come destinazione di un comando. Se non specifichi -d, l'emulatore sceglie 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 (QEMU).

Directory di sistema della durata di visualizzazione media

La directory di sistema contiene le immagini di sistema Android che l'emulatore utilizza per simulare il sistema operativo. Questa directory contiene file di sola lettura specifici della piattaforma condivisi da tutti gli AVD dello stesso tipo, inclusi livello API, architettura della CPU e variante Android. Le località predefinite sono le seguenti:

  • macOS e Linux - ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Windows - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

Dove:

  • apiLevel è un livello API numerico o una lettera per le release di anteprima. Ad esempio, android-V indica l'anteprima di Android VanillaIceCream. Al momento del rilascio, è diventato il livello API 35, designato da android-35.
  • 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. 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 si basa sull'emulatore QEMU. -kernel
ramdisk.img L'immagine della partizione di avvio. Questo è un sottoinsieme di system.img caricato dal kernel inizialmente prima del montaggio 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. Nello specifico, 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 maggiori informazioni, consulta la descrizione del file userdata-qemu.img nella sezione seguente. -initdata
-init-data

Directory dei dati della durata di visualizzazione media

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

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

  • macOS e Linux - ~/.android/avd/name.avd/
  • Windows 10 e versioni successive - C:\Users\user\.android\name.avd\

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

La tabella seguente elenca i file più importanti contenuti in questa directory:

Tabella 2. File importanti nella directory dei dati della durata di visualizzazione media

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

Il contenuto della partizione dati, che viene visualizzato come data/ nel sistema emulato. Quando crei un nuovo file di visualizzazione di pagina, o quando utilizzi l'opzione -wipe-data per ripristinare le impostazioni di fabbrica, l'emulatore copia il file userdata.img nella directory di sistema per creare questo file.

Ogni istanza di dispositivo virtuale utilizza un'immagine dei dati utente accessibile in scrittura per archiviare i dati specifici dell'utente e della sessione. Ad esempio, utilizza l'immagine per archiviare dati, impostazioni, database e file dell'app installati da un utente unico. Ogni utente ha una directory ANDROID_SDK_HOME diversa in cui sono archiviate le directory dei dati per le cartelle di visualizzazione media create da quell'utente. Ogni durata di visualizzazione media ha un singolo file userdata-qemu.img.

-data
cache.img L'immagine della partizione cache, che viene visualizzata come cache/ nel sistema emulato. È vuoto quando crei una durata di visualizzazione media o utilizzi l'opzione -wipe-data. Archivia i file di download temporanei e viene compilato da Gestione 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 in modo permanente 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 computer di sviluppo e deve essere caricato all'avvio.

Durante la definizione di una durata di visualizzazione media in Gestione AVD, puoi scegliere di utilizzare un file di scheda SD gestito automaticamente o un file creato con lo strumento mksdcard. Puoi visualizzare il file sdcard.img associato a una durata di visualizzazione media in Gestione AVD. L'opzione -sdcard sostituisce il file della scheda SD specificato nella durata di visualizzazione media. Tieni presente che questa opzione relativa alla scheda SD non funziona su Mac con Apple Silicon.

Puoi sfogliare, inviare e 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 sul file della scheda SD prima di caricarlo, monta il file immagine come dispositivo loop e 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

Elenca le directory e i file utilizzati dall'emulatore

Puoi scoprire la posizione dei file in due modi:

  • Utilizza l'opzione -verbose o -debug init quando avvii l'emulatore dalla riga di comando. Guarda l'output.
  • Usa il comando emulator -help-option 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

Questa sezione elenca le opzioni che puoi fornire nella riga di comando all'avvio dell'emulatore.

Nota:l'emulatore Android è costantemente in fase di sviluppo per renderlo più affidabile. Per conoscere lo stato dei problemi segnalati rispetto alle varie opzioni della riga di comando e per segnalare i bug, consulta lo strumento Android Issue Tracker.

Opzioni più utilizzate

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

Tabella 3. Opzioni a 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 Se possibile esegue un avvio rapido, 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
Consente di impostare la modalità di emulazione per una fotocamera posteriore o anteriore. Questa operazione sostituisce qualsiasi impostazione della videocamera nella durata di visualizzazione media.

mode può essere uno qualsiasi dei seguenti valori:

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

Ad esempio:

emulator @Pixel8_API_34 -camera-back webcam0

-webcam-list Elenca le webcam sul tuo computer di sviluppo che sono disponibili per l'emulazione. Ad esempio:
emulator @Pixel8_API_34 -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 utilizzato 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 del disco e memoria
-memory size

Specifica la dimensione della RAM fisica, da 1536 a 8192 MB. Ecco alcuni esempi:

emulator @Pixel8_API_34 -memory 2048

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

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

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

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

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

-wipe-data Elimina i dati utente e copia i dati dal file di dati iniziale. Questa opzione cancella i dati per il dispositivo virtuale e li restituisce allo stesso stato della prima definizione. Vengono rimosse tutte le app e le impostazioni installate. Ecco alcuni esempi:

emulator @Pixel8_API_34 -wipe-data

Per impostazione predefinita, il file di dati utente è userdata-qemu.img, mentre il file di dati iniziale è userdata.img. Entrambi questi 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 Informazioni sulle directory e sui file predefiniti.

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

$ emulator @Pixel8_API_34 -debug init,metrics

Per disattivare un tag, inserisci un trattino (-) davanti al tag. Ad esempio, la seguente opzione mostra tutti i messaggi di debug, ad eccezione di quelli relativi a socket di rete e 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
Consente di attivare un tipo di messaggio di debug specifico. Utilizza il modulo no per disabilitare un tipo di messaggio di debug. Ecco alcuni esempi:

emulator @Pixel8_API_34 -debug-all -debug-no-metrics

Per un elenco dei tag, usa 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 di tutti i componenti:

emulator @Pixel8_API_34 -logcat *:e

logtags usa 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 corrisponde a un carattere jolly asterisco (*) o al nome di un componente, ad esempio ActivityManager, SystemServer, InputManager o WindowManager.

logLevel è uno di questi valori:

  • v - livello dettagliato
  • d - debug
  • i - informativo
  • w - livello log degli avvisi
  • e - errore
  • s - modalità silenziosa

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

emulator @Pixel8_API_34 -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 di Logcat nel terminale per impostazione predefinita. Puoi anche reindirizzare gli stessi o altri messaggi di log al terminale tramite adb.

Per ulteriori informazioni su Logcat e adb, consulta gli strumento a riga di comando Logcat, Visualizzare e scrivere i log con Logcat, la classe Log e Pubblicare i comandi adb.

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

emulator @Pixel8_API_34 -show-kernel

Questa opzione viene 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 @Pixel8_API_34 -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 di server DNS o indirizzi IP. Ad esempio:
emulator @Pixel8_API_34 -dns-server 192.0.2.0,
192.0.2.255

Per impostazione predefinita, l'emulatore tenta di rilevare i server DNS in uso 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 @Pixel8_API_34 -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, vedi 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 (valore predefinito (min 0, max 0).
  • num: specifica la latenza esatta.
  • min:max - Specifica le latenze minima e massima delle singole persone.

Ad esempio:

emulator @Pixel8_API_34 -netdelay gsm

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

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

emulator @Pixel8_API_34 -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 (up: 14,4, giù: 14,4).
  • hscsd - HSCSD (su: 14,4, giù: 57,6).
  • gprs - GPRS (aumento: 28,8, calo: 57,6).
  • edge - EDGE/EGPRS (aumento: 473,6, calo: 473,6).
  • umts: UMTS/3G (aumento: 384,0, calo: 384,0).
  • hsdpa - HSDPA (valore superiore: 5760,0, inferiore: 13.980,0).
  • lte - LTE (più di 58.000, meno di 173.000).
  • evdo - EVDO (aumento: 75.000, calo: 280.000).
  • full - Nessun limite, valore predefinito (più: 0,0, giù: 0,0).
  • num: specifica la velocità di caricamento e download.
  • up:down: specifica le velocità di salita e discesa individuali.

Ad esempio:

emulator @Pixel8_API_34 -netspeed edge

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

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

emulator @Pixel8_API_34 -port 5556

Il valore predefinito è 5554 per la prima istanza di dispositivo virtuale in esecuzione sulla tua macchina. Di solito 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 la porta della console 5554 e la porta 5555 di adb. Le istanze successive utilizzano il numero di porte aumentato di due. Ad esempio, 5556/5557, 5558/5559 e così via. L'intervallo va da 5554 a 5682, consentendo la presenza di 64 dispositivi virtuali simultanei.

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

L'opzione ‑port segnala le porte e il numero di serie utilizzati dal dispositivo virtuale e avvisa in caso di problemi con i valori forniti. Nell'interfaccia utente 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 ed è compreso nell'intervallo da 5554 a 5584, il dispositivo virtuale verrà avviato, ma non sarà visibile quando utilizzi il comando adb devices, se adb server viene avviato dopo l'emulatore. Per questo motivo, consigliamo di utilizzare un numero di porta uniforme della console.

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

emulator @Pixel8_API_34 -ports 5556,5559

L'intervallo di porte valide è compreso tra 5554 e 5682, consentendo l'inserimento di 64 dispositivi virtuali in contemporanea. 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 forniti.

Ti consigliamo di utilizzare l'opzione -port, ove possibile. L'opzione -ports è disponibile per le configurazioni di rete che richiedono impostazioni speciali.

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

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

emulator @Pixel8_API_34 -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, potrai 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 della VM dell'emulatore. Ecco alcuni esempi:

emulator @Pixel8_API_34 -accel auto

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

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 è installato o utilizzabile, l'emulatore non si avvia e viene visualizzato un messaggio di errore.

Per maggiori informazioni, vedi Configurare l'accelerazione hardware per l'emulatore Android.

-accel-check Controlla se è installato un hypervisor richiesto per l'accelerazione 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 motore QEMU 1 precedente (deprecato).
  • qemu2 - Utilizza il motore QEMU 2 più recente.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -engine auto

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

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

emulator @Pixel8_API_34 -gpu swiftshader_indirect

Per ulteriori informazioni, vedi Configurare l'accelerazione grafica.

-no-accel Disabilita l'accelerazione della 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 @Pixel8_API_34 -no-accel

Per maggiori informazioni, vedi Configurare l'accelerazione hardware per l'emulatore Android.

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

emulator @Pixel8_API_34 -nojni

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

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

me-linux$ emulator @Pixel8_API_34 -selinux permissive

Per impostazione predefinita, SELinux è in modalità enforcing, il che significa che il criterio di sicurezza è stato applicato. 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 dei kernel per SELinux.

-timezone timezone

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

emulator @Pixel8_API_34 -timezone Europe/Paris

Per impostazione predefinita, l'emulatore utilizza il fuso orario del tuo 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, ovvero area/location o area/subarea/location. Ecco alcuni esempi:

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

Il fuso orario specificato deve trovarsi nel databasezoneinfo.

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

emulator @Pixel8_API_34 -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 @Pixel8_API_34 -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 @Pixel8_API_34 -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 del tocco e dello schermo multi-touch.

Opzioni avanzate

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

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

Alcune di queste opzioni sono appropriate per sviluppatori di app esterni e altre vengono utilizzate principalmente da sviluppatori di piattaforme. Gli sviluppatori di app creano app Android e le eseguono su durata di visualizzazione media specifica. Gli sviluppatori di piattaforme lavorano sul sistema Android e lo eseguono all'interno dell'emulatore senza durata di visualizzazione media creata in precedenza.

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 funzionalità di bootcharting. Puoi passare al sistema un periodo di timeout di bootcharting con questa opzione. Se nel sistema di inizializzazione non è attivato bootcharting, l'opzione non ha effetto. Questa opzione è utile principalmente per gli sviluppatori di piattaforme, non per gli sviluppatori di app esterni.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -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 della cache permanente. Se il file non esiste, l'emulatore lo crea come file vuoto.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -cache
   ~/.android/avd/Pixel8_API_34.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 relativi alla durata di visualizzazione media.

-cache-size size

Imposta la dimensione della partizione cache in MB.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -cache-size 1000

Se non specifichi questa opzione, il valore predefinito è 66 MB. Normalmente, la maggior parte degli sviluppatori di app non ha bisogno di questa opzione, a meno che non sia necessario scaricare file molto grandi che superano la cache predefinita. Per ulteriori informazioni sul file della cache, vedi 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 archivia nel nome file specificato e vi rende persistenti i dati utente all'arresto.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -data
   ~/.android/avd/Pixel8_API_34.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, vedi Directory dei dati AVD.

-datadir dir

Specifica una directory di dati utilizzando un percorso assoluto. Per maggiori informazioni, consulta la directory dei dati relativi alla durata di visualizzazione media.

Ecco alcuni esempi:

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

Utilizza l'emulatore a 32 bit su piattaforme a 64 bit. A volte, questa opzione è utile per i test o il debug. Ad esempio, c'è stato un problema per cui l'emulatore a volte non funzionava su Windows a 64 bit, ma a 32 bit. Questa opzione è stata utile per eseguire confronti al fine di eseguire il debug del problema. Ecco un esempio:

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

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

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

Riceve assistenza sulle specifiche del carattere device. Un parametro device è richiesto da alcune opzioni dell'emulatore. Ecco alcuni esempi:

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

Ricevi assistenza sulle immagini disco pertinenti per gli sviluppatori di app. Questa opzione ottiene 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

Ricevi 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 @Pixel8_API_34 -initdata
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/userdata-test.img

Se non specifichi un percorso, il file viene inserito nella directory di sistema. Per ulteriori informazioni, consulta la directory di sistema della durata di visualizzazione media.

-kernel filepath

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

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

Ecco alcuni esempi:

emulator @Pixel8_API_34 -kernel
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/kernel-test.img -show-kernel

Se non specifichi questa opzione, il valore predefinito è kernel-ranchu. Per ulteriori informazioni, consulta la directory di sistema della durata di visualizzazione media.

-noaudio
-no-audio

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

Ecco alcuni esempi:

emulator @Pixel8_API_34 -noaudio
-nocache
-no-cache

Avvia l'emulatore senza una partizione cache. Se non utilizzi questa opzione, il valore predefinito è un file temporaneo denominato cache.img. Questa opzione è riservata agli sviluppatori di piattaforme. Per ulteriori informazioni, vedi Directory dei dati relativi alla durata di visualizzazione media.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -nocache
-no-snapshot

Inibisce sia le operazioni di caricamento automatico che di salvataggio, facendo sì che l'emulatore esegua una sequenza di avvio completa e perda lo stato alla chiusura. Sostituisce l'opzione -snapshot.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -no-snapshot
-no-snapshot-load

Impedisce all'emulatore di caricare lo stato della durata di visualizzazione media dall'archiviazione degli snapshot. Esegue un avvio completo.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -no-snapshot-load
-no-snapshot-save

Impedisce all'emulatore di salvare lo stato della durata di visualizzazione media nello spazio di archiviazione degli snapshot all'uscita. In questo modo, tutte le modifiche andranno perse.

Ecco alcuni esempi:

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

Non tenta di correggere subito l'ora di tempo di visualizzazione media al ripristino dello snapshot. Questa opzione può essere utile durante il test, in quanto evita un salto temporale improvviso. Gli aggiornamenti temporali vengono comunque inviati alla durata di visualizzazione media ogni 15 secondi circa.

Ecco alcuni esempi:

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

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

Ecco alcuni esempi:

emulator @Pixel8_API_34 -no-snapstorage
-no-window

Disattiva la visualizzazione della finestra grafica sull'emulatore. Questa opzione è utile quando viene eseguito l'emulatore su server senza display. Puoi accedere all'emulatore tramite adb o la console. Ecco alcuni esempi:

emulator @Pixel8_API_34 -no-window
-partition-size size

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

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

Imposta una proprietà di sistema Android nell'emulatore all'avvio. name deve essere il nome di una 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 @Pixel8_API_34 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Passa argomenti al software dell'emulatore QEMU. Quando utilizzi questa opzione, assicurati che sia l'ultima specificata, poiché tutte le opzioni successive sono interpretate come opzioni specifiche della QEMU. Questa opzione è piuttosto avanzata e dovrebbe essere utilizzata solo da sviluppatori che hanno molto familiarità con QEMU e con l'emulazione 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 @Pixel8_API_34 -ramdisk
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/ramdisk-test.img

Se non utilizzi questa opzione, il valore predefinito è il file ramdisk.img nella directory di sistema. Per ulteriori informazioni, consulta la directory di sistema della durata di visualizzazione media.

-report-console socket

Segnala la porta della console a una terza parte remota prima di avviare l'emulazione. Può essere utile per uno script per il test automatizzato. socket deve utilizzare uno dei seguenti 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 opzioni specifiche.

-shell

Crea una console shell root sul terminale attuale. Questa opzione differisce dal comando adb shell per i seguenti aspetti:

  • Crea una shell root che ti consente di modificare molte parti del sistema.
  • Funziona anche se adb daemon nel sistema emulato non funziona.
  • Premi Ctrl+C (o Comando+C su macOS) per arrestare l'emulatore anziché la shell.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -shell
-snapshot name

Specifica il nome di uno snapshot all'interno di un file di archiviazione 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 dello stato precedente, che in genere è molto più veloce. Quando fornisci questa opzione, l'emulatore carica lo snapshot con quel nome dall'immagine dello snapshot e lo salva di nuovo con lo stesso nome all'uscita.

Se non utilizzi questa opzione, l'impostazione predefinita è una sequenza di avvio completa. Se lo snapshot specificato non esiste, l'emulatore esegue una sequenza di avvio completa e un'operazione di salvataggio.

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

emulator @Pixel8_API_34 -snapshot snapshot2

Ricorda che, durante il caricamento di uno snapshot, tutti i contenuti del sistema, i dati utente e le immagini della scheda SD vengono sovrascritti con i contenuti conservati al momento della creazione dello snapshot. Se non salvi queste informazioni in uno snapshot diverso, tutte le modifiche apportate successivamente 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 dell'emulatore.

-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, quindi viene chiuso. Se specifichi anche -snapstorage file, questo comando stampa una tabella degli snapshot archiviati nel file.

Ecco alcuni esempi:

emulator @Pixel8_API_34 -snapshot-list -snapstorage
   ~/.android/avd/Pixel8_API_34.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 dello stato. Tutti gli snapshot creati durante l'esecuzione vengono salvati in questo file. Durante l'esecuzione dell'emulatore puoi ripristinare solo gli snapshot in questo file.

Ecco alcuni esempi:

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

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

-sysdir dir

Specifica una directory di sistema utilizzando un percorso assoluto. Per ulteriori informazioni, consulta la directory di sistema della durata di visualizzazione media. Ecco alcuni esempi:

emulator @Pixel8_API_34 -sysdir
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/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 @Pixel8_API_34 -system
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/system-test.img

Se non utilizzi questa opzione, il valore predefinito è il file system.img nella directory di sistema. Per ulteriori informazioni, consulta la directory di sistema della durata di visualizzazione media.

-use-system-libs

Su Linux, viene utilizzato il sistema libstdc++ anziché la versione in bundle con il sistema dell'emulatore. Utilizza 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 @Pixel8_API_34 -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 modalità di 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 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

Assistenza per le opzioni della riga di comando

Questa sezione descrive come richiedere assistenza in merito alle opzioni della riga di comando. Fornisce informazioni più approfondite sulle opzioni a riga di comando dell'emulatore di uso comune, disponibili all'avvio dell'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.

Assistenza dettagliata per tutte le opzioni

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

emulator -help-all

Elenca le variabili di ambiente dell'emulatore

Per ottenere un elenco delle variabili di ambiente dell'emulatore, inserisci questo 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 -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.