Résolution des problèmes: "HAX ne fonctionne pas et l'émulateur s'exécute en mode d'émulation"


141

La question est

J'obtiens "HAX ne fonctionne pas et l'émulateur fonctionne en mode d'émulation", est-ce lié à l'installation d'Intel x86 Emulator Accelerator (HAXM) et à l'exécution de avd avec le processeur défini sur CPU Intel Atom (x86)? Et même si j'ai l'impression qu'AVD fonctionne plus rapidement après l'installation de HAXM, ce message indique-t-il que les performances d'AVD sont entravées. Doit-il être corrigé et si oui, comment?

Je cours sous mac os x 10.9.1.

Liste de ce qui est installé sur mon système via le gestionnaire android sdk:

  • Outils
    • Outils du SDK Android Rév 22.3
    • Outils de plate-forme Android SDK rev 19.0.1
    • Android SDK Build-tools Rev 19.0.1
    • Android SDK Build-tools Rév 19

==

  • Android 4.4.2 (API 19)
    • Plateforme SDK
    • Image système ARM EABI v7a
    • Image système Intel x86 Ato
    • API Google
    • Sources pour le SDK Android

==

  • Suppléments
    • Intel x86 Emulator Accelerator (HAXM) ET J'exécute également le programme d'installation de dmg, et j'ai installé un correctif à chaud, après que j'en ai découvert.

Configuration AVD

  • Plateforme 4.4.2
  • Niveau d'API 19
  • Processeur Intel Atom (x86)

Une fois que je lance avd:

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

je reçois le suivi et l'émulateur se charge finalement

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

HAX is not working and emulator runs in emulation mode

J'ai eu cette erreur, mais mon émulateur était déjà en cours d'exécution, donc mon vrai problème était que la cible de Visual Studio était iPhone au lieu de Any CPU , ce qui a corrigé mon déploiement sur un simulateur.
Jaider

Réponses:


200

Oui, cela devrait être corrigé, HAXM ne fonctionne pas. Quelle quantité de RAM est définie pour être utilisée dans votre configuration AVD?

768M est un bon nombre pour cela, mais surtout ce nombre doit être inférieur ou égal à l'utilisation de la mémoire que vous avez définie lors de l'installation de HAXM. Vous pouvez relancer son installation pour la modifier.


9
merci @ ph0b, c'est tout, HAXM a été installé avec une allocation de 1024 pour la mémoire et mon instance avd avait une allocation de mémoire définie sur 1907. merci de l'avoir signalé.
GnrlBzik

44
Le programme d'installation HAXM a suggéré une valeur par défaut de 1 Go, mais le Nexus 5 AVD est configuré pour utiliser 1536. Remettez-le à 1 Go et c'est parti!
aalaap

14
Merci. Pour ceux qui se posaient la question, l'emplacement du fichier d'installation de HAXM se trouve dans le sdk/extras/inteldossier de votre bundle ADT. Placer votre curseur sur l'entrée HAXM dans votre AVD Manager révélera l'emplacement exact.
Koh

2
@zhelon apparemment, le seul moyen de configurer HAXM est de réexécuter le programme d'installation.
ThomasW

23
Si vous utilisez Windows et Android Studio, procédez comme suit. Dans Android Studio: Outils> Android> AVD Manager> Votre appareil> Afficher les paramètres avancés> Définir la RAM sur la taille préférée. Dans Panneau de configuration> Programmes et fonctionnalités> Intel Hardware Accelerated Execution Manager> Modifier> Définir manuellement> Définir sur la taille préférée.
Neurotransmetteur

66

Si vous êtes sur un mac, vous pouvez installer en haxmutilisant homebrew via cask qui est une extension intégrée (à partir de 2015) qui permet d'installer des applications non open source et de bureau (c'est-à-dire chrome, firefox, eclipse, etc.):

brew cask install intel-haxm 

Studio Android

Si vous utilisez Android Studio, vous pouvez obtenir le même résultat dans le menu ToolsSDK Manager, puis dans l' onglet Outils du SDK , cochez la case Intel x86 Emulator Accelerator (programme d'installation HAXM) , puis cliquez sur Ok.


49

La façon dont j'ai résolu le problème est de définir la limite de mémoire AVD et la mémoire HAXM pour qu'elles soient de taille égale, soit 1 Go = 1024 Mo. L'AVD ne peut pas avoir une limite de mémoire plus élevée que le HAXM.

1. Définition de la mémoire HAXM sur 1024 M

La seule façon de changer la mémoire HAXM est de la réinstaller. Je l'ai fait en utilisant le terminal. Localisez Hardware_Accelerated_Execution_Manager sur votre ordinateur. Puis changez de répertoire ce dossier pour exécuter le script d'installation.

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

-OR-

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

Il peut être nécessaire de modifier les autorisations:

sudo chmod 755 "HAXM installation"

Ensuite:

./HAXM\ installation -m 1024

-OR-

sudo ./"HAXM installation" -m 1024

2. Définition du périphérique virtuel de la même taille avec la limite de mémoire HAXM

entrez la description de l'image ici

Cela fonctionne pour moi. Bonne chance!


2
Cela a fonctionné pour moi aussi. Si vous recherchez l'écran de configuration AVD, c'est dans Outils> Android> AVD Manager
stephenspann

2
Si vous voulez avoir plus d'un AVD en cours d'exécution en même temps, la RAM max HAXM doit être le total pour tous les AVD en cours d'exécution, c'est-à-dire deux AVD @ 1024 Mo = 2048 Mo, donc:$ sudo ./HAXM\ installation -m 2048
Jason Hartley


20

Pour les fenêtres.

Dans Android Studio:

Outils > Android > AVD Manager > Votre appareil > Icône de crayon > Afficher les paramètres avancés > Mémoire et stockage > RAM > Réglez la RAM sur votre taille préférée.

Dans Control Panel:

Programmes et fonctionnalités > Intel Hardware Accelerated Execution Manager > Modifier > Définir manuellement > Définir la RAM sur votre taille préférée.

Il est préférable que les tailles de RAM définies aux deux endroits soient identiques.


2
+1 pour expliquer l'endroit exact où définir ces valeurs. Trop de réponses sur Internet supposent un niveau de connaissance que le lecteur, comme moi, n'a pas toujours :-)
MikeKulls

4

Vérifiez la dernière version de Has sur le site Web d'Intel et installez-la. Laissez le bélier dans la taille recommandée "preset 2048", puis essayez d'exécuter l'application. Les choses devraient bien fonctionner.


2

Oui, cela devrait être corrigé, HAXM ne fonctionne pas.

HAXM fonctionne parfois; l'expérience avec HAXM est actuellement sporadique sur toutes les plates-formes.

Par exemple, j'ai un iMac fin 2009 exécutant un processeur 10.8.5 et un processeur i7 @ 2.8Ghz, Android SDK 22.6 avec tous les bonus mis à jour ce matin (03/05/14). API17 construira des émulateurs avec accélération HAXM sur cette machine iMac, API19 s'étouffe.

J'ai aussi début 2013, MBP 15 "Retina exécutant 10.8.5 et processeur i7 à 2.7Ghz, Android SDK 22.6 avec tous les goodies mis à jour ce matin (03/05/14). API17 construira des émulateurs avec accélération HAXM, API19 fonctionne très bien aussi .

Idem pour mon (personnel) fin 2013 MBP Retina 13 "avec i5 dual-core et Mavericks.

Il y a quelque chose qui se passe pour la virtualisation au niveau de la puce dans les anciens processeurs (même les i7) dont les nouvelles images API19 x86 ont besoin pour que HAXM fonctionne. Si API19 ne fonctionne pas, essayez API17 ou même 16.


2

Sur votre mac Ouvrez le Finder puis Ctr + Alt + G tapez ceci/Users/${yourMacNameHere}/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager

vous allez trouver l'installateur de l'accélérateur de l'émulateur, alors lancez-le et configurez la mémoire dont vous avez besoin, modifiez-le et réessayez d'exécuter votre application Android


La séquence de touches ci-dessus n'a pas fonctionné pour moi, mais a simplement cherché le IntelHAXM_<version name>.dmgfichier dans le répertoire 'sdk / extras / intel' et a exécuté le programme d'installation à partir de là (Mac OSX)
kip2

2

si vous utilisez un processeur Intel, assurez-vous que le programme d'installation de HAXM (Intel® Hardware Accelerated Execution Manager) est installé via SDK Manager en cochant cette option dans SDK Manager. puis exécutez le programme d'installation HAXM via le chemin ci-dessous

your_sdk_folder\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm.exe

Vérifiez également la taille de la RAM allouée lors de l'installation HAX afin qu'elle corresponde à la taille de la RAM de votre émulateur.

Cette vidéo montre toutes les étapes requises qui peuvent vous aider à résoudre le problème.

Cette vidéo vous aidera également si vous rencontrez un problème après l'installation de HAXM.


1

Soit augmenter la taille de la RAM allouée lors de l'installation HAX, de manière à tenir exactement ou un peu plus d'espace que la taille de la RAM de l'émulateur que vous souhaitez lancer en mode "Intel x86 Emulator Accelerator (HAXM)",

Une fois que vous avez réussi, vous pouvez maintenant afficher cela dans la console / le journal

entrez la description de l'image ici



1

La solution de geckob fonctionne parfaitement. Attention: le HAXM que vous fournissez est utilisé sur tous les périphériques en cours d'exécution. Donc, si vous testez sur un téléphone et une tablette en même temps et que chacun a une exigence de 1G. Assurez-vous ensuite que votre HAXM attribué est au moins 2G.


1

Téléchargez HAXM à partir du SDK Manager

Ouvrez votre SDK Manager à partir d'Android Studio, cliquez sur l'icône affichée dans la capture d'écran.

entrez la description de l'image ici

Cliquez sur "Launch Standalone SDK Manager" dans la boîte de dialogue "Default Settings".

entrez la description de l'image ici

Cochez le nœud «Extras> Intel x86 Emulator Accelerator (HAXM installer)» et procédez au téléchargement HAXM.

entrez la description de l'image ici

Installation ou modification de HAXM

Vous pouvez maintenant accéder à l'installation (ou en modifiant le programme d'installation existant) de HAXM en accédant à l'emplacement de téléchargement. Entrez ce chemin dans "run"

% localappdata% \ Android \ sdk \ extras \ intel \ Hardware_Accelerated_Execution_Manager

et double-cliquez sur le fichier "intelhaxm-android.exe"

Vous pouvez augmenter la taille de la mémoire allouée à HAXM tout en modifiant l'installation HAXM existante. J'ai une machine avec 32 Go de RAM et je voudrais lancer plusieurs AVD en même temps (pour des tests automatisés, etc.) donc j'ai alloué 8 Go à HAXM.

Caveat

Si vous exécutez un AVD de 1 Go et allouez 2 Go à HAXM, vous ne pouvez pas exécuter un autre AVD avec plus de 1 Go de RAM. Veuillez vous assurer qu'Android Device Monitor ne fonctionne pas lorsque vous modifiez ou installez HAXM (juste pour éviter toute surprise).

entrez la description de l'image ici

Ces étapes sont testées sur la plate-forme Windows, mais peuvent généralement être appliquées à d'autres plates-formes avec de légères modifications.


1

Mon problème était que je ne pouvais plus exécuter un émulateur qui avait fonctionné parce que j'avais quitté l'application d'émulateur, mais le processus n'était pas complètement terminé, alors j'essayais de lancer un autre émulateur alors que le précédent était toujours en cours d'exécution. Sur un mac, j'ai dû utiliser le moniteur d'activité pour voir l'autre processus et le tuer. Pas:

  1. Ouvrez le moniteur d'activité (dans les utilitaires ou en utilisant Commande + Espace)
  2. Localisez le nom du processus, dans mon cas, qemu-system ...
  3. Sélectionnez le processus.
  4. Forcez le processus à quitter en utilisant le bouton «x» en haut à gauche.
  5. Je n'ai pas eu besoin d'utiliser «Forcer à quitter», juste le simple «Quitter», mais vous pouvez utiliser l'un ou l'autre.

1

Dans mon cas, cette erreur a été corrigée lorsque j'ai défini la mémoire HAXM égale à la mémoire AVD. Mémoire HAXM 1024 Mo = mémoire AVD 1024 Mo

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

Jusqu'à ce point, l'erreur doit être corrigée.

Maintenant, je liste mon environnement spécifique au cas où cela pourrait être utile pour quelqu'un utilisant OS X.

OS X El Capitan 10.11.4

MacBook (13 pouces), Intel Core 2 Duo 2 GHz, 4 Go de RAM.

Android Studio 2.1

Marshmallow (23) x86 n'a pas passé l'écran d'icône Android clignotant pendant des heures paires.

Lollipop (22) x86 a passé l'écran d'icône Android clignotant, puis a montré

  • Démarrage d'Android (optimisation de x sur y applications)
  • Démarrage d'Android (applications de démarrage)
  • Démarrage d'Android (mise à jour de la base de données de contacts)
  • Démarrage d'Android (Finition du démarrage) et est resté bloqué ici pendant des heures .

KitKat (19) x86 a fonctionné avec succès et j'ai pu y installer Hello World.


est-ce une réponse? @zeeawan
GnrlBzik

Oui, la mémoire HAXM 1024 Mo = la combinaison mémoire AVD 1024 Mo fait que le hax a commencé à fonctionner. De plus, cette réponse explique comment l'émulateur a commencé à fonctionner pour moi sur OS X.
zeeawan

Besoin de plus de récit je pense.
GnrlBzik

Alors, dites-vous que vous avez corrigé l'erreur mais que vous rencontrez toujours des problèmes avec l'émulateur qui prend du temps à démarrer?
Sam

C'était bien avec KitKat (19) x86.
zeeawan

0

Rouvrez la configuration de votre appareil AVD. en éditant le périphérique dans le gestionnaire AVD. sélectionnez la version d'AVD Android. Dans le volet droit, une recommandation est affichée pour suivre cette recommandation et tout sera corrigé.


0

La mémoire par défaut attribuée à HAX est de 1024 Mo. Et l'émulateur a apparemment 1536 Mo pour l'API Nexus 5x 25.

si vous utilisez Android Studio,

  • allez simplement dans les outils -> Gestionnaire AVD.
  • Sélectionnez ensuite l'émulateur et cliquez sur le bouton crayon à droite pour l'édition.
  • Accédez aux paramètres avancés dans la nouvelle fenêtre et modifiez la valeur de la RAM à 1024

Fonctionne comme un charme. :)

capture d'écran du studio android

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.