web-dev-qa-db-fra.com

Rendre l'émulateur Android plus rapide

L'émulateur Android est un peu lent. Pour certains appareils, tels que le Motorola Droid et le Nexus One, l'application s'exécute plus rapidement dans l'appareil que dans l'émulateur. C'est un problème lors du test des jeux et des effets visuels.

Comment faire en sorte que l'émulateur s'exécute aussi vite que possible? Je suis en train de jouer avec ses paramètres mais je n'ai pas trouvé de configuration qui montre une amélioration notable pour le moment.

242
hpique

page web officielle

~ 50% plus rapide

Les fenêtres:

  • Installez "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager/Extras
  • Installez "Intel x86 Atom Images système" => SDK-Manager/Android 2.3.3
  • Accédez au dossier racine du SDK Android et accédez à extras\intel\Hardware_Accelerated_Execution_Manager. Exécutez le fichier IntelHaxm.exe à installer. (Dans Android Studio, vous pouvez accéder à: Paramètres -> Android SDK -> Outils SDK -> Intel x86 Emulator Accelerator (programme d'installation HAXM))

  • Créez un fichier AVD avec "Intel atom x86" CPU/ABI

  • Exécutez l'émulateur et vérifiez dans la console que HAXM est en cours d'exécution (ouvrez une fenêtre d'invite de commande et exécutez la commande: sc query intelhaxm)

enter image description here

Aussi n'oubliez pas d'installer celui-ci

enter image description here

P.S. lors de la création d’AVD, ajoutez une mémoire d’émulation: Matériel/Nouveau/Taille du RAM de l’appareil/Valeur de configuration 512 ou plus

Linux:

  • Installez KVM: ouvrez GOOGLE, écrivez "kvm installation"
  • Créez un fichier AVD avec "Intel atom x86" CPU/ABI
  • Exécuter à partir de la ligne de commande: emulator -avd nom_avd -qemu -m 512 -enable-kvm
  • Ou exécutez Eclipse: Exécuter/Configurations exécutées/Onglet "Cible" -> vérifiez Intel AVD x86 et dans la fenêtre "Options de ligne de commande de l'émulateur supplémentaire", ajoutez: -qemu -m 512 -enable-kvm (cliquez sur Exécuter).

enter image description here

P.S. pour Fedora , pour Ubunt

OS-X:

  • Dans Android SDK Manager, installez Intel x86 Atom Image système
  • Dans Android SDK Manager, installez Intel x86 Emulator Accelerator (HAXM)
  • Dans le Finder, accédez à l'emplacement d'installation de Intel Emulator Accelerator et installez IntelHAXM (ouvrez le fichier dmg et exécutez l'installation). Vous pouvez trouver l'emplacement en plaçant votre souris sur l'entrée Emulator Accelerator dans le SDK Manager.
  • Créez ou mettez à jour un fichier AVD et spécifiez Intel Atom x86 en tant que CPU. Intel x86 Emulator Accelerator (HAXM) showing Location

P.S: Consultez cet outil, très pratique même essai

221
Gennadiy Ryabkin

UPDATE: Maintenant qu'une image Intel x86 est disponible, la meilleure réponse est par zest dessus.

Comme l'a signalé correctement CommonsWare, l'émulateur est lent, car il émule un processeur ARM, qui nécessite une traduction en opcodes Intel. Cette virtualisation gruge le processeur.

Pour rendre l'émulateur plus rapide, vous devez lui donner plus de temps. Commencez avec un processeur rapide ou effectuez une mise à niveau si vous le pouvez.

Ensuite, donnez à l'émulateur plus de la CPU que vous avez:

  1. Désactiver l'hyperthreading - Étant donné que l'émulateur ne semble pas utiliser plus d'un cœur, l'hyperthreading réduit en réalité la quantité totale de temps processeur dont bénéficiera l'émulateur. La désactivation de HT ralentira les applications exploitant plusieurs processeurs. L'hyperthreading doit être désactivé dans votre BIOS.
  2. Permet à l'émulateur de fonctionner sur un processeur autre que le processeur 0 - Cela a un impact beaucoup moins important que de désactiver HT, mais cela aide certains. Sous Windows, vous pouvez spécifier le processeur sur lequel un processus sera exécuté. De nombreuses applications vont gruger le processeur 0 et, par défaut, l'émulateur s'exécute sur le processeur 0. Je change l'émulateur pour qu'il s'exécute sur le dernier. Notez que sous OS X, vous ne pouvez pas définir d'affinité (voir: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac ).

Je constate quelque part une amélioration de 50% avec ces deux changements en place.

Pour définir l’affinité processeur sur Windows 7:

  1. Ouvrir le gestionnaire de tâches
  2. Cliquez sur Afficher tous les processus (pour exécuter en tant qu'administrateur, sinon vous ne pouvez pas définir l'affinité processeur).
  3. Faites un clic droit sur emulator.exe et choisissez Définir l'affinité ...
  4. Dans la boîte de dialogue Définir l'affinité, sélectionnez uniquement le dernier processeur.

Remarque: lorsque vous changez d'affinité de cette manière, cela ne change que pour la durée du processus. Prochain départ, vous devez le refaire.

enter image description here

34
mcohen75

Je voudrais suggérer de donner Genymotion un spin. Il fonctionne dans la VirtualBox d’Oracle et atteindra légitimement 60 fps sur un système modéré.

Voici une capture d'écran de l'un de mes ateliers, fonctionnant sur un modèle MacBook Air bas de gamme 2012:

Nexus 7 emulator running at 56.6 fps

Si vous ne pouvez pas lire le texte, c'est un émulateur Nexus 7 fonctionnant à 56,6 fps. Le gros bonus supplémentaire est que Google Play et ses services sont fournis avec les machines virtuelles.

(La source de l'animation démo peut être trouvée ici .)

16
Paul Lammertsma

Activez l'accélération matérielle du GPU (en plus du HAXM d'Intel), si vous utilisez API 15 v3 ou plus récente et SDK Tools v17 +. L'accélération graphique de l'émulateur tire parti du matériel graphique de votre ordinateur de développement, en particulier de son unité de traitement graphique (GPU), pour accélérer l'affichage de l'écran. Cela donne une augmentation notable de la vitesse.

Pour activer l'accélération graphique activée par défaut sur votre émulateur : lors de la création de l'AVD, dans la section Matériel, cliquez sur Nouveau, sélectionnez Émulation GPU et définissez la valeur sur Oui.

Pour activer l'accélération uniquement à l'exécution : utilisez l'indicateur -gpu lors du démarrage de l'émulateur comme suit:

emulator -avd <avd_name> -gpu on

Source: Didacticiel de Google Utilisation de l'émulateur .

11
John Lehmann

Éditer Bien que l’utilisation des images Intel permette de gagner en performances, les performances obtenues en utilisant Genymotion sont bien meilleures. Voir réponse de Paul Lammertsma .

Réponse précédente

Avec ADT rev 17, l'émulateur prend en charge l'exécution d'images système x86 en mode de virtualisation sous Windows et Mac OS X. Cela a un impact notable sur les performances.

ADT rev 17 notes: http://Android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

Configuration de l'accélération de la machine virtuelle: http://developer.Android.com/guide/developing/devices/emulator.html#accel-vm

9
ThomasW

Je suis récemment passé d'un core 2 @ 2.5 avec 3 Go de RAM à un i7 @ 1.73 avec 8 Go de RAM (les deux systèmes utilisaient Ubuntu 10.10) et l'émulateur s'exécute au moins deux fois plus vite maintenant. Lancer plus de matériel sur cela aide certainement.

7
TripleG

Je voulais juste dire qu'après l'installation de l'accélérateur Intel HAXM et de l'utilisation de l'image Intel Atom, l'émulateur semble fonctionner 50 fois plus vite. La différence est incroyable, jetez-y un œil!

http://www.developer.com/ws/Android/development-tools/haxm-speeds-up-the-Android-emulator.html

6
sonicboom

J'ai remarqué que l'émulateur utilisait uniquement le noyau 0 par défaut. La plupart des applications Windows utilisaient par défaut "n'importe quel" noyau. En outre, si vous le mettez sur un autre noyau (comme le dernier), l'émulateur peut devenir fou. Si vous le pouvez, vous pouvez essayer de placer vos applications à utilisation intensive du processeur sur les autres cœurs du processeur pour augmenter la vitesse.

Sur le plan matériel, obtenez le processeur le plus rapide qui soit pour les applications monocœur. Plus de 2 cœurs pourraient ne pas connaître une énorme différence en termes de performances d'émulateur.

Eclipse + l'émulateur Android consomment ensemble une tonne de RAM. Je recommanderais 3 Go de RAM au moins parce que j'ai utilisé un système avec 2 Go de RAM et que le système a ralenti, car le système est à court de RAM et a commencé à utiliser le fichier d'échange. .

Je pense que les meilleurs processeurs auront probablement une horloge haute (utilisez l'horloge uniquement comme mesure pour les processeurs de la même série), gèrent bien les opérations non-SIMD et disposent d'un mécanisme turbo boost. Il n'y a pas beaucoup de tests de performances basés sur Java, mais globalement, recherchez des tests de performances d'applications tels que la compression et bureautique. Ne regardez pas les jeux ou les médias, car ceux-ci sont grandement affectés par SIMD. Si vous trouvez un Java un, c'est encore mieux.

4
Joe P

Sur cette année google I/O (2011), Google a démontré un émulateur plus rapide. Le problème ne concerne pas tant le code d'octet entre ARM que x86, mais le rendu du logiciel effectué par QEMU. Ils contournent le rendu de QEMU et envoient le rendu directement à un serveur X, je crois. Ils ont montré un jeu de voiture avec de très bonnes performances et fps.

Je me demande quand cela sera disponible pour les développeurs ...

3
Cesar

Google a récemment annoncé un nouvel émulateur pour Android. C'est beaucoup plus rapide et meilleur que l'ancien. Vous pouvez trouver plus d'informations à ce sujet ici .

3
Koc

Merci @zest! Travaillé comme un charme. Quelques points à noter: Nécessité d’appliquer le correctif d’Intel pour HAXM afin de traiter le problème de panique du noyau: http://software.intel.com/en-us/Android/articles/intel-hardware-accelerated-execution-) gestionnaire Notez également que si vous avez plusieurs abi, vous devez en désinstaller un en raison d’un bogue de la dernière version de l’API Android (r19): https://code.google.com/p/Android/issues/detail?id=6674 (supprimez armeabi-v7a dans ce cas, car vous voulez le xi abi). Outre les 45 minutes qu'il m'a fallu pour les résoudre, ce fut un exercice très enrichissant en termes de performances accrues de l'émulateur.

1
horcle_buzz

Je pense que c’est parce que la machine virtuelle clr utilise cpu directement sans conversion de code opcode. Il peut s’agir d’une optimisation pour l’application CLR ou de Windows Mobile/Windows Phone 7 démarré sur le processeur INTEL. Android plate-forme basée sur Linux et théoriquement, vous pouvez démarrer Android sur une machine virtuelle dans un environnement i686. Dans ce cas, les machines virtuelles telles que vmware pourraient exécuter certains codes d'opération directement. Mais cette option ne sera autorisée que si vous écrivez sur Java. Parce que les Java interprètent leur code d'octet ou le précompilent avant l'exécution. voir: http://www.taranfx.com/how-to-run-google-Android-in-virtualbox-vmware-on-netbooks

1
assad

Utilisez Genymotion au lieu de l'émulateur. Genymotion a de meilleures performances https://www.genymotion.com

1
Oleg Tarashkevich

Vous pouvez également essayer Visual Studio Android Emulator , qui peut également être installé en tant qu'émulateur autonome (vous n'avez pas besoin de Visual Studio). Veuillez noter qu'il ne peut être installé que sur Windows Pro ou des systèmes supérieurs.

1
David Dostal

choisissez un émulateur basse résolution (ex: Nexus S) si vous n'avez pas une bonne carte graphique (comme moi)

1
Dan Alboteanu

Une alternative à l'émulateur est la machine virtuelle AndroVM, qui s'exécute beaucoup plus rapidement que l'émulateur et prend en charge l'accélération OpenGL:

http://androvm.org/

Pour l'anecdote, je pense qu'il fonctionne plus rapidement que les appareils Android actuels.

0
Joel Malone

J'utilise le processeur/processeur Intel (86). J'ai créé un autre émulateur en utilisant ARM (armeabi-v7a) et j'ai trouvé une amélioration significative avec la vitesse. J'utilise la plate-forme 4.1.2 API niveau 16

0
strange_developer

J'espère que cela t'aidera.

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

Cela a résolu mon problème ...

0
RajeshVijayakumar

Mettez à jour votre Android Studio actuel sur Android Studio 2. Et mettez également à jour les images système.

L’émulateur Android Studio 2.0 est environ 3 fois plus rapide que l’émulateur précédent, et avec les améliorations apportées à la BAD, vous pouvez désormais transmettre des applications et des données 10 fois plus rapidement à l’émulateur qu’à un périphérique physique. Tout comme un périphérique physique, l'émulateur officiel Android comprend également les services Google Play intégrés, ce qui vous permet de tester davantage de fonctionnalités d'API. Enfin, le nouvel émulateur dispose de nombreuses nouvelles fonctionnalités pour gérer les appels, la batterie, le réseau, le GPS, etc.

0
Umer