Configurer l'accélération matérielle pour Android Emulator

L'émulateur opère de manière optimale s'il peut utiliser le matériel de votre ordinateur, tel que le processeur, le GPU et le modem, au lieu de fonctionner comme un logiciel pur. Cette utilisation du matériel sous-jacent afin d'améliorer les performances est ce que l'on appelle l'accélération matérielle. L'émulateur exploite l'accélération matérielle afin d'optimiser votre expérience de deux manières : l'accélération graphique pour affiner le rendu à l'écran et l'accélération de la machine virtuelle (VM) pour accélérer la vitesse d'exécution. L'accélération matérielle est activée par défaut sur la plupart des machines, mais si elle ne l'est pas sur votre ordinateur, cette page décrit comment configurer l'accélération graphique et l'accélération de la machine virtuelle (VM) afin de démultiplier les performances de l'émulateur.

Configurer l'accélération graphique

L'accélération graphique utilise le matériel de votre ordinateur (généralement le GPU) pour accélérer le rendu à l'écran. Les appareils Android utilisent OpenGL for Embedded Systems (OpenGL ES ou GLES) pour le rendu des graphismes 2D et 3D à l'écran.

Lorsque vous créez un appareil virtuel Android (AVD) dans AVD Manager, vous pouvez spécifier si l'émulateur doit utiliser l'accélération matérielle ou logicielle pour émuler le GPU de l'AVD. L'accélération matérielle, qui est généralement plus rapide, est recommandée. Toutefois, vous devrez peut-être recourir à l'accélération logicielle si votre ordinateur utilise des pilotes graphiques non compatibles avec l'émulateur.

