Lancer l'émulateur à partir de la ligne de commande

Le SDK Android inclut un émulateur d'appareil Android. Il s'agit d'un appareil virtuel qui s'exécute sur votre ordinateur. Android Emulator vous permet de développer et de tester des applications Android sans utiliser d'appareil physique.

Cette page décrit les fonctionnalités de ligne de commande que vous pouvez utiliser avec Android Emulator. Pour en savoir plus sur l'utilisation de l'interface utilisateur d'Android Emulator, consultez la section Exécuter des applications sur Android Emulator.

Démarrer l'émulateur

Utilisez la commande emulator pour lancer l'émulateur, au lieu d'exécuter votre projet ou de le démarrer via AVD Manager.

Voici la syntaxe de ligne de commande de base permettant de démarrer un appareil virtuel à partir d'une invite de terminal :

emulator -avd avd_name [ {-option [value]} … ]

Ou

emulator @avd_name [ {-option [value]} … ]

Par exemple, si vous lancez l'émulateur depuis Android Studio sur un Mac, la ligne de commande par défaut se présentera comme suit :

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Nexus_5X_API_23 -netdelay none -netspeed full

Vous pouvez spécifier des options de démarrage au lancement de l'émulateur, mais pas après.

Pour obtenir la liste des noms des AVD, entrez la commande suivante :

emulator -list-avds

Cette option permet d'afficher une liste de noms AVD issus de votre répertoire d'accueil Android. Si vous souhaitez remplacer le répertoire d'accueil par défaut, définissez la variable d'environnement ANDROID_SDK_HOME qui spécifie la racine du répertoire spécifique à l'utilisateur où tout le contenu de configuration et des AVD est stocké.

Vous pouvez définir la variable d'environnement dans la fenêtre de terminal avant de lancer un appareil virtuel ou via les paramètres utilisateur de votre système d'exploitation (par exemple, dans votre fichier .bashrc sous Linux).

Pour arrêter Android Emulator, fermez la fenêtre de l'émulateur.

Installer une application

En plus d'installer une application via Android Studio ou l'UI de l'émulateur, vous pouvez installer votre application sur un appareil virtuel à l'aide de l'utilitaire adb.

Pour installer, exécuter et tester votre application avec adb, procédez comme suit :

  1. Créez et empaquetez votre application dans un APK, comme expliqué dans la section Compiler et exécuter votre application.
  2. Démarrez l'émulateur à partir de la ligne de commande, comme décrit dans la section précédente, en utilisant les options de démarrage nécessaires.
  3. Installez votre application avec adb.
  4. Exécutez et testez votre application sur l'émulateur.
    Lorsque l'émulateur est en cours d'exécution, vous pouvez utiliser la console de l'émulateur pour émettre des commandes si nécessaire.

Pour désinstaller une application, suivez la même procédure que sur un appareil Android.

L'appareil virtuel conserve l'application et ses données d'état lors des redémarrages, dans une partition de disque de données utilisateur (userdata-qemu.img. Pour effacer ces données, lancez l'émulateur avec l'option -wipe-data ou effacez les données dans AVD Manager. Pour en savoir plus sur la partition de données utilisateur et sur tout autre espace de stockage, consultez la section suivante.

Remarque : L'utilitaire adb considère l'appareil virtuel comme un appareil physique réel. Pour cette raison, vous devrez peut-être utiliser l'indicateur -d avec certaines commandes adb courantes, telles que install. L'indicateur -d vous permet de spécifier les appareils connectés à utiliser comme cible d'une commande. Si vous ne spécifiez pas -d, l'émulateur cible le premier appareil de sa liste.

Comprendre les répertoires et les fichiers par défaut

L'émulateur utilise les fichiers associés, parmi lesquels le système AVD et les répertoires de données sont les plus importants. Même si vous n'avez généralement pas besoin de modifier les fichiers ni les répertoires par défaut, il est utile de comprendre la structure des répertoires et les fichiers de l'émulateur lorsque vous spécifiez des options de ligne de commande.

Android Emulator utilise l'hyperviseur Quick Emulator (QEMU). Les versions initiales d'Android Emulator utilisaient QEMU 1 (goldfish), tandis que les versions ultérieures utilisent QEMU 2 (ranchu).

Répertoire système AVD

Le répertoire système contient les images système Android que l'émulateur utilise pour simuler le système d'exploitation. Il inclut des fichiers en lecture seule spécifiques à la plate-forme, partagés par tous les AVD du même type, y compris le niveau d'API, l'architecture du processeur et la variante Android. Les emplacements par défaut sont les suivants :

  • macOS et Linux : ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Microsoft Windows XP : C:\Documents and Settings\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\
  • Windows Vista : C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

Où :

  • apiLevel est un niveau d'API numérique ou une lettre pour les versions préliminaires. Par exemple, android-M indique la version préliminaire d'Android Marshmallow. À son lancement, il est devenu le niveau d'API 23, désigné par android-23.
  • variant est un nom correspondant à des fonctionnalités spécifiques mises en œuvre par l'image système. Exemples : google_apis ou android-wear.
  • arch est l'architecture du processeur cible. Par exemple, x86.

Utilisez l'option -sysdir pour spécifier un autre répertoire système pour l'AVD.

L'émulateur lit les fichiers suivants à partir du répertoire système :

Tableau 1. Fichiers de répertoire système lus par l'émulateur Android

Fichier Description Option permettant de spécifier un autre fichier
kernel-qemu ou kernel-ranchu Image du noyau binaire pour l'AVD. kernel-ranchu est l'émulateur QEMU 2, la dernière version. -kernel
ramdisk.img Image de la partition de démarrage. Il s'agit d'un sous-ensemble de system.img chargé par le noyau avant l'installation de l'image système. Il ne contient généralement que quelques binaires et scripts d'initialisation. -ramdisk
system.img Version initiale en lecture seule de l'image système. Plus précisément, la partition contenant les bibliothèques système et les données correspondant au niveau d'API et à la variante. -system
userdata.img Version initiale de la partition de données, qui apparaît sous la forme data/ dans le système émulé et qui contient toutes les données accessibles en écriture pour l'AVD. L'émulateur exploite ce fichier lorsque vous créez un AVD ou utilisez l'option ‑wipe-data. Pour en savoir plus, consultez la description du fichier userdata-qemu.img dans la section suivante. -initdata
-init-data

Répertoire de données AVD

Le répertoire de données AVD, également appelé "répertoire de contenu", est spécifique à une seule instance d'AVD et contient toutes les données modifiables pour l'AVD.

L'emplacement par défaut est le suivant, où name est le nom de l'AVD :

  • macOS et Linux : ~/.android/avd/name.avd/
  • Microsoft Windows XP : C:\Documents and Settings\user\.android\name.avd\
  • Windows Vista ou version ultérieure : C:\Users\user\.android\name.avd\

Utilisez l'option -datadir pour spécifier un autre répertoire de données AVD.

Le tableau suivant répertorie les fichiers les plus importants contenus dans ce répertoire :

Tableau 2. Fichiers clés dans le répertoire de données AVD

Fichier Description Option permettant de spécifier un autre fichier
userdata-qemu.img

Contenu de la partition de données, qui apparaît sous la forme data/ dans le système émulé. Lorsque vous créez un AVD ou que vous utilisez l'option -wipe-data pour rétablir la configuration d'usine de l'AVD, l'émulateur copie le fichier userdata.img dans le répertoire système pour créer ce fichier.

Chaque instance d'appareil virtuel stocke les données spécifiques à l'utilisateur et à la session à l'aide d'une image de données utilisateur accessible en écriture. Par exemple, elle utilise l'image pour stocker les données des applications installées, les paramètres, les bases de données et les fichiers d'un utilisateur unique. Chaque utilisateur possède un répertoire ANDROID_SDK_HOME différent qui stocke les répertoires de données des AVD créés par cet utilisateur. Chaque AVD possède un seul fichier userdata-qemu.img.

-data
cache.img Image de la partition de cache, qui apparaît sous la forme cache/ dans le système émulé. Ce fichier est vide lorsque vous créez un AVD ou utilisez l'option -wipe-data. Il stocke des fichiers de téléchargement temporaires et est renseigné par le Gestionnaire de téléchargement, et parfois par le système. Par exemple, le navigateur l'utilise pour mettre en cache les pages Web et les images téléchargées pendant l'exécution de l'émulateur. Lorsque vous éteignez l'appareil virtuel, le fichier est supprimé. Vous pouvez conserver le fichier à l'aide de l'option -cache. -cache
sdcard.img

(Facultatif) Image de la partition de carte SD vous permettant de simuler une carte SD sur un appareil virtuel. Vous pouvez créer un fichier image de carte SD dans AVD Manager ou à l'aide de l'outil mksdcard. Le fichier est stocké sur votre ordinateur de développement et doit être chargé au démarrage.

Lorsque vous définissez un AVD dans AVD Manager, vous pouvez choisir d'utiliser un fichier de carte SD géré automatiquement ou un fichier que vous avez créé avec l'outil mksdcard. Vous pouvez afficher le fichier sdcard.img associé à un AVD dans AVD Manager. L'option -sdcard remplace le fichier de carte SD spécifié dans l'AVD.

Vous pouvez parcourir, copier et supprimer les fichiers d'une carte SD simulée, ainsi que lui envoyer des fichiers, à l'aide de l'interface utilisateur de l'émulateur ou de l'utilitaire adb lorsque l'appareil virtuel est en cours d'exécution. Vous ne pouvez pas supprimer une carte SD simulée d'un appareil virtuel en cours d'exécution.

Pour copier des fichiers sur la carte SD avant de la charger, installez le fichier image en tant qu'appareil en boucle, puis copier les fichiers. Vous pouvez également recourir à un utilitaire tel que le package mtools pour copier les fichiers directement dans l'image.

L'émulateur traitera le fichier comme un pool d'octets. Le format de la carte SD n'est donc pas important.

L'option -wipe-data n'affecte pas ce fichier. Si vous souhaitez effacer le fichier, supprimez-le, puis recréez-le à l'aide d'AVD Manager ou de l'outil mksdcard. Si vous modifiez la taille du fichier, celui-ci est également supprimé et un autre est créé.

-sdcard

Afficher les répertoires et les fichiers utilisés par l'émulateur

Vous pouvez découvrir l'emplacement des fichiers de deux manières :

  • Utilisez l'option -verbose ou -debug init lorsque vous démarrez l'émulateur à partir de la ligne de commande. Examinez la sortie.
  • Utilisez la commande -help-option emulator pour définir un répertoire par défaut. Exemple :
    emulator -help-datadir
    Use '-datadir <dir>' to specify a directory where writable image files will be searched. On this system, the default directory is: /Users/me/.android See '-help-disk-images' for more information about disk image files.

Options de démarrage de la ligne de commande

Cette section répertorie les options que vous pouvez fournir sur la ligne de commande lorsque vous démarrez l'émulateur.

Remarque : Android Emulator est constamment en cours de développement afin d'améliorer sa fiabilité. Pour connaître l'état des problèmes signalés pour différentes options de ligne de commande et pour signaler des bugs, accédez à Android Issue Tracker.

Options couramment utilisées

Le tableau suivant répertorie les options de démarrage via la ligne de commande que vous pourriez utiliser plus souvent :

Tableau 3. Options de ligne de commande couramment utilisées

Option de ligne de commande Description
Quick Boot
-no-snapshot-load Effectue un démarrage à froid et enregistre l'état de l'émulateur à la fermeture.
-no-snapshot-save Effectue un démarrage rapide si possible, mais n'enregistre pas l'état de l'émulateur à la fermeture.
-no-snapshot Désactive complètement la fonctionnalité Quick Boot et ne charge ni n'enregistre l'état de l'émulateur.
Matériel de l'appareil
-camera-back mode
-camera-front mode
Définit le mode d'émulation pour une caméra frontale ou arrière. Ce paramètre remplace tout paramètre de caméra dans l'AVD.

mode peut correspondre à l'une des valeurs suivantes:

  • emulated : l'émulateur simule une caméra dans le logiciel.
  • webcamn : l'émulateur utilise une webcam connectée à votre ordinateur de développement, spécifiée par un numéro. Pour obtenir la liste des webcams, utilisez l'option -webcam-list. Exemple : webcam0.
  • none : désactive la caméra sur l'appareil virtuel.

Exemple :

emulator @Nexus_5X_API_23 -camera-back webcam0

-webcam-list Affiche la liste des webcams de votre ordinateur de développement disponibles pour l'émulation. Exemple :
emulator @Nexus_5X_API_23 -webcam-list
        List of web cameras connected to the computer:
        Camera 'webcam0' is connected to device 'webcam0'
        on channel 0 using pixel format 'UYVY'

Dans cet exemple, le premier webcam0 est le nom que vous utilisez sur la ligne de commande. Le deuxième webcam0 est le nom utilisé par le système d'exploitation sur l'ordinateur de développement. Le second nom varie en fonction du système d'exploitation.

À compter de la version 25.2.4 de SDK Tools, vous devez indiquer le nom de l'AVD.

Images et mémoire disque
-memory size

Spécifie une quantité de mémoire RAM physique comprise entre 128 et 4 096 Mo. Par exemple :

emulator @Nexus_5X_API_23 -memory 2048

Cette valeur remplace le paramètre de l'AVD.

-sdcard filepath Spécifie le nom du fichier et le chemin d'accès à un fichier image de partition de carte SD. Exemple :

emulator @Nexus_5X_API_23 -sdcard C:/sd/sdcard.img

Si le fichier est introuvable, l'émulateur se lance quand même, mais sans carte SD. La commande renvoie un avertissement Aucune image de carte SD.

Si vous ne spécifiez pas cette option, la valeur par défaut est sdcard.img dans le répertoire de données, sauf indication contraire de l'AVD. Pour en savoir plus sur les cartes SD émulées, consultez la section Répertoire de données AVD.

-wipe-data Supprime les données utilisateur et copie les données du fichier de données initial. Cette option efface les données de l'appareil virtuel et rétablit leur état d'origine. L'ensemble des applications installées et des paramètres sont supprimés. Par exemple :

emulator @Nexus_5X_API_23 -wipe-data

Par défaut, le fichier de données utilisateur est userdata-qemu.img, et le fichier de données initial est userdata.img. Tous deux se trouvent dans le répertoire de données. L'option -wipe-data n'affecte pas le fichier sdcard.img. Pour en savoir plus sur les données utilisateur, consultez la section Comprendre les répertoires et les fichiers par défaut.

Débogage
-debug tags Active ou désactive l'affichage des messages de débogage pour une ou plusieurs balises. Séparez les différentes balises par un espace, une virgule ou une colonne. Par exemple :

$ emulator @Nexus_5X_API_23 -debug init,metrics

Pour désactiver une balise, placez un tiret (-) devant celle-ci. Par exemple, l'option suivante affiche tous les messages de débogage, à l'exception de ceux liés aux sockets et aux métriques réseau:

-debug all,-socket,-metrics

Pour obtenir la liste des balises et des descriptions, utilisez l'option -help-debug-tags. Par exemple :

emulator -help-debug-tags

Vous pouvez définir les balises de débogage par défaut dans la variable d'environnement ANDROID_VERBOSE. Définissez les balises que vous souhaitez utiliser dans une liste d'éléments séparés par une virgule. Voici un exemple illustrant comment spécifier les balises socket et gles :

ANDROID_VERBOSE=socket,gles

Cela revient à utiliser :

-debug-socket -debug-gles

ou

-debug socket,gles

-debug-tag
-debug-no-tag
Active un type de message de débogage spécifique. Utilisez le format no pour désactiver un type de message de débogage. Par exemple :

emulator @Nexus_5X_API_23 -debug-all -debug-no-metrics

Pour obtenir la liste des balises, utilisez la commande emulator -help-debug-tags.

-logcat logtags Active l'affichage des messages Logcat pour une ou plusieurs balises et les écrit dans la fenêtre de terminal. Par exemple, la commande suivante active les messages d'erreur de tous les composants :

emulator @Nexus_5X_API_23 -logcat *:e

logtags utilise le même format que la commande adb logcat logtags. Saisissez adb logcat -help pour en savoir plus. Il s'agit d'une liste de filtres de journaux séparés par un espace ou une virgule, au format componentName:logLevel. componentName est un astérisque générique (*) ou un nom de composant, tel qu'ActivityManager, SystemServer, InputManager ou WindowManager.

logLevel est l'une des valeurs suivantes :

  • v - détaillé
  • d - débogage
  • i : informatif
  • w - Niveau de journalisation d'avertissement
  • e – Erreur
  • s - Silencieux

L'exemple suivant affiche les messages des composants GSM au niveau du journal d'informations :

emulator @Nexus_5X_API_23 -logcat '*:s GSM:i'

Si vous ne fournissez pas l'option -logcat sur la ligne de commande, l'émulateur recherche la variable d'environnement ANDROID_LOG_TAGS. Si ANDROID_LOG_TAGS est défini avec une valeur logtags valide et n'est pas vide, l'émulateur utilise sa valeur pour activer la sortie Logcat par défaut dans le terminal. Vous pouvez également rediriger les mêmes messages de journal ou d'autres vers le terminal via adb.

Pour en savoir plus sur Logcat et adb, consultez les sections Outil de ligne de commande Logcat, Afficher et écrire des journaux avec Logcat, Log et Émettre des commandes adb.

-show-kernel Affiche les messages de débogage du noyau dans la fenêtre de terminal. Par exemple :

emulator @Nexus_5X_API_23 -show-kernel

Cette option permet de vérifier que le processus de démarrage fonctionne correctement.

-verbose Imprime les messages d'initialisation de l'émulateur dans la fenêtre de terminal. Exemple :

emulator @Nexus_5X_API_23 -verbose

Cette option affiche les fichiers et paramètres sélectionnés lors du démarrage d'un appareil virtuel défini dans un AVD. Elle revient à spécifier -debug-init.

Réseau
-dns-server servers Utilise les serveurs DNS spécifiés. servers est une liste de quatre noms de serveurs DNS ou d'adresses IP séparés par une virgule. Exemple :
emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255

Par défaut, l'émulateur tente de détecter les serveurs DNS que vous utilisez et configure des alias spéciaux sur le réseau de pare-feu émulé pour permettre au système Android de se connecter directement aux serveurs. Utilisez l'option -dns-server pour spécifier une autre liste de serveurs DNS.

-http-proxy proxy Effectue toutes les connexions TCP via un proxy HTTP/HTTPS spécifié. Si votre émulateur doit accéder à Internet via un serveur proxy, vous pouvez utiliser cette option ou la variable d'environnement http_proxy pour configurer la redirection appropriée. Exemple :

emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy peut être l'un des éléments suivants:

http://server:port
http://username:password@server:port

Le préfixe http:// peut être omis.

Si cette option n'est pas fournie, l'émulateur recherche la variable d'environnement http_proxy et utilise automatiquement toute valeur correspondant au format proxy. Pour en savoir plus, consultez la section Utiliser l'émulateur avec un proxy.

-netdelay delay

Définit l'émulation de la latence réseau sur l'une des valeurs delay suivantes, en millisecondes :

  • gsm : GSM/CSD (minimum 150, maximum 550).
  • hscsd : HSCSD (minimum 80, maximum 400).
  • gprs : GPRS (minimum 35, maximum 200).
  • edge : EDGE/EGPRS (minimum 80, maximum 400).
  • umts : UMTS/3G (minimum 35, maximum 200).
  • hsdpa : HSDPA (minimum 0, maximum 0).
  • lte : LTE (minimum 0, maximum 0).
  • evdo : EvDo (minimum 0, maximum 0).
  • none : aucune latence, valeur par défaut (minimum 0, maximum 0).
  • num : spécifie la latence exacte.
  • min:max : spécifie les latences minimale et maximale individuelles.

Exemple :

emulator @Nexus_5X_API_23 -netdelay gsm

L'émulateur est compatible avec la limitation de bande passante réseau ainsi que les latences de connexion plus élevées. Vous pouvez la définir via la configuration de l'apparence ou avec les options ‑netspeed et -netdelay.

-netfast Désactive la limitation de bande passante. Par exemple :

emulator @Nexus_5X_API_23 -netfast

Cette option revient à spécifier -netspeed full -netdelay none. Ce sont les valeurs par défaut pour ces options.

-netspeed speed

Définit l'émulation du débit réseau. Spécifie les vitesses maximales de chargement et de téléchargement sur le réseau avec l'une des valeurs speed suivantes, en kbit/s :

  • gsm : GSM/CSD (montant : 14,4 ; descendant : 14,4).
  • hscsd : HSCSD (montant : 14,4 ; descendant : 57,6).
  • gprs : GPRS (montant : 28,8 ; descendant : 57,6).
  • edge : EDGE/EGPRS (montant : 473,6 ; descendant : 473,6).
  • umts : UMTS/3G (montant : 384,0 ; descendant : 384,0).
  • hsdpa : HSDPA (montant : 5 760,0 ; descendant : 13 980,0).
  • lte : LTE (montant : 58 000 ; descendant : 173 000).
  • evdo : EvDo (montant : 75 000 ; descendant : 280 000).
  • full : pas de limite, valeur par défaut (montant : 0,0 ; descendant : 0,0).
  • num : spécifie les vitesses de chargement et de téléchargement.
  • up:down   spécifie les vitesses ascendantes et descendantes individuelles.

Exemple :

emulator @Nexus_5X_API_23 -netspeed edge

L'émulateur est compatible avec la limitation de bande passante réseau ainsi que les latences de connexion plus élevées. Vous pouvez la définir via la configuration de l'apparence ou avec les options ‑netspeed et -netdelay.

-port port Définit le numéro de port TCP utilisé pour la console et adb. Par exemple :

emulator @Nexus_5X_API_23 -port 5556

La valeur par défaut est 5554 pour la première instance d'appareil virtuel exécutée sur votre machine. Un appareil virtuel occupe généralement une paire de ports adjacents : un port de console et un port adb. La console du premier appareil virtuel exécuté sur une machine spécifique utilise le port de console 5554 et le port adb 5555. Les instances suivantes utilisent des numéros de port qui augmentent de deux (par exemple 5556/5557, 5558/5559, et ainsi de suite). La plage est comprise entre 5554 et 5682. 64 appareils virtuels peuvent donc s'exécuter simultanément.

Les attributions de ports sont souvent identiques à celles spécifiées par -ports port,{port + 1}. {port + 1} doit être libre et est réservé à adb. Si l'un des ports de la console ou adb est déjà utilisé, l'émulateur ne se lance pas.

L'option ‑port indique les ports et le numéro de série utilisés par l'appareil virtuel, et vous avertit en cas de problème avec les valeurs que vous avez fournies. Dans l'UI de l'émulateur, vous pouvez voir le numéro de port de la console dans le titre de la fenêtre, et vous pouvez afficher le numéro de port adb en sélectionnant Help > About (Aide > À propos).

Notez que si la valeur port n'est pas paire et qu'elle se situe entre 5554 et 5584, l'appareil virtuel démarrera, mais ne sera pas visible lorsque vous utiliserez la commande adb devices si adb server démarre après l'émulateur. C'est pourquoi nous vous recommandons d'utiliser un numéro de port de console pair.

-ports
console-port,adb-port
Définit les ports TCP utilisés pour la console et adb. Par exemple :

emulator @Nexus_5X_API_23 -ports 5556,5559

La plage de ports valides est comprise entre 5554 et 5682. 64 appareils virtuels peuvent donc s'exécuter simultanément. L'option -ports indique les ports et le numéro de série utilisés par l'instance d'émulateur, et vous avertit en cas de problème avec les valeurs que vous avez fournies.

Dans la mesure du possible, nous vous recommandons d'utiliser l'option -port à la place. L'option -ports est disponible pour les configurations réseau qui nécessitent des paramètres spéciaux.

Pour en savoir plus sur la configuration des ports de console et adb, reportez-vous à l'option -port.

-tcpdump filepath Capture les paquets réseau et les stocke dans un fichier. Par exemple :

emulator @Nexus_5X_API_23 -tcpdump /path/dumpfile.cap

Utilisez cette option pour commencer à capturer tous les paquets réseau envoyés via le LAN Ethernet virtuel de l'émulateur. Vous pouvez ensuite utiliser un outil comme Wireshark pour analyser le trafic.

Notez que cette option capture tous les paquets Ethernet et ne se limite pas aux connexions TCP.

Système
-accel mode Configure l'accélération de la VM de l'émulateur. Par exemple :

emulator @Nexus_5X_API_23 -accel auto

L'émulation accélérée ne fonctionne que pour les images système x86 et x86_64. Sous Linux, elle repose sur KVM. Sous Windows et Mac, elle s'appuie sur un processeur Intel et un pilote Intel HAXM. Cette option est ignorée si vous n'émulez pas un appareil x86 ou x86_64.

Les valeurs valides pour mode sont les suivantes:

  • auto : détermine automatiquement si l'accélération est prise en charge et l'utilise dans la mesure du possible (par défaut).
  • off : désactive complètement l'accélération, ce qui est principalement utile pour le débogage.
  • on : force l'accélération. Si KVM ou HAXM n'est pas installé ou utilisable, l'émulateur ne se lance pas et affiche un message d'erreur.

Pour plus d'informations, consultez la section Configurer l'accélération matérielle pour Android Emulator.

-accel-check Vérifie si un hyperviseur requis pour l'accélération de la VM de l'émulateur est installé (HAXM ou KVM). Par exemple :

emulator -accel-check

Pour en savoir plus, consultez la section Vérifier si un hyperviseur est installé.

-engine engine

Spécifie le moteur de l'émulateur :

  • auto : sélectionne automatiquement un moteur (par défaut).
  • classic : utilise l'ancien moteur QEMU 1.
  • qemu2 : utilise le nouveau moteur QEMU 2.

Par exemple :

emulator @Nexus_5X_API_23 -engine auto

La détection automatique doit choisir la valeur qui offre les meilleures performances lors de l'émulation d'un AVD particulier. Vous ne devez utiliser l'option -engine qu'à des fins de débogage et de comparaison.

-gpu mode Sélectionne le mode d'émulation GPU. Par exemple :

emulator @Nexus_5X_API_23 -gpu swiftshader_indirect

Pour en savoir plus, consultez Configurer l'accélération graphique.

-no-accel Désactive l'accélération de la VM de l'émulateur lorsque vous utilisez une image système x86 ou x86_64. Elle n'est utile que pour le débogage et revient à spécifier -accel off. Par exemple :

emulator @Nexus_5X_API_23 -no-accel

Pour plus d'informations, consultez la section Configurer l'accélération matérielle pour Android Emulator.

-nojni
-no-jni
Désactive les vérifications JNI (Java Native Interface) dans l'environnement d'exécution Dalvik ou ART Android. Par exemple :

emulator @Nexus_5X_API_23 -nojni

Lorsque vous démarrez un appareil virtuel, les vérifications JNI étendues sont activées par défaut. Pour en savoir plus, consultez la section Conseils sur JNI.

-selinux {disabled|permissive} Définit le module de sécurité Security-Enhanced Linux (SELinux) sur le mode disabled ou permissive sur un système d'exploitation Linux. Par exemple :

me-linux$ emulator @Nexus_5X_API_23 -selinux permissive

Par défaut, SELinux est en mode enforcing, ce qui signifie que les règles de sécurité sont appliquées. Le mode permissive charge les règles SELinux, mais ne les applique pas. Il consigne simplement les cas de non-respect des règles. Le mode disabled désactive la compatibilité du noyau pour SELinux.

-timezone timezone

Définit le fuseau horaire de l'appareil virtuel sur timezone au lieu du fuseau horaire de l'hôte. Exemple :

emulator @Nexus_5X_API_23 -timezone Europe/Paris

Par défaut, l'émulateur utilise le fuseau horaire de votre ordinateur de développement. Utilisez cette option pour spécifier un autre fuseau horaire ou si la détection automatique ne fonctionne pas correctement. La valeur timezone doit être au format zoneinfo, c'est-à-dire area/location ou area/subarea/location. Par exemple :

  • America/Los_Angeles
  • Europe/Paris
  • America/Argentina/Buenos_Aires

Le fuseau horaire spécifié doit figurer dans la base de données zoneinfo.

-version Affiche le numéro de version de l'émulateur. Par exemple :

emulator @Nexus_5X_API_23 -version

Ou

emulator -version

UI (interface utilisateur)
-no-boot-anim Désactive l'animation de démarrage au lancement de l'émulateur pour accélérer ce dernier. Par exemple :

emulator @Nexus_5X_API_23 -no-boot-anim

Sur les ordinateurs plus lents, cette option permet d'augmenter considérablement la vitesse de démarrage.

-screen mode Définit le mode d'écran tactile émulé. Exemple :

emulator @Nexus_5X_API_23 -screen no-touch

mode peut correspondre à l'une des valeurs suivantes:

  • touch : émule un écran tactile (par défaut).
  • multi-touch : émule un écran tactile multipoint.
  • no-touch : désactive l'émulation de l'écran tactile et de l'écran tactile multipoint.

Options avancées

Le tableau suivant indique les options de démarrage via la ligne de commande qui sont disponibles, mais qui ne sont pas couramment utilisées par la plupart des développeurs d'applications.

Dans les descriptions, le répertoire de travail est le répertoire actif dans le terminal où vous entrez des commandes. Pour plus d'informations sur le répertoire système AVD et le répertoire de données, ainsi que sur les fichiers qu'ils contiennent, consultez la section sur les répertoires et fichiers par défaut.

Certaines de ces options sont adaptées aux développeurs d'applications externes, tandis que d'autres sont principalement utilisées par les développeurs de plates-formes. Les développeurs d'applications créent des applications Android et les exécutent sur des AVD spécifiques. Les développeurs de plates-formes travaillent sur le système Android et l'exécutent dans l'émulateur sans utiliser d'AVD prédéfini.

Tableau 4. Options de ligne de commande avancées

Option avancée Brève description
-bootchart timeout

Active le bootcharting, avec un délai avant expiration en secondes. Certaines images système Android disposent d'un système init modifié qui intègre une fonctionnalité de bootcharting. Cette option vous permet d'envoyer un délai avant expiration du bootcharting au système. Si le bootcharting n'est pas activé sur votre système init, l'option n'a aucun effet. Cette option est surtout utile pour les développeurs de plates-formes, et non pour les développeurs d'applications externes.

Par exemple :

emulator @Nexus_5X_API_23 -bootchart 120
-cache filepath

Spécifie un fichier image de partition du cache. Indique un nom de fichier et un chemin d'accès absolu ou relatif au répertoire de données pour configurer un fichier de cache persistant. Si le fichier n'existe pas, l'émulateur le crée en tant que fichier vide.

Exemple :

emulator @Nexus_5X_API_23 -cache
   ~/.android/avd/Nexus_5X_API_23.avd/cache_persistent.img

Si vous n'utilisez pas cette option, la valeur par défaut est un fichier temporaire nommé cache.img. Pour en savoir plus, consultez la section Répertoire de données AVD.

-cache-size size

Définit la taille de la partition du cache en Mo.

Par exemple :

emulator @Nexus_5X_API_23 -cache-size 1000

Si vous ne spécifiez pas cette option, la valeur par défaut est de 66 Mo. Normalement, la plupart des développeurs d'applications n'ont pas besoin de cette option, sauf s'ils doivent télécharger des fichiers très volumineux, dont la taille est supérieure à celle du cache par défaut. Pour en savoir plus sur le fichier de cache, consultez la section Répertoire de données AVD.

-data filepath

Définit le fichier image de partition des données utilisateur. Fournit un nom de fichier et un chemin absolu ou un chemin relatif au répertoire de travail pour configurer un fichier de données utilisateur persistant. Si le fichier n'existe pas, l'émulateur crée une image à partir du fichier userdata.img par défaut, la stocke dans le nom de fichier que vous avez spécifié et y conserve les données utilisateur à l'arrêt.

Par exemple :

emulator @Nexus_5X_API_23 -data
   ~/.android/avd/Nexus_5X_API_23.avd/userdata-test.img

Si vous n'utilisez pas cette option, le fichier par défaut est userdata-qemu.img. Pour en savoir plus sur le fichier de données utilisateur, consultez la section Répertoire de données AVD.

-datadir dir

Spécifie un répertoire de données à l'aide d'un chemin absolu. Pour en savoir plus, consultez la section Répertoire de données AVD.

Par exemple :

emulator @Nexus_5X_API_23 -datadir
   ~/.android/avd/Nexus_5X_API_23.avd/mytest
-force-32bit

Utilise l'émulateur 32 bits sur les plates-formes 64 bits. Cette option est parfois utile pour les tests ou le débogage. Par exemple, l'émulateur ne s'exécutait pas toujours sous Windows 64 bits, mais s'exécutait sous la version 32 bits. Cette option a permis d'effectuer des comparaisons pour résoudre le problème. Exemple :

emulator @Nexus_5X_API_23 -force-32bit
-help-disk-images

Permet d'obtenir de l'aide sur les images disque. Cette option fournit des informations pertinentes pour les développeurs d'applications et de plates-formes. Par exemple :

emulator -help-disk-images
-help-char-devices

Permet d'obtenir de l'aide concernant les spécifications device de caractères. Un paramètre device est requis par certaines options de l'émulateur. Par exemple :

emulator -help-char-devices
-help-sdk-images

Permet d'obtenir de l'aide sur les images disque pertinentes pour les développeurs d'applications. Cette option permet d'obtenir des informations sur l'emplacement des fichiers image d'un AVD créé à l'aide de SDK Tools. Par exemple :

emulator -help-sdk-images
-help-build-images

Permet d'obtenir de l'aide sur les images disque pertinentes pour les développeurs de plates-formes. Par exemple :

emulator -help-build-images
-initdata filepath
-init-data filepath

Spécifie la version initiale de la partition de données. Après avoir effacé les données utilisateur, l'émulateur copie le contenu du fichier spécifié vers les données utilisateur (par défaut, le fichier userdata-qemu.img) au lieu d'utiliser le fichier userdata.img par défaut en tant que version initiale. Indique le nom du fichier, ainsi qu'un chemin absolu ou relatif au répertoire de travail.

Par exemple :

emulator @Nexus_5X_API_23 -initdata
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/userdata-test.img

Si vous ne spécifiez pas de chemin, le fichier est placé dans le répertoire système. Pour en savoir plus, consultez la section Répertoire système AVD.

-kernel filepath

Utilise un noyau émulé spécifique. Si vous ne spécifiez pas de chemin, l'émulateur le recherche dans le répertoire système.

Utilisez l'option ‑show‑kernel pour afficher les messages de débogage du noyau.

Par exemple :

emulator @Nexus_5X_API_23 -kernel
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/kernel-test.img -show-kernel

Si vous ne spécifiez pas cette option, la valeur par défaut est kernel-ranchu. Pour en savoir plus, consultez la section Répertoire système AVD.

-noaudio
-no-audio

Désactive la compatibilité audio pour cet appareil virtuel. Certains ordinateurs Linux et Windows possèdent des pilotes audio défectueux qui provoquent différents symptômes, par exemple qui empêchent le lancement de l'émulateur. Dans ce cas, utilisez cette option pour résoudre le problème. Vous pouvez également utiliser la variable d'environnement QEMU_AUDIO_DRV pour modifier le backend audio.

Par exemple :

emulator @Nexus_5X_API_23 -noaudio
-nocache
-no-cache

Lance l'émulateur sans partition du cache. Si vous n'utilisez pas cette option, la valeur par défaut est un fichier temporaire nommé cache.img. Cette option est réservée aux développeurs de plates-formes. Pour en savoir plus, consultez la section Répertoire de données AVD.

Par exemple :

emulator @Nexus_5X_API_23 -nocache
-no-snapshot

Empêche les opérations de chargement et d'enregistrement automatiques, ce qui oblige l'émulateur à exécuter une séquence de démarrage complète et à perdre son état lorsqu'il est fermé. Cette option remplace l'option -snapshot.

Par exemple :

emulator @Nexus_5X_API_23 -no-snapshot
-no-snapshot-load

Empêche l'émulateur de charger l'état de l'AVD à partir du stockage d'instantanés. Effectue un démarrage complet.

Par exemple :

emulator @Nexus_5X_API_23 -no-snapshot-load
-no-snapshot-save

Empêche l'émulateur d'enregistrer l'état de l'AVD dans le stockage d'instantanés à la fermeture, ce qui signifie que toutes les modifications seront perdues.

Par exemple :

emulator @Nexus_5X_API_23 -no-snapshot-save
-no-snapshot-update-time

N'essaie pas de corriger l'heure de l'horloge de l'AVD immédiatement après la restauration de l'instantané. Cette option peut être utile lors des tests, car elle évite un saut dans le temps soudain. Les mises à jour de l'heure sont tout de même envoyées à l'AVD toutes les 15 secondes environ.

Par exemple :

emulator @Nexus_5X_API_23 -no-snapshot-update-time
-no-snapstorage

Lance l'émulateur sans installer de fichier pour stocker ou charger des instantanés d'état, ce qui force le démarrage complet et désactive la fonctionnalité d'instantanés d'état. Cette option ignore les options -snapstorage et -snapshot.

Exemple :

emulator @Nexus_5X_API_23 -no-snapstorage
-no-window

Désactive l'affichage de la fenêtre graphique sur l'émulateur. Cette option est utile lors de l'exécution de l'émulateur sur des serveurs sans écran. Vous pouvez accéder à l'émulateur via adb ou la console. Par exemple :

emulator @Nexus_5X_API_23 -no-window
-partition-size size

Spécifiez la taille de la partition de données système en Mo. Par exemple :

emulator @Nexus_5X_API_23 -partition-size 1024
-prop name=value

Définit une propriété système Android dans l'émulateur au démarrage. name doit être un nom de propriété portant le libellé qemu_prop de 32 caractères maximum, sans espaces, et value doit être une chaîne de 92 caractères au maximum. Pour voir un exemple, consultez le fichier property_contexts. Vous pouvez spécifier plusieurs options ‑prop sur une même ligne de commande. Cette option peut être utile pour le débogage. Par exemple :

emulator @Nexus_5X_API_23 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Transmet des arguments au logiciel de l'émulateur QEMU. Notez que QEMU 1 et QEMU 2 peuvent utiliser différents arguments. Lorsque vous utilisez cette option, assurez-vous qu'il s'agit de la dernière option spécifiée, car toutes les options suivantes sont interprétées comme des options spécifiques à QEMU. Cette option est assez avancée et ne doit être utilisée que par les développeurs qui connaissent très bien l'émulation QEMU et Android.
-qemu -h

Affiche l'aide de -qemu. Par exemple :

emulator -qemu -h
-ramdisk filepath

Spécifie une image de démarrage ramdisk. Indique le nom du fichier, ainsi qu'un chemin absolu ou relatif au répertoire de travail.

Par exemple :

emulator @Nexus_5X_API_23 -ramdisk
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/ramdisk-test.img

Si vous n'utilisez pas cette option, la valeur par défaut est le fichier ramdisk.img dans le répertoire système. Pour en savoir plus, consultez la section Répertoire système AVD.

-report-console socket

Indique le port de console à un tiers distant avant de lancer l'émulation. Cette option peut être utile pour un script de test automatisé. socket doit utiliser l'un des formats suivants :

  • tcp:port[,server][,max=seconds][,ipv6]
  • unix:port[,server][,max=seconds][,ipv6]

Pour en savoir plus, utilisez l'option -help-report-console comme décrit dans cette section.

-shell

Crée une console d'interface système racine sur le terminal actuel. Cette option diffère de la commande adb shell à différents égards :

  • Elle crée une interface système racine qui vous permet de modifier de nombreuses parties du système.
  • Elle fonctionne même si le adb daemon dans le système émulé est défaillant.
  • Appuyez sur les touches Ctrl+C (ou Cmd+C sous macOS) pour arrêter l'émulateur au lieu de l'interface système.

Par exemple :

emulator @Nexus_5X_API_23 -shell
-snapshot name

Spécifie le nom d'un instantané dans un fichier de stockage d'instantanés pour les opérations de démarrage et d'enregistrement automatiques.

Plutôt que d'exécuter une séquence de démarrage complète, l'émulateur peut reprendre l'exécution à partir d'un instantané d'état précédent, ce qui est généralement beaucoup plus rapide. Lorsque vous utilisez cette option, l'émulateur charge l'instantané de ce nom à partir de l'image d'instantané et l'enregistre sous le même nom à la fermeture.

Si vous n'utilisez pas cette option, une séquence de démarrage complète est effectuée par défaut. Si l'instantané spécifié n'existe pas, l'émulateur effectue une séquence de démarrage complète et une opération d'enregistrement.

Reportez-vous à l'option -snapstorage pour savoir comment spécifier un fichier de stockage d'instantanés et le fichier par défaut.

emulator @Nexus_5X_API_23 -snapshot snapshot2

N'oubliez pas que lors du chargement d'un instantané, tout le contenu du système, les données utilisateur et les images de carte SD sont écrasés par le contenu qu'ils détenaient au moment de la création de l'instantané. Si vous n'enregistrez pas ces informations dans un autre instantané, toutes les modifications apportées depuis seront perdues.

Vous pouvez également créer un instantané à partir de la console de l'émulateur à l'aide de la commande avd snapshot save name. Pour plus d'informations, consultez la section Envoyer des commandes à la console de l'émulateur.

-snapshot-list

Affiche la liste des instantanés disponibles. Cette commande affiche un tableau des instantanés stockés dans le fichier de stockage d'instantanés avec lequel l'émulateur a été démarré, puis se ferme. Si vous spécifiez également -snapstorage file, cette commande affiche un tableau des instantanés stockés dans le fichier.

Exemple :

emulator @Nexus_5X_API_23 -snapshot-list -snapstorage
   ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img

Vous pouvez utiliser les valeurs des colonnes ID et TAG dans la sortie en tant qu'arguments pour l'option -snapshot.

-snapstorage filepath

Spécifie un fichier de dépôt contenant tous les instantanés d'état. Tous les instantanés réalisés lors de l'exécution seront enregistrés dans ce fichier. Seuls les instantanés de ce fichier peuvent être restaurés pendant l'exécution de l'émulateur.

Exemple :

emulator @Nexus_5X_API_23 -snapstorage
   ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img

Si vous ne spécifiez pas cette option, la valeur par défaut est snapshots.img dans le répertoire de données. Si le fichier spécifié n'existe pas, l'émulateur se lance, mais ne permet pas d'enregistrer ni de charger des instantanés d'état.

-sysdir dir

Spécifie un répertoire système à l'aide d'un chemin absolu. Pour en savoir plus, consultez la section Répertoire système AVD. Par exemple :

emulator @Nexus_5X_API_23 -sysdir
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/test
-system filepath

Spécifie un fichier système initial. Indique le nom du fichier, ainsi qu'un chemin absolu ou relatif au répertoire de travail.

Par exemple :

emulator @Nexus_5X_API_23 -system
   ~/Library/Android/sdk/system-images/android-23/
   google_apis/x86/system-test.img

Si vous n'utilisez pas cette option, la valeur par défaut est le fichier system.img dans le répertoire système. Pour en savoir plus, consultez la section Répertoire système AVD.

-use-system-libs

Utilise le système libstdc++ au lieu de la version fournie avec le système d'émulateur (sous Linux). N'utilisez cette option que si l'émulateur ne démarre pas normalement, bien qu'elle ne fonctionne pas toujours. Vous pouvez également définir la variable d'environnement ANDROID_EMULATOR_USE_SYSTEM_LIBS sur 1.

Par exemple :

me-linux$ emulator @Nexus_5X_API_23 -use-system-libs
-writable-system

Utilisez cette option pour obtenir une image système accessible en écriture au cours de votre session d'émulation. Pour ce faire :

  1. Démarrez un appareil virtuel avec l'option -writable-system.
  2. Saisissez la commande adb remount à partir d'un terminal de commande pour indiquer à l'émulateur de réinstaller system/ en lecture/écriture. Par défaut, il est installé en lecture seule.

L'utilisation de cet indicateur crée une copie temporaire de l'image système qui peut être très volumineuse (plusieurs centaines de Mo), mais qui sera détruite à la fermeture de l'émulateur.

Options obsolètes

Les options de ligne de commande suivantes sont obsolètes :

  • -audio-in
  • -audio-out
  • -charmap
  • -code-profile
  • -cpu-delay
  • -dpi-device
  • -dynamic_skin
  • -enable-kvm
  • -gps
  • -image
  • -keyset
  • -help-keys
  • -help-keyset-file
  • -nand-limits
  • -noskin
  • -no-skin
  • -onion
  • -onion-alpha
  • -onion-rotation
  • -radio
  • -ranchu
  • -raw-keys
  • -scale
  • -shared-net-id
  • -shell-serial
  • -skin
  • -skindir
  • -trace
  • -useaudio

Obtenir de l'aide sur les options de ligne de commande

Cette section explique comment obtenir de l'aide concernant les options de ligne de commande. Elle fournit des informations plus détaillées sur les options de ligne de commande d'émulateur couramment utilisées qui sont disponibles au démarrage de l'émulateur.

Afficher toutes les options de l'émulateur

Pour afficher la liste de toutes les options de l'émulateur, y compris une brève description, saisissez la commande suivante :

emulator -help

Obtenir une aide détaillée pour une option spécifique

Pour afficher l'aide d'une option de démarrage spécifique, saisissez la commande suivante :

emulator -help-option

Par exemple :

emulator -help-netspeed

Cette aide est plus détaillée que la description fournie par l'option -help.

Obtenir une aide détaillée pour toutes les options

Pour obtenir une aide détaillée pour toutes les options de l'émulateur, saisissez la commande suivante :

emulator -help-all

Afficher les variables d'environnement de l'émulateur

Pour obtenir une liste des variables d'environnement de l'émulateur, saisissez la commande suivante :

emulator -help-environment

Vous pouvez définir les variables d'environnement dans la fenêtre de terminal avant de lancer un appareil virtuel, ou via les paramètres utilisateur du système d'exploitation. Par exemple, définissez-la dans votre fichier .bashrc sous Linux.

Afficher les balises de débogage

Pour imprimer la liste des balises correspondant aux options -debug, saisissez la commande suivante :

emulator -help-debug-tags

Les options -debug vous permettent d'activer ou de désactiver les messages de débogage de composants d'émulateur spécifiques, comme spécifié par les balises.