Come risolvere: "HAX non funziona e l'emulatore funziona in modalità di emulazione"


141

La domanda è

Ottengo "HAX non funziona e l'emulatore funziona in modalità di emulazione", è correlato all'installazione di Intel x86 Emulator Accelerator (HAXM) e all'esecuzione di avd con CPU impostata su CPU Intel Atom (x86)? E anche se sembra che AVD funzioni più velocemente dopo aver installato HAXM, questo messaggio indica che le prestazioni di AVD sono ostacolate. Dovrebbe essere riparato e, in caso affermativo, come?

Sono in esecuzione su Mac OS X 10.9.1.

Elenco di ciò che è installato sul mio sistema tramite Android SDK Manager:

  • Utensili
    • Android SDK Tools Rev 22.3
    • Android SDK Platform-tools rev 19.0.1
    • Android SDK Build-tools Rev 19.0.1
    • Android SDK Build-tools Rev 19

==

  • Android 4.4.2 (API 19)
    • Piattaforma SDK
    • Immagine di sistema ARM EABI v7a
    • Immagine di sistema Intel x86 Ato
    • API di Google
    • Fonti per Android SDK

==

  • extra
    • Intel x86 Emulator Accelerator (HAXM) E ANCHE eseguo anche il programma di installazione dmg e ho installato la correzione rapida, dopo che l'ho scoperto.

Impostazione AVD

  • Piattaforma 4.4.2
  • Livello API 19
  • CPU Intel Atom (x86)

Una volta eseguito avd:

(ruby-2.0.0-p353) .android   $ tools/emulator -avd 1AVD -wipe-data -no-boot-anim -cpu-delay 0

ottengo il seguito e l'emulatore alla fine si carica

emulator: The memory needed by this VM exceeds the driver limit.

HAX is not working and emulator runs in emulation mode

Ho ricevuto questo errore, ma il mio emulatore era già in esecuzione, quindi il mio vero problema era che il target di Visual Studio era iPhone invece di qualsiasi CPU , che ha risolto la mia distribuzione su un simulatore.
Jaider,

Risposte:


200

Sì, dovrebbe essere corretto, HAXM non funziona. Quanta RAM è impostata per l'uso all'interno della configurazione AVD?

768M è un buon numero, ma soprattutto questo numero deve essere inferiore o uguale all'utilizzo della memoria impostato durante l'installazione di HAXM. È possibile avviare nuovamente l'installazione per modificarlo.


9
grazie @ ph0b, tutto qui, HAXM è stato installato con allocazione 1024 per la memoria e la mia istanza avd aveva l'allocazione della memoria impostata su 1907. grazie per averlo sottolineato.
GnrlBzik,

44
Il programma di installazione di HAXM ha suggerito un valore predefinito di 1 GB, ma Nexus 5 AVD è impostato per l'uso 1536. Riportalo a 1 GB e siamo pronti!
aalaap,

14
Grazie. Per coloro che si chiedevano, la posizione del file di installazione di HAXM si trova nella sdk/extras/intelcartella del pacchetto ADT. Posizionando il cursore sulla voce HAXM in AVD Manager verrà visualizzata la posizione esatta.
Koh

2
Apparentemente, @zhelon l'unico modo per configurare HAXM è eseguire nuovamente il programma di installazione.
ThomasW,

23
Se stai utilizzando Windows e Android Studio, procedi come segue. In Android Studio: Strumenti> Android> AVD Manager> Il dispositivo> Mostra impostazioni avanzate> Imposta la RAM sulla dimensione preferita. In Pannello di controllo> Programmi e funzionalità> Intel Hardware Accelerated Execution Manager> Cambia> Imposta manualmente> Imposta sulla dimensione preferita.
Neurotrasmettitore

66

Se sei su un Mac puoi installare haxmusando homebrew tramite cask che è un'estensione integrata (a partire dal 2015) che consente l'installazione di app non open-source e desktop (ad es. Chrome, firefox, eclipse, ecc.):

brew cask install intel-haxm 

Android Studio

Se si utilizza Android Studio, è possibile ottenere lo stesso risultato dal menu ToolsSDK Manager, quindi nella scheda Strumenti SDK , selezionare la casella di controllo per Intel x86 Emulator Accelerator (programma di installazione HAXM) e fare clic Ok.


49

Il modo in cui l'ho risolto è impostando il limite di memoria AVD e la memoria HAXM su dimensioni uguali che sono 1 GB = 1024 MB. L'AVD non può avere un limite di memoria superiore a quello dell'HAXM.

1. Impostazione della memoria HAXM su 1024 M

L'unico modo per modificare la memoria HAXM è installarlo di nuovo. L'ho fatto usando il terminale. Trova Hardware_Accelerated_Execution_Manager nel tuo computer. Quindi modificare la directory in quella cartella per eseguire lo script di installazione.

cd ~/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager

-OR-

cd ~/Library/Developer/Xamarin/android-sdk-macosx/extras/intel/Hardware_Accelerated_Execution_Manager

Potrebbe essere necessario modificare le autorizzazioni:

sudo chmod 755 "HAXM installation"

Poi:

./HAXM\ installation -m 1024

-OR-

sudo ./"HAXM installation" -m 1024

2. Impostazione del dispositivo virtuale della stessa dimensione con il limite di memoria HAXM

inserisci qui la descrizione dell'immagine

Questo funziona per me. In bocca al lupo!


2
Questo ha funzionato anche per me. Se stai cercando la schermata di configurazione AVD, è su Strumenti> Android> AVD Manager
stephenspann

2
Se si desidera avere più di un AVD in esecuzione contemporaneamente, la RAM massima HAXM deve essere il totale per tutti gli AVD in esecuzione, ovvero due AVD @ 1024 MB = 2048 MB, quindi:$ sudo ./HAXM\ installation -m 2048
Jason Hartley,


20

Per Windows.

In Android Studio:

Strumenti > Android > AVD Manager > Il tuo dispositivo > Icona matita > Mostra impostazioni avanzate > Memoria e archiviazione > RAM > Imposta la RAM sulla dimensione preferita.

In Control Panel:

Programmi e funzionalità > Intel Hardware Accelerated Execution Manager > Cambia > Imposta manualmente > Imposta RAM sulla dimensione preferita.

È meglio che le dimensioni della RAM impostate in entrambi i posti siano uguali.


2
+1 per spiegare il luogo esatto in cui impostare questi valori. Troppe risposte su Internet presuppongono un livello di conoscenza che il lettore, come me, non ha sempre :-)
MikeKulls

4

Controlla l'ultima versione di Has sul sito Web Intel e installala. Lasciare il ram nella dimensione consigliata "preset 2048", quindi provare a eseguire l'app. Le cose dovrebbero funzionare bene.


2

Sì, dovrebbe essere corretto, HAXM non funziona.

HAXM a volte funziona; l'esperienza con HAXM è attualmente sporadica su tutte le piattaforme.

Ad esempio, ho iMac alla fine del 2009 con 10.8.5 e processore i7 a 2.8Ghz, Android SDK 22.6 con tutte le chicche aggiornate questa mattina (03/05/14). API17 costruirà emulatori con accelerazione HAXM su questa macchina iMac, API19 soffoca.

Ho anche all'inizio del 2013 MBP 15 "Retina con 10.8.5 e processore i7 a 2,7 Ghz, Android SDK 22.6 con tutte le chicche aggiornate questa mattina (03/05/14). API17 costruirà emulatori con accelerazione HAXM, API19 funziona anche alla grande .

Idem per la mia (personale) fine del 2013 MBP Retina 13 "con i5 dual-core e Mavericks.

C'è qualcosa in corso per la virtualizzazione a livello di chip mancante dalle CPU più vecchie (anche i7) di cui le nuove immagini API19 x86 hanno bisogno per far funzionare HAXM. Se API19 non funziona, provare API17 o addirittura 16.


2

Sul tuo Mac Apri il Finder, quindi Ctr + Alt + G digita questo/Users/${yourMacNameHere}/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager

troverai il programma di installazione dell'acceleratore dell'emulatore, quindi eseguilo e imposta la memoria che devi modificare e riprova per eseguire la tua applicazione Android


La sequenza di tasti sopra non ha funzionato per me, ma ha semplicemente cercato il IntelHAXM_<version name>.dmgfile nella directory 'sdk / extras / intel' e ha eseguito il programma di installazione da lì (Mac OSX)
kip2

2

se si utilizza il processore Intel, assicurarsi che il programma di installazione HAXM (Intel® Hardware Accelerated Execution Manager) sia installato tramite SDK Manager selezionando questa opzione in SDK Manager. e quindi eseguire il programma di installazione HAXM ext tramite il percorso seguente

your_sdk_folder\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm.exe

controlla anche la dimensione della ram allocata mentre esegui l'installazione HAX in modo che si adatti alla dimensione della ram dell'emulatore.

Questo video mostra tutti i passaggi necessari che possono aiutarti a risolvere il problema.

Questo video ti aiuterà anche in caso di problemi dopo l'installazione di HAXM.


1

Aumentare la dimensione della ram allocata durante l'installazione di HAX, in modo da adattarsi esattamente o un po 'più allo spazio rispetto alla dimensione della ram dell'emulatore che si desidera avviare in modalità "Intel x86 Emulator Accelerator (HAXM)",

Una volta che ci riesci, ora puoi visualizzarlo nella console / registro

inserisci qui la descrizione dell'immagine



1

La soluzione di Geckob funziona perfettamente. Attenzione: HAXM fornito viene utilizzato su tutti i dispositivi in ​​esecuzione. Quindi, se stai testando su un telefono e un tablet contemporaneamente e ognuno ha un requisito di 1G. Quindi assicurati che il tuo HAXM assegnato sia almeno 2G.


1

Scarica HAXM da SDK Manager

Apri il tuo SDK Manager da Android Studio, fai clic sull'icona mostrata nella schermata.

inserisci qui la descrizione dell'immagine

Fare clic su "Avvia Manager SDK autonomo" nella finestra di dialogo "Impostazioni predefinite".

inserisci qui la descrizione dell'immagine

Controllare il nodo "Extra> Intel x86 Emulator Accelerator (programma di installazione HAXM)" e procedere con il download di HAXM.

inserisci qui la descrizione dell'immagine

Installazione o modifica di HAXM

Ora puoi accedere con l'installazione (o modificando installtino esistente) di HAXM accedendo al percorso di download. Inserisci questo percorso in "Esegui"

% Localappdata% \ Android \ SDK \ extra \ intel \ Hardware_Accelerated_Execution_Manager

e fai doppio clic sul file "intelhaxm-android.exe"

È possibile aumentare la dimensione della memoria allocata a HAXM mentre si modifica l'installazione HAXM esistente. Ho una macchina con 32 GB di RAM e vorrei avviare più AVD contemporaneamente (per test automatici, ecc.), Quindi ho assegnato 8 GB a HAXM.

Avvertimento

Se si esegue un AVD da 1 GB e 2 GB assegnati a HAXM, non è possibile eseguire un altro AVD con RAM superiore a 1 GB. Assicurati che Android Device Monitor non sia in esecuzione quando modifichi o installi HAXM (solo per evitare sorprese).

inserisci qui la descrizione dell'immagine

Questi passaggi sono testati su piattaforma Windows, ma generalmente potrebbero essere applicati anche ad altre piattaforme con lievi modifiche.


1

Il mio problema era che non potevo più eseguire un emulatore che aveva funzionato perché avevo chiuso l'applicazione dell'emulatore ma il processo non era terminato, quindi stavo cercando di avviare un altro emulatore mentre quello precedente era ancora in esecuzione. Su un Mac, ho dovuto usare Activity Monitor per vedere l'altro processo e ucciderlo. passi:

  1. Apri Activity Monitor (in Utilità o usando Command + Space)
  2. Individua il nome del processo, nel mio caso, qemu-system ...
  3. Seleziona il processo
  4. Forza la chiusura del processo usando il pulsante 'x' in alto a sinistra.
  5. Non ho dovuto usare 'Uscita forzata', solo la semplice 'Uscita', ma puoi usare anche tu.

1

Nel mio caso, questo errore è stato corretto quando ho impostato la memoria HAXM uguale alla memoria AVD. Memoria HAXM 1024 MB = Memoria AVD 1024 MB

Hax is enabled
Hax ram_size 0x40000000
HAX is working and emulator runs in fast virt mode.

Fino a questo punto l'errore dovrebbe essere corretto.

Ora sto elencando il mio ambiente specifico nel caso in cui possa essere di aiuto per qualcuno che utilizza OS X.

OS X El Capitan 10.11.4

MacBook (13 pollici), Intel Core 2 Duo a 2 GHz, 4 GB di RAM.

Android Studio 2.1

Marshmallow (23) x86 non ha passato la schermata dell'icona Android lampeggiante per ore pari.

Lollipop (22) x86 ha superato la schermata dell'icona Android lampeggiante e quindi ha mostrato

  • Avvio di Android (ottimizzazione di app x out di y)
  • Avvio di Android (Avvio di app)
  • Avvio di Android (aggiornamento del database dei contatti)
  • Avvio di Android (avvio di finitura) e rimasto bloccato qui per ore .

KitKat (19) x86 ha funzionato con successo e ho potuto installare il mondo di ciao lì.


è una risposta? @zeeawan
GnrlBzik,

Sì, la memoria HAXM da 1024 MB = la combinazione di memoria AVD da 1024 MB fa funzionare hax. Inoltre, questa risposta risolve il modo in cui l'emulatore ha iniziato a funzionare su OS X.
zeeawan,

Ho bisogno di più narrativa credo.
GnrlBzik,

Quindi stai dicendo che hai corretto l'errore ma hai ancora problemi con l'emulatore che impiega anni ad avviarsi?
Sam,

Andava bene con KitKat (19) x86.
zeeawan,

0

Riapri la configurazione del dispositivo AVD. modificando il dispositivo nel gestore AVD. procedere con la selezione della versione di AVD Android. Nel riquadro di destra viene visualizzato un consiglio, segui quel consiglio e tutto sarà risolto.


0

La memoria predefinita assegnata a HAX è 1024 MB. E l'emulatore ha apparentemente 1536 MB per Nexus 5x api 25.

se stai usando Android Studio,

  • vai su strumenti -> AVD manager.
  • Quindi selezionare l'emulatore e fare clic sul pulsante matita a destra per modificarlo.
  • Vai alle impostazioni avanzate nella nuova finestra e modifica il valore della RAM in 1024

Funziona come un fascino. :)

screenshot di Android Studio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.