Par défaut, l'émulateur choisit d'utiliser l'accélération graphique matérielle ou logicielle en fonction de la configuration de votre ordinateur. Si le matériel et les pilotes de votre GPU sont compatibles, l'émulateur utilise le GPU. Dans le cas contraire, l'émulateur opte pour l'accélération logicielle (à l'aide du processeur de votre ordinateur) pour simuler le traitement GPU.

Si vous démarrez l'émulateur à partir de la ligne de commande, vous pouvez également remplacer le paramètre d'accélération graphique de l'AVD correspondant à cette instance d'appareil virtuel.

Conditions requises

Pour que vous puissiez utiliser l'accélération graphique, votre environnement de développement doit disposer de la configuration suivante :

  • SDK Tools : version la plus récente recommandée (version 17 au minimum)
  • SDK Platform : dernière version recommandée (Android 4.0.3, révision 3, au minimum)

Configurer l'accélération graphique dans AVD Manager

Pour configurer l'accélération graphique d'un AVD, procédez comme suit :

  1. Ouvrez AVD Manager.
  2. Créez un AVD ou modifiez-en un.
  3. Sur la page Vérifier la configuration, recherchez la section Émulation des performances.
  4. Sélectionnez une valeur pour l'option Graphismes.
  5. Cliquez sur Terminer.

Configurer l'accélération graphique à partir de la ligne de commande

Pour spécifier un type d'accélération graphique lorsque vous exécutez un AVD à partir de la ligne de commande, incluez l'option -gpu, comme illustré dans l'exemple suivant :

emulator -avd avd_name -gpu mode [{-option [value]} ... ]

La valeur de mode peut être définie sur l'une des options suivantes :

  • auto : laissez l'émulateur choisir entre l'accélération graphique matérielle ou logicielle, en fonction de la configuration de votre ordinateur.
  • host : utilisez le GPU de votre ordinateur pour l'accélération matérielle. Cette option offre généralement la meilleure qualité graphique et les meilleures performances pour l'émulateur. Toutefois, si vos pilotes graphiques rencontrent des problèmes pour afficher OpenGL, vous devrez peut-être utiliser les options swiftshader_indirect ou angle_indirect.
  • swiftshader_indirect : utilisez une variante de SwiftShader compatible avec Quick Boot pour afficher les graphiques à l'aide de l'accélération logicielle. Cette option est une bonne alternative au mode host si votre ordinateur ne peut pas utiliser l'accélération matérielle.
  • angle_indirect : (Windows uniquement) utilisez une variante d'ANGLE Direct3D compatible avec Quick Boot pour afficher les graphiques à l'aide de l'accélération logicielle. Cette option est une bonne alternative au mode host si votre ordinateur ne peut pas utiliser l'accélération matérielle. Dans la plupart des cas, les performances d'ANGLE sont semblables à celles du mode host grâce à l'utilisation de Microsoft DirectX au lieu d'OpenGL. Sur Windows, les pilotes Microsoft DirectX présentent généralement moins de problèmes que les pilotes OpenGL. Cette option utilise Direct3D 11 et requiert Windows 10, Windows 8.1 ou Windows 7 SP1 avec la mise à jour de la plate-forme Windows 7.
  • guest : utilisez le rendu logiciel côté client. Cette option offre la qualité graphique et les performances les plus faibles pour l'émulateur.

Les options mode suivantes sont obsolètes :

  • swiftshader : obsolète depuis la version 27.0.2. Utilisez plutôt swiftshader_indirect.
  • angle : obsolète depuis la version 27.0.2. Utilisez plutôt angle_indirect (Windows uniquement).
  • mesa : obsolète depuis la version 25.3. Utilisez plutôt swiftshader_indirect.

Activer le rendu Skia pour l'interface utilisateur Android

Lorsque vous utilisez des images pour le niveau d'API 27 ou supérieur, l'émulateur peut afficher l'UI Android avec Skia. Skia aide l'émulateur à afficher les graphiques de manière plus fluide et plus efficace.

Pour activer le rendu Skia, utilisez les commandes suivantes dans l'interface système adb :

su
setprop debug.hwui.renderer skiagl
stop
start

Configurer l'accélération de la VM

L'accélération de la VM exploite le processeur de votre ordinateur pour améliorer considérablement la vitesse d'exécution de l'émulateur. Un outil appelé hyperviseur gère cette interaction à l'aide d'extensions de virtualisation fournies par ce processeur. Cette section décrit les exigences à respecter pour utiliser l'accélération de VM et explique comment configurer l'accélération de VM sur chaque système d'exploitation.

Exigences générales

Pour utiliser l'accélération de la VM avec l'émulateur, votre ordinateur doit respecter les exigences générales décrites dans cette section. Votre ordinateur doit également répondre à d'autres conditions spécifiques à votre système d'exploitation.

Exigences concernant l'environnement de développement

Pour que vous puissiez utiliser l'accélération de la VM, votre environnement de développement doit disposer de la configuration suivante :

  • SDK Tools : version 17 au minimum ; version 26.1.1 ou ultérieure recommandée
  • AVD avec une image système basée sur x86, disponible pour Android 2.3.3 (niveau d'API 10) ou version ultérieure

Exigences concernant les extensions de virtualisation

En plus des exigences liées à l'environnement de développement, le processeur de votre ordinateur doit être compatible avec l'une des technologies d'extension de virtualisation suivantes :

  • Extensions Intel Virtualization Technology (VT, VT-x, vmx)
  • Extensions AMD Virtualization (AMD-V, SVM)

La plupart des processeurs modernes sont compatibles avec ces extensions de virtualisation. Si vous ne savez pas si le vôtre prend en charge ces extensions, consultez ses spécifications sur le site du fabricant. Si votre processeur n'est pas compatible, vous ne pouvez pas utiliser l'accélération de la VM.

Restrictions

L'accélération de la VM présente les restrictions suivantes :

  • Vous ne pouvez pas exécuter un émulateur accéléré par une VM dans une autre VM, telle qu'une VM hébergée par VirtualBox, VMWare ou Docker. Un émulateur accéléré par VM doit être exécuté directement sur l'ordinateur hôte.
  • Selon votre système d'exploitation et votre hyperviseur, vous ne pouvez pas exécuter de logiciel qui utilise une autre technologie de virtualisation en même temps que l'émulateur accéléré par une VM. Par exemple, VirtualBox, VMWare et Docker reposent actuellement sur une technologie de virtualisation différente. Vous ne pouvez donc pas les exécuter en même temps que l'émulateur accéléré.

À propos des hyperviseurs

L'accélération de la VM nécessite un hyperviseur.

En l'absence d'hyperviseur et d'accélération de la VM, l'émulateur doit convertir le code de la machine du bloc de la VM, bloc par bloc, pour se conformer à l'architecture de l'ordinateur hôte. Ce processus peut être lent. Avec un hyperviseur, la VM et l'architecture de l'ordinateur hôte correspondent. L'émulateur peut donc exécuter le code directement sur le processeur hôte à l'aide de l'hyperviseur. Cette amélioration augmente considérablement la vitesse et les performances de l'émulateur.

L'hyperviseur qui vous convient le mieux dépend du système d'exploitation et de la configuration de votre ordinateur. Pour en savoir plus, consultez l'une des sections suivantes :

Vérifier si un hyperviseur est installé

L'option de ligne de commande -accel-check de l'émulateur vous permet de vérifier si un hyperviseur est installé sur votre ordinateur.

Les exemples suivants montrent comment utiliser l'option accel-check de l'émulateur. Dans chaque exemple, Sdk correspond à l'emplacement du SDK Android :

Windows :

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
HAXM version 7.3.2 (4) is installed and usable.
accel

macOS :

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
HAXM version 7.3.2 (4) is installed and usable.
accel

Linux :

janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.

Configurer l'accélération de la VM sur Windows

L'accélération de la VM sur Windows peut utiliser l'un de ces trois hyperviseurs : Intel Hardware Accelerated Execution Manager (HAXM), Android Emulator Hypervisor Driver pour les processeurs AMD ou Windows Hypervisor Platform (WHPX).

Choisir un hyperviseur sur Windows

Basez-vous sur les critères suivants pour déterminer quel hyperviseur utiliser :

Critères Hyperviseur
Vous disposez d'un processeur Intel et vous n'avez pas besoin d'exécuter Hyper-V en même temps que l'émulateur Android. Utilisez Intel HAXM
Vous disposez d'un processeur Intel et devez exécuter Hyper-V en même temps que l'émulateur Android. Utilisez WHPX.
Vous disposez d'un processeur AMD et vous n'avez pas besoin d'exécuter Hyper-V en même temps que l'émulateur Android. Utilisez le Android Emulator Hypervisor Driver pour les processeurs AMD.
Vous disposez d'un processeur AMD et vous avez besoin d'exécuter Hyper-V en même temps que l'émulateur Android. Utilisez WHPX.

Points à vérifier lors de la désactivation de Hyper-V

Hyper-V doit être désactivé pour utiliser Intel HAXM ou Android Emulator Hypervisor Driver pour les processeurs AMD. Toutefois, le fait de décocher "Hyper-V" dans la boîte de dialogue "Fonctionnalités de Windows" ne garantit pas que Hyper-V est désactivé. Plusieurs fonctionnalités de Windows 10 activent Hyper-V de manière implicite. Les utilisateurs ne savent pas toujours que Hyper-V est activé lorsqu'ils activent l'une de ces fonctionnalités.

À notre connaissance, il s'agit de Virtual Machine Platform, Windows Hypervisor Platform, Windows Sandbox, Core Isolation, Credential Guard. De plus, le sous-système Windows pour Linux version 2 utilise Virtual Machine Platform. Il nécessite donc implicitement Hyper-V. Comme cette liste n'est pas exhaustive, si vous identifiez un élément qui devrait être inclus ici, signalez-le dans notre outil de suivi des bugs.

Vérifiez que les fonctionnalités répertoriées ci-dessus sont également désactivées lors de la désactivation de Hyper-V. Reportez-vous à la documentation Microsoft et aux exemples ci-dessous pour découvrir comment désactiver chaque fonctionnalité.

Certaines plates-formes ne désactivent pas immédiatement Hyper-V lors de son arrêt. Aucune erreur n'est renvoyée par le système d'exploitation Windows, et Hyper-V apparaît comme désactivé dans la boîte de dialogue "Fonctionnalités de Windows". Dans ce cas, veuillez signaler un bug dans l'outil de suivi des problèmes de Microsoft.

Configurer l'accélération de la VM à l'aide d'Intel HAXM sur Windows

Pour que vous puissiez installer et utiliser Intel HAXM, votre ordinateur doit disposer de la configuration suivante :

  • Processeur Intel avec technologie de virtualisation (VT-x), fonctionnalités Intel EM64T (Intel 64) et fonctionnalité Execute Disable (XD) Bit activées
  • Windows 10, Windows 8 ou Windows 7 64 bits (ou version 32 bits du système d'exploitation sur un processeur 64 bits)
  • Pour utiliser Intel HAXM sous Windows 10 ou 8, vous devez désactiver Hyper-V dans la boîte de dialogue "Fonctionnalités de Windows".
    Remarque : L'installation de certains logiciels peut réactiver Hyper-V. Pour en savoir plus, consultez la section Désactiver Hyper-V.

Pour installer le pilote Intel HAXM, procédez comme suit :

  1. Ouvrez SDK Manager.
  2. Cliquez sur l'onglet SDK Update Sites (Sites de mise à jour du SDK), puis sélectionnez Intel HAXM.
  3. Cliquez sur OK.
  4. Une fois le téléchargement terminé, exécutez le programme d'installation. Le programme d'installation se trouve généralement à l'emplacement suivant : sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
  5. Utilisez l'assistant pour terminer l'installation.
  6. Après avoir installé Intel HAXM, saisissez la commande ci-dessous dans une fenêtre d'invite de commande pour vérifier que le pilote de virtualisation fonctionne comme prévu :

    sc query intelhaxm
    

    Un message d'état contenant les informations suivantes doit s'afficher :

    SERVICE_NAME: intelhaxm
           ...
           STATE              : 4  RUNNING
           ...
    

Pour en savoir plus, consultez les instructions d'installation d'Intel HAXM sur Windows.

Pour ajuster la quantité de mémoire disponible pour l'extension de noyau Intel HAXM, exécutez à nouveau le programme d'installation.

Vous pouvez désinstaller Intel HAXM à l'aide du programme d'installation ou du panneau de configuration Windows. Avant de désinstaller Intel HAXM, arrêtez tous les émulateurs x86 en cours d'exécution.

Configurer l'accélération de la VM à l'aide d'Android Emulator Hypervisor Driver pour les processeurs AMD sur Windows

Pour que vous puissiez installer et utiliser Android Emulator Hypervisor Driver pour les processeurs AMD, votre ordinateur doit disposer de la configuration suivante :

  • Processeur AMD avec technologie SVM (Secure Virtual Machine)
  • Windows 10, Windows 8 ou Windows 7 64 bits (la version Windows 32 bits n'est pas compatible)
  • Pour utiliser Android Emulator Hypervisor Driver pour les processeurs AMD sur Windows 10 ou 8, vous devez désactiver Hyper-V dans la boîte de dialogue "Fonctionnalités de Windows".
    Remarque : L'installation de certains logiciels peut réactiver Hyper-V. Pour en savoir plus, consultez la section Désactiver Hyper-V.

Vous pouvez installer Android Emulator Hypervisor Driver pour les processeurs AMD via SDK Manager dans Android 4.0 Canary 5 ou version ultérieure, ou à partir de GitHub (voir ci-dessous). Pour effectuer l'installation à partir de SDK Manager, procédez comme suit :

  1. Sélectionnez Outils ->SDK Manager.
  2. Cliquez sur l'onglet SDK Tools, puis sélectionnez Android Emulator Hypervisor Driver pour les processeurs AMD.
  3. Cliquez sur OK afin de télécharger et d'installer Android Emulator Hypervisor Driver pour les processeurs AMD.
  4. Après l'installation, saisissez la commande ci-dessous dans une fenêtre d'invite de commande pour vérifier que le pilote fonctionne comme prévu :

    sc query gvm
    

    Un message d'état contenant les informations suivantes doit s'afficher :

    SERVICE_NAME: gvm
           ...
           STATE              : 4  RUNNING
           ...
    

    Le message d'erreur suivant signifie que SVM n'est pas activé dans le BIOS ou que Hyper-V n'est pas désactivé (découvrez comment désactiver Hyper-V).

    SERVICE_NAME: gvm
           ...
           STATE              : 1  STOPPED
           WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
           ...
    

Vous pouvez également télécharger et installer Android Emulator Hypervisor Driver pour les processeurs AMD depuis GitHub. Après avoir décompressé le package du pilote, exécutez "silent_install.bat" dans une invite de commande avec les droits d'administrateur. Si l'installation aboutit, la sortie suivante devrait s'afficher :

La mise à niveau d'une installation devrait afficher la sortie suivante, qui comprend des messages concernant la désinstallation de l'ancien pilote :

Vous pouvez désinstaller Android Emulator Hypervisor Driver pour les processeurs AMD à l'aide des commandes suivantes dans une invite de commande lorsque vous disposez des droits d'administrateur .

   sc stop gvm
   sc delete gvm

Remarque : Arrêtez tous les émulateurs x86 avant de désinstaller Android Emulator Hypervisor Driver pour les processeurs AMD.

Configurer l'accélération de la VM à l'aide de Windows Hypervisor Platform

Pour que vous puissiez activer WHPX, votre ordinateur doit disposer de la configuration suivante :

  • Processeurs Intel : prise en charge de la technologie de virtualisation (VT-x), d'EPT (Extended Page Tables) et des fonctionnalités d'invité sans restriction (UG) (VT-x doit être activé dans les paramètres BIOS de votre ordinateur)
  • Processeurs AMD : utilisation recommandée d'un processeur AMD Ryzen (la virtualisation ou SVM doivent être activés dans les paramètres BIOS de votre ordinateur)
  • Android Studio 3.2 bêta 1 ou version ultérieure (téléchargement à partir de developer.android.com)
  • Android Emulator 27.3.8 ou version ultérieure (téléchargement à l'aide de SDK Manager)
  • Windows 10 avec la mise à jour d'avril 2018 ou ultérieure

Pour installer WHPX sur Windows, procédez comme suit :

  1. Sur le bureau Windows, effectuez un clic droit sur l'icône Windows et sélectionnez Applications et fonctionnalités.
  2. Sous Paramètres associés, cliquez sur Programmes et fonctionnalités.
  3. Cliquez sur Active ou désactive les fonctionnalités de Windows.
  4. Sélectionnez Windows Hypervisor Platform.

  5. Cliquez sur OK.

  6. Une fois l'installation terminée, redémarrez votre ordinateur.

Configurer l'accélération de la VM sur macOS

Sur Mac OS X 10.10 Yosemite ou version ultérieure, Android Emulator utilise l'intégration Hypervisor.Framework par défaut et a recours à Intel HAXM en cas d'échec d'initialisation d'Hypervisor.Framework.

Pour utiliser l'accélération de la VM sur macOS lorsque Hypervisor.Framework n'est pas disponible, vous devez installer l'extension de noyau Intel HAXM.

Pour installer l'extension de noyau Intel HAXM, procédez comme suit :

  1. Ouvrez SDK Manager.
  2. Cliquez sur l'onglet SDK Update Sites (Sites de mise à jour du SDK), puis sélectionnez Intel HAXM.
  3. Cliquez sur OK.
  4. Une fois le téléchargement terminé, exécutez le programme d'installation. Le programme d'installation se trouve généralement à l'emplacement suivant : sdk/extras/intel/Hardware_Accelerated_ExecutionManager/IntelHAXMversion.dmg
  5. Suivez les instructions qui s'affichent à l'écran pour procéder à l'installation.
  6. Une fois l'installation terminée, vérifiez que la nouvelle extension de noyau fonctionne correctement. Pour ce faire, ouvrez une fenêtre de terminal et exécutez la commande suivante :

    kextstat | grep intel
    

    Un message d'état contenant le nom d'extension suivant devrait indiquer que l'extension de noyau est chargée :

    com.intel.kext.intelhaxm
    

Pour en savoir plus, consultez les instructions d'installation d'Intel HAXM.

Pour ajuster la quantité de mémoire disponible pour l'extension de noyau Intel HAXM, exécutez à nouveau le programme d'installation.

Si vous ne souhaitez plus utiliser l'extension de noyau Intel HAXM, désinstallez-la. Avant la désinstallation, arrêtez tous les émulateurs x86 en cours d'exécution, puis exécutez la commande suivante dans une fenêtre de terminal :

sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh

Configurer l'accélération de la VM sur Linux

Les systèmes Linux permettent l'accélération de la VM via le package logiciel KVM. Suivez les instructions d'installation de KVM sur un système Linux et vérifiez que KVM est activé. Pour les systèmes Ubuntu, découvrez comment installer le package KVM Ubuntu.

Conditions requises

L'exécution de KVM nécessite des autorisations utilisateur spécifiques. Assurez-vous de disposer des autorisations suffisantes, comme spécifié dans les instructions d'installation de KVM.

Pour que vous puissiez utiliser l'accélération de la VM sur Linux, votre ordinateur doit disposer de la configuration suivante :

  • Pour les processeurs Intel : technologie de virtualisation (VT-x), fonctionnalités Intel EM64T (Intel 64) et fonctionnalité Execute Disable (XD) Bit activées
  • Pour les processeurs AMD : prise en charge d'AMD Virtualization (AMD-V)

Vérifier si KVM est actuellement installé sur Linux

Vous pouvez vérifier si KVM est installé à l'aide de l'option de ligne de commande -accel-check de l'émulateur. Vous pouvez également installer le package cpu-checker contenant la commande kvm-ok.

L'exemple suivant montre comment utiliser la commande kvm-ok.

  1. Installez le package cpu-checker :

    $ sudo apt-get install cpu-checker
    $ egrep -c '(vmx|svm)' /proc/cpuinfo
    

    Un résultat supérieur ou égal à 1 signifie que la virtualisation est prise en charge. Un résultat égal à zéro signifie que votre processeur n'est pas compatible avec la virtualisation matérielle.

  2. Exécutez la commande kvm-ok :

    $ kvm-ok
    

    Sortie attendue : INFO: /dev/kvm exists KVM acceleration can be used

    Si vous obtenez l'erreur suivante, vous pouvez toujours exécuter des machines virtuelles. Votre machine virtuelle sera plus lente sans les extensions KVM. INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used

Installer KVM sur Linux

Exécutez la commande suivante pour installer KVM :

Cosmic (18.10) ou version ultérieure

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Lucid (10.04) ou version ultérieure

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic (9.10) ou version antérieure

sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils