Accelerazione hardware per le prestazioni dell'emulatore (Hyper-V e HAXM)

Questo articolo descrive come usare le funzionalità di accelerazione hardware del computer per ottimizzare le prestazioni dell'emulatore Android.

Per gli sviluppatori, Visual Studio semplifica il test e il debug del codice delle applicazioni Xamarin.Android con l'emulatore Android nelle situazioni in cui un dispositivo Android non è disponibile o risulta poco pratico. Tuttavia, l'emulatore Android viene eseguito troppo lentamente se nel computer che lo esegue non è disponibile l'accelerazione hardware. È possibile migliorare notevolmente le prestazioni dell'emulatore Android usando immagini x86 speciali del dispositivo virtuale insieme alle funzionalità di virtualizzazione del computer.

Scenario HAXM WHPX Hypervisor.Framework
È disponibile un processore Intel X X X
È disponibile un processore AMD X
Si vuole supportare Hyper-V X
Si vuole supportare la virtualizzazione annidata Limitato
Si vogliono usare tecnologie come Docker (con WSL2) X X

Accelerazione di emulatori Android in Windows

Le tecnologie di virtualizzazione seguenti sono disponibili per l'accelerazione dell'emulatore Android:

  1. Microsoft Hyper-V e la piattaforma WHPX (Windows Hypervisor Platform). Hyper-V è una funzionalità di virtualizzazione di Windows che consente l'esecuzione di sistemi di computer virtualizzati in un computer host fisico.

  2. Intel Hardware Accelerated Execution Manager (HAXM). HAXM è un motore di virtualizzazione per i computer che eseguono CPU Intel.

Per un'esperienza ottimale in Windows, è consigliabile usare WHPX per l'accelerazione dell'emulatore di Android. Se WHPX non è disponibile nel computer in uso, è possibile usare HAXM. L'emulatore Android usa automaticamente l'accelerazione hardware se vengono soddisfatti i criteri seguenti:

  • L'accelerazione hardware è disponibile e abilitata nel computer di sviluppo.

  • L'emulatore esegue un'immagine del sistema creata per un dispositivo virtuale basato su x86.

Importante

Non è possibile eseguire un emulatore accelerato di macchina virtuale all'interno di un'altra macchina virtuale, ad esempio una macchina virtuale ospitata da VirtualBox, VMware o Docker (a meno che non si usi WSL2). È necessario eseguire l'emulatore Android direttamente nell'hardware del sistema.

Per informazioni sull'avvio e sul debug con l'emulatore Android, vedere Debug nell'emulatore Android.

Accelerazione con Hyper-V

Prima di abilitare Hyper-V, leggere la sezione seguente per verificare che il computer supporti Hyper-V.

Verifica del supporto per Hyper-V

Hyper-V viene eseguito nella piattaforma Windows Hypervisor. Per usare l'emulatore Android con Hyper-V, il computer deve soddisfare i criteri seguenti per supportare la piattaforma Windows Hypervisor:

  • L'hardware del computer deve soddisfare i requisiti seguenti:

    • CPU Intel o AMD Ryzen a 64 bit con Second Level Address Translation (SLAT).
    • Supporto della CPU per estensioni modalità di monitoraggio macchina virtuale (VT-c nelle CPU Intel).
    • Almeno 4 GB di memoria.
  • Nel BIOS del computer è necessario abilitare gli elementi seguenti:

    • Tecnologia di virtualizzazione (potrebbe avere un'etichetta diversa a seconda del produttore della scheda madre).
    • Protezione esecuzione programmi basata su hardware.
  • Il computer deve disporre dell'Aggiornamento di Windows 10 - aprile 2018 (build 1803) o versione successiva. È possibile verificare se la versione di Windows è aggiornata usando la procedura seguente:

    1. Nella casella di ricerca Windows digitare informazioni.

    2. Nei risultati della ricerca selezionare Informazioni sul PC.

    3. Scorrere verso il basso la finestra Informazioni su fino a visualizzare la sezione Specifiche Windows.

    4. Verificare che la versione sia almeno 1803:

      Windows specifications

Per verificare che l'hardware e il software del computer siano compatibili con Hyper-V, aprire un prompt dei comandi e digitare il comando seguente:

systeminfo

Se tutti i requisiti di Hyper-V elencati hanno un valore Yes, i computer possono supportare Hyper-V. Ad esempio:

Example systeminfo output

Abilitazione dell'accelerazione di Hyper-V

Se il computer soddisfa i criteri sopra riportati, seguire questa procedura per accelerare l'emulatore Android con Hyper-v:

  1. Immettere funzionalità di windows nella casella di ricerca Windows e selezionare Attivazione o disattivazione delle funzionalità Windows nei risultati della ricerca. Nella finestra di dialogo Funzionalità Windows abilitare Hyper-V e Piattaforma Windows Hypervisor:

    Enabling Hyper-V and Windows Hypervisor Platform

    Dopo aver apportato queste modifiche, riavviare il computer.

Importante

Nell'aggiornamento di ottobre 2018 di Windows 10 (RS5) e versioni successive, è necessario abilitare solo Hyper-V, perché la piattaforma WHPX (Windows Hypervisor Platform) verrà usata automaticamente.

  1. Installare Visual Studio 15.8 o versioni successive. Questa versione di Visual Studio offre il supporto IDE per l'esecuzione dell'emulatore Android con Hyper-V.

  2. Installare il pacchetto dell'emulatore Android 27.2.7 o versione successiva. Per installare questo pacchetto, passare a Strumenti > Android > SDK Manager in Visual Studio. Selezionare la scheda Strumenti e verificare che la versione dell'emulatore Android non sia inferiore alla 27.2.7. Verificare anche che la versione di Android SDK Tools corrisponda alla 26.1.1 o versione successiva:

    Android SDKs and Tools dialog

Quando si crea un dispositivo virtuale (vedere Gestione di dispositivi virtuali con Android Device Manager), assicurarsi di selezionare un'immagine del sistema basata su x86. Se si usa un'immagine del sistema basata su ARM, il dispositivo virtuale non verrà accelerato e verrà eseguito lentamente.

Hyper-V dovrebbe ora essere abilitato ed è possibile eseguire l'emulatore Android accelerato.

Accelerazione con HAXM

Se il computer non supporta Hyper-V, è possibile usare HAXM per accelerare l'emulatore Android. È necessario disabilitare Device Guard se si intende usare HAXM.

Verifica del supporto HAXM

Per determinare se l'hardware supporta HAXM, seguire i passaggi descritti in Il mio processore supporta Intel Virtualization Technology?. Se l'hardware supporta HAXM, è possibile controllare se HAXM è già installato usando la procedura seguente:

  1. Aprire una finestra del prompt dei comandi e digitare il comando seguente:

    sc query intelhaxm
    
  2. Esaminare l'output per vedere se il processo HAXM è in esecuzione. In caso affermativo, lo stato di intelhaxm verrà visualizzato come RUNNING. Ad esempio:

    Output from sc query command when HAXM is available

    Se STATE non è impostato su RUNNING, HAXM non è installato.

Se il computer può supportare HAXM, ma quest'ultimo non è installato, usare la procedura descritta nella sezione successiva per installare HAXM.

Installazione di HAXM

I pacchetti di installazione di HAXM per Windows sono disponibili nella pagina delle versioni di GitHub di Intel Hardware Accelerated Execution Manager . Usare la procedura seguente per scaricare e installare HAXM:

  1. Scaricare dal sito Web di Intel la versione più recente del programma di installazione del motore di virtualizzazione HAXM per Windows. Scaricando il programma di installazione di HAXM direttamente dal sito Web di Intel, si può essere certi di usare la versione più recente.

  2. Eseguire haxm-N.N.N-setup.exe (dove N.N.N è il numero di versione) per avviare il programma di installazione HAXM. Accettare i valori predefiniti nelle finestre di dialogo del programma di installazione:

    Intel Hardware Accelerated Execution Manager Setup window

Quando si crea un dispositivo virtuale (vedere Gestione di dispositivi virtuali con Android Device Manager), assicurarsi di selezionare un'immagine del sistema basata su x86. Se si usa un'immagine del sistema basata su ARM, il dispositivo virtuale non verrà accelerato e verrà eseguito lentamente.

Risoluzione dei problemi

Per informazioni su come risolvere i problemi di accelerazione hardware, vedere la guida alla risoluzione dei problemi dell'emulatore Android.

Accelerazione di emulatori Android in macOS

Le tecnologie di virtualizzazione seguenti sono disponibili per l'accelerazione dell'emulatore Android:

  1. Framework di Hypervisor di Apple. Hypervisor è una funzionalità di macOS 10.10 e versioni successive che consente di eseguire macchine virtuali in un computer Mac.

  2. Intel Hardware Accelerated Execution Manager (HAXM). HAXM è un motore di virtualizzazione per i computer che eseguono CPU Intel.

È consigliabile usare il framework Hypervisor per l'accelerazione dell'emulatore Android. Se il framework Hypervisor non è disponibile nel computer Mac, è possibile usare HAXM. L'emulatore Android usa automaticamente l'accelerazione hardware se vengono soddisfatti i criteri seguenti:

  • L'accelerazione hardware è disponibile e abilitata nel computer di sviluppo.

  • L'emulatore esegue un'immagine del sistema creata per un dispositivo virtuale basato su x86.

Importante

Non è possibile eseguire un emulatore accelerato di macchina virtuale all'interno di un'altra macchina virtuale, ad esempio una macchina virtuale ospitata da VirtualBox, VMware o Docker. È necessario eseguire l'emulatore Android direttamente nell'hardware del sistema.

Per informazioni sull'avvio e sul debug con l'emulatore Android, vedere Debug nell'emulatore Android.

Accelerazione con il framework Hypervisor

Per usare l'emulatore Android con il framework Hypervisor, il computer Mac deve soddisfare i criteri seguenti:

  • Il computer Mac deve eseguire macOS 10.10 o versioni successive.

  • La CPU del Mac deve essere in grado di supportare il framework Hypervisor.

Se il computer Mac soddisfa questi criteri, l'emulatore Android userà automaticamente il framework Hypervisor per l'accelerazione. Se non si è certi che il framework Hypervisor sia supportato nel computer Mac, vedere la guida alla risoluzione dei problemi per informazioni su come verificare se il Mac supporta Hypervisor.

Se il framework Hypervisor non è supportato da Mac, è possibile usare HAXM per accelerare l'emulatore Android (descritto di seguito).

Accelerazione con HAXM

Se il computer Mac non supporta il framework Hypervisor (o si usa una versione di macOS precedente a 10.10), è possibile usare Intel Hardware Accelerated Execution Manager (HAXM) per velocizzare l'emulatore Android.

Prima di usare l'emulatore Android con HAXM per la prima volta, è consigliabile verificare che HAXM sia installato e disponibile per l'uso con l'emulatore Android.

Verifica del supporto HAXM

È possibile controllare se HAXM è già installato usando la procedura seguente:

  1. Aprire un terminale e immettere il comando seguente:

    ~/Library/Developer/Xamarin/android-sdk-macosx/tools/emulator -accel-check
    

    Questo comando presuppone che Android SDK sia installato nel percorso predefinito ~/Library/Developer/Xamarin/android-sdk-macosx; in caso contrario, modificare il percorso e selezionare la posizione di Android SDK nel computer Mac.

  2. Se HAXM è installato, il comando precedente restituirà un messaggio simile al risultato seguente:

    HAXM version 7.2.0 (3) is installed and usable.
    

    Se HAXM non è installato, verrà restituito un messaggio simile all'output seguente:

    HAXM is not installed on this machine (/dev/HAX is missing).
    

Se HAXM non è installato, usare la procedura descritta nella sezione successiva per installare HAXM.

Installazione di HAXM

I pacchetti di installazione di HAXM per macOS sono disponibili nella pagina Intel Hardware Accelerated Execution Manager. Usare la procedura seguente per scaricare e installare HAXM:

  1. Scaricare dal sito Web di Intel la versione più recente del programma di installazione del motore di virtualizzazione HAXM per macOS.

  2. Eseguire il programma di installazione di HAXM. Accettare i valori predefiniti nelle finestre di dialogo del programma di installazione:

    Intel Hardware Accelerated Execution Manager Setup window

Risoluzione dei problemi

Per informazioni su come risolvere i problemi di accelerazione hardware, vedere la guida alla risoluzione dei problemi dell'emulatore Android.