Rendre l'émulateur Android plus rapide

251

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

Comment faites-vous pour exécuter l'émulateur le plus rapidement possible? J'ai joué avec ses paramètres mais je n'ai pas encore trouvé de configuration qui montre une amélioration notable.

hpique
la source
1
toutes mes applications s'exécutent plus rapidement sur l'appareil
16
C'est drôle parce que le simulateur iPhone est exactement le contraire. Les applications s'exécutent plus lentement sur l'appareil. Dans la plupart des cas, je préfère un émulateur plus lent, car il vous stimule pour améliorer votre application, mais parfois vous voulez juste le voir fonctionner comme il le fait dans un vrai appareil.
hpique
1
Il est possible de le faire fonctionner BEAUCOUP plus rapidement alias normalement en utilisant VirtualBox - voir stackoverflow.com/a/6058689/40961
David d C e Freitas
5
iOS et Windows Mobile utilisent des simulateurs, tandis qu'Android utilise des émulateurs. Les simulateurs réimplémentent toutes les bibliothèques mobiles et les API à l'aide des bibliothèques hôtes et sont donc rapides. Les émulateurs utilisent les mêmes bibliothèques que sur les vrais appareils, donc c'est plus lent. En termes d'Android, si vous utilisez une machine virtuelle Android, ce sera très rapide. Nous fournissons un vm gratuit ici: leapdroid.com
huisinro
2
... et à quel point est-ce fou que 6 ans plus tard, et même avec HAXM et l'image système x86 et un environnement de développement bien spécifié, l'émulateur Android est toujours aussi lent que la mélasse?
aroth

Réponses:

230

Page web officielle

~ 50% plus rapide

Les fenêtres:

  • Installez "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Extras
  • Installez "Intel x86 Atom System Images" => 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 pour installer. (dans Android Studio, vous pouvez accéder à: Paramètres -> SDK Android -> Outils SDK -> Accélérateur d'émulateur Intel x86 (programme d'installation HAXM))

  • Créer AVD avec CPU / ABI "Intel atom x86"

  • 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 commandes et exécutez la commande: sc query intelhaxm)

entrez la description de l'image ici

N'oubliez pas non plus d'installer celui-ci

entrez la description de l'image ici

PS pendant la création d'AVD ajouter de la mémoire d'émulation: matériel / nouveau / taille de RAM de l'appareil / valeur de configuration 512 ou plus

Linux:

  • Installer KVM: ouvrez GOOGLE, écrivez "installation kvm"
  • Créer AVD avec CPU / ABI "Intel atom x86"
  • Exécuter à partir de la ligne de commande: émulateur -avd nom_avd -qemu -m 512 -enable-kvm
  • Ou exécutez à partir d'Eclipse: Run / Run Configurations / Tab "Target" -> check Intel x86 AVD et dans la fenêtre "Additional Emulator Command Line Options" add: -qemu -m 512 -enable-kvm (cliquez sur Run)

entrez la description de l'image ici

PS Pour Fedora , pour Ubuntu

OS-X:

  • Dans Android SDK Manager, installez Intel x86 Atom System Image
  • Dans Android SDK Manager, installez Intel x86 Emulator Accelerator (HAXM)
  • Dans le Finder, accédez à l'emplacement d'installation d'Intel Emulator Accelerator et installez IntelHAXM (ouvrez le 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 AVD et spécifiez Intel Atom x86 comme CPU. Accélérateur d'émulateur Intel x86 (HAXM) indiquant l'emplacement

PS: Vérifiez cet outil, très pratique même en essai

Gennadiy Ryabkin
la source
8
Cela fonctionne également dans OSX. Vous devez installer /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgaprès avoir téléchargé le package à partir du gestionnaire SDK.
Jarett Millard
5
Les instructions Windows avec "Utiliser l'hôte GPU" m'ont donné un émulateur ultra-rapide! (J'ai un processeur Intel pris en charge et une carte graphique nVidia.) Les animations sont fluides (la plupart du temps ; à d'autres moments, très peu de secousses)! Notez que vous devez redémarrer Eclipse pour qu'AVD Manager récupère l' option CPU Intel Atom (x86) . Astuce: n'allouez pas trop de RAM. Avec 1 Go de RAM, l'émulateur n'a pas pu démarrer (avec GPU) mais avec 512 Mo de RAM, il a fonctionné sans problème et a démarré très rapidement (à nouveau avec GPU).
ADTC
J'ai trouvé que le LogCat est spammé avec de nombreux avertissements de trace. Pour les filtrer, utilisez-les ^(?!.*(nativeGetEnabledTags)).*$comme filtre de texte. J'ai signalé cela comme un problème de bogue . De plus, je pense que vous devez arrêter correctement votre émulateur (maintenez le bouton d'alimentation, puis sélectionnez Éteindre ) pour éviter d'avoir des erreurs lorsque vous le démarrez la prochaine fois (je pourrais simplement fermer l'émulateur ARM, mais avec l'émulateur Intel, la fermeture semble créer des problèmes).
ADTC
Je vous donnerais +100 si je le pouvais. Fonctionne sur Windows 8 et les performances ont considérablement augmenté!
Paolo M
2
J'ai dû d'abord désactiver la technologie Hyper V via le programme et les fonctionnalités sous le panneau de configuration pour que cela fonctionne.
Mike Flynn
34

MISE À JOUR: Maintenant qu'une image Intel x86 est disponible, la meilleure réponse est par zeste ci-dessus.

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

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

Ensuite, donnez à l'émulateur plus de 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 fait le temps CPU total que l'émulateur obtiendra. La désactivation de HT ralentira les applications qui tirent parti de plusieurs processeurs. L'hyperthreading doit être désactivé dans votre BIOS.
  2. Faire fonctionner l'émulateur sur un CPU autre que le CPU 0 - Cela a un impact beaucoup plus faible que de désactiver HT, mais cela aide certains. Sous Windows, vous pouvez spécifier sur quel processeur un processus s'exécutera. De nombreuses applications vont mâcher le CPU 0, et par défaut l'émulateur fonctionne sur le CPU 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: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

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

Pour définir l'affinité du processeur sous 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é du 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 modifiez l'affinité de cette manière, elle n'est modifiée que pour la durée de vie du processus. Prochain démarrage, vous devez recommencer.

entrez la description de l'image ici

mcohen75
la source
22
Le pourcentage de CPU a doublé lorsque vous avez désactivé l'hyper-threading car vous avez réduit de moitié le nombre de processeurs logiques.
Timothy003
1
Cela fonctionne comme un charme mais .. Savez-vous comment le faire sur Ubuntu 11.10?
emeraldhieu
1
@ Timothy003 oui absolument correct. Et doublé le CPU que l'émulateur utilisera.
mcohen75
3
Vous ne voyez qu'un doublement dans le nombre affiche le gestionnaire de tâches; pas en réalité. Si vous n'exécutez pas suffisamment de logiciels pour générer suffisamment de travail pour avoir l'équivalent d'au moins 4 threads à 100% du processeur, les quelques applications utilisant intensivement le processeur obtiendront toujours presque tout le cœur, pas le demi-cœur de votre hypothèse naïve de ce que le gestionnaire de tâches affiche signifie.
Dan Is Fiddling By Firelight
3
Pour confirmer ce que dit @Dan Neely: J'ai une application à cœur unique, qui brûle simplement 100% du processeur. Quand j'ai HT, il montre environ 25%, sans qu'il montre environ 50%, mais en fait, il calcule ce qu'il doit calculer en même temps. Donc pas de différence (du moins sur Sandy Bridge).
bartosz.r
17

Je voudrais suggérer d' essayer Genymotion . Il s'exécute 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 MacBook Air modèle 2012 bas de gamme:

Émulateur Nexus 7 fonctionnant à 56,6 ips

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

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

Paul Lammertsma
la source
12

Activez l' accélération matérielle GPU (en plus de 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 le dessin d'é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 l'émulation GPU et définissez la valeur sur Oui.

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

emulator -avd <avd_name> -gpu on

Source: didacticiel sur l'utilisation de l'émulateur de Google .

John Lehmann
la source
10

Modifier Bien que l'utilisation des images Intel obtienne des gains de performances, les performances obtenues en utilisant Genymotion sont beaucoup plus importantes. Voir la 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 virtualisation sous Windows et Mac OS X. Cela a un impact notable sur les performances.

Notes ADT rev 17: 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

ThomasW
la source
7

Je suis récemment passé d'un cœur 2 @ 2,5 avec 3 Go de RAM à un i7 @ 1,73 avec 8 Go de RAM (les deux systèmes exécutaient Ubuntu 10.10) et l'émulateur fonctionne au moins deux fois plus vite maintenant. Jeter plus de matériel à cela aide certainement.

TripleG
la source
Ce n'est pas vraiment une solution: cela peut permettre à l'émulateur d'avoir un débit plus élevé à la fois, mais cela ne le fera pas fonctionner plus rapidement.
Plus clair
4

J'ai remarqué que l'émulateur est par défaut uniquement le Core 0, où la plupart des applications Windows seront par défaut "n'importe" core. De plus, si vous le mettez sur un autre noyau (comme le dernier noyau), cela peut rendre l'émulateur fou. Si vous le pouvez, vous pouvez essayer de mettre vos applications d'utilisation intensive du processeur sur les autres cœurs de processeur pour augmenter la vitesse.

Côté matériel, obtenez le processeur le plus rapide que vous puissiez obtenir et qui fonctionne pour les applications monocœur. Plus de 2 cœurs peuvent ne pas connaître une énorme différence en termes de performances de l'émulateur.

Eclipse + l'émulateur Android consomme 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 cela a ralenti parce que le système manquait de RAM et a commencé à utiliser le fichier d'échange.

Je pense que les meilleurs processeurs auront probablement une horloge élevée (utilisez uniquement l'horloge 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 de turbo boost. Il n'y a pas beaucoup de benchmarks basés sur Java, mais recherchez globalement des benchmarks d'application comme la compression et le bureau. Ne regardez pas les jeux ou les médias car ceux-ci sont fortement affectés par SIMD. Si vous en trouvez un en Java, c'est encore mieux.

Joe P
la source
4

Sur cette année, Google I / O (2011), Google a démontré un émulateur plus rapide. Le problème n'est pas tant sur le code d'octet entre ARM et x86 mais sur le rendu 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 des fps.

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

César
la source
Des nouvelles de cet émulateur? Quel était son nom?
alcor
Je n'ai pas de nouvelles. Je n'ai pas suivi les mises à jour de l'émulateur Android depuis environ un an.
Cesar
3

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 .

Koc
la source
1

Je pense que c'est parce que la machine virtuelle clr utilise directement cpu sans traduction de code opcode. Il peut s'agir d'une optimisation pour l'application clr ou peut être Windows Mobile / Windows Phone 7 démarré sur le processeur INTEL. Plate-forme Android 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 opcodes directement. Mais cette option ne sera autorisée que si vous écrivez sur Java. Parce que Java interprète leur octet-code ou le précompile avant l'exécution. voir: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

assad
la source
1

Merci @zest! A fonctionné comme un charme. Certaines choses à noter: Nécessité d'appliquer le correctif d'Intel pour le HAXM à traiter avec problème de panique du noyau: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Aussi, notez , si vous avez plusieurs abi, vous devez en désinstaller un en raison d'un bogue dans la dernière version de l'API Android (r19): https://code.google.com/p/android/issues/detail?id= 66740 (supprimez armeabi-v7a dans ce cas, car vous voulez le x86 abi). Outre les 45 minutes qu'il m'a fallu pour résoudre ces problèmes, ce fut un exercice très gratifiant en termes de performances accrues de l'émulateur.

horcle_buzz
la source
1

Vous pouvez également essayer l' émulateur Android de Visual Studio , 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.

David Dostal
la source
1

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

Oleg Tarashkevich
la source
1

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

Dan Alboteanu
la source
0

J'utilise le processeur Intel (86) / ABI. J'ai créé un autre émulateur en utilisant l'ARM (armeabi-v7a) et j'ai trouvé pas mal d'amélioration avec la vitesse. J'utilise la plateforme 4.1.2 API niveau 16

étrange_développeur
la source
0

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 ...

RajeshVijayakumar
la source
0

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

L'émulateur Android Studio 2.0 s'exécute environ 3 fois plus rapidement que l'émulateur précédent d'Android, et avec les améliorations de l'ADB, vous pouvez désormais envoyer des applications et des données 10 fois plus rapidement vers l'émulateur que vers un appareil physique. Comme un appareil physique, l'émulateur Android officiel comprend également les services Google Play intégrés, vous pouvez donc tester plus de fonctionnalités API. Enfin, le nouvel émulateur dispose de nouvelles fonctionnalités riches pour gérer les appels, la batterie, le réseau, le GPS, etc.

Umer
la source