Envoyer des commandes à la console de l'émulateur

Chaque appareil virtuel en cours d'exécution fournit une console qui vous permet d'interroger et de contrôler l'environnement de l'appareil émulé. Par exemple, vous pouvez utiliser la console pour gérer la redirection de port, les caractéristiques réseau et les événements téléphoniques lorsque votre application est exécutée sur l'émulateur.

Les commandes suivantes nécessitent qu'un émulateur soit déjà en cours d'exécution. Pour plus d'informations sur l'exécution d'un émulateur, consultez les sections Exécuter des applications sur Android Emulator et Lancer l'émulateur à partir de la ligne de commande.

Démarrer et arrêter une session de console

Pour accéder à la console et entrer des commandes à partir d'une fenêtre de terminal, utilisez telnet pour vous connecter au port de la console et fournir votre jeton d'authentification. Chaque fois que la console affiche OK, elle est prête à accepter les commandes. Elle n'est pas associée à une invite type.

Pour vous connecter à la console d'un appareil virtuel en cours d'exécution :

  1. Ouvrez une fenêtre de terminal et entrez la commande suivante :
  2. telnet localhost console-port

    Le titre de la fenêtre de l'émulateur indique le numéro de port de la console lors d'une exécution dans une fenêtre distincte, mais pas dans une fenêtre d'outil. Par exemple, le titre de la fenêtre d'un émulateur utilisant le port 5554 de la console peut être Nexus_5X_API_23:5554. En outre, la commande adb devices affiche la liste des appareils virtuels en cours d'exécution et les numéros de port de leur console. Pour en savoir plus, consultez la section Requête pour des appareils.

    Remarque : L'émulateur écoute les connexions sur les ports 5554 à 5585 et n'accepte que les connexions de localhost.

  3. Une fois que la console affiche OK, entrez la commande auth auth_token.
  4. Pour que vous puissiez entrer des commandes de console, la console de l'émulateur exige une authentification. auth_token doit correspondre au contenu du fichier .emulator_console_auth_token dans votre répertoire d'accueil.

    Si ce fichier n'existe pas, la commande telnet localhost console-port crée le fichier, qui contient un jeton d'authentification généré aléatoirement. Pour désactiver l'authentification, supprimez le jeton du fichier .emulator_console_auth_token ou créez un fichier vide s'il n'existe pas.

  5. Une fois connecté à la console, entrez des commandes de console.
  6. Entrez help, help command ou help-verbose pour afficher la liste des commandes de console et en savoir plus sur des commandes spécifiques.

  7. Pour quitter la session de console, entrez quit ou exit.

Voici un exemple de session :

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display

try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

Documentation de référence sur les commandes de l'émulateur

Le tableau suivant décrit les commandes de la console de l'émulateur, ainsi que leurs paramètres et valeurs.

Tableau 1. Commandes de la console de l'émulateur

Commandes générales Description
avd {stop|start|status|name} Interroge, contrôle et gère l'appareil virtuel comme suit :
  • stop : arrête l'exécution de l'appareil.
  • start : démarre l'exécution de l'appareil.
  • status : interroge l'état de l'appareil virtuel, qui peut être running ou stopped.
  • name : interroge le nom de l'appareil virtuel.
avd snapshot {list|save name|load name|delete name} Enregistre et restaure l'état de l'appareil dans des instantanés, comme suit :
  • list : indique tous les instantanés enregistrés.
  • save name : enregistre l'instantané en tant que name.
  • load name : charge l'instantané nommé.
  • delete name : supprime l'instantané nommé.

L'exemple suivant enregistre un instantané nommé firstactivitysnapshot :

avd snapshot save firstactivitysnapshot
fold Plie l'appareil pour afficher sa configuration d'écran réduite (s'il est pliable et actuellement déplié).
unfold Déplie l'appareil pour afficher sa configuration d'écran agrandie (s'il est pliable et actuellement plié).
kill Arrête l'appareil virtuel.
ping Vérifie si l'appareil virtuel est en cours d'exécution.
rotate Fait pivoter l'appareil virtuel Android dans le sens inverse des aiguilles d'une montre par incréments de 45 degrés.
Plantage de l'émulateur Description
crash Fait planter l'émulateur pendant l'exécution de l'application.
crash-on-exit Fait planter l'émulateur lorsque l'application se ferme.
Balises de débogage Description
debug tags ...

Active ou désactive les messages de débogage dans des parties spécifiques de l'émulateur. Le paramètre tags doit être une valeur de la liste des balises de débogage qui s'affiche lorsque vous exécutez emulator -help-debug-tags. Pour en savoir plus sur l'option -help-debug-tags, consultez le tableau des options couramment utilisées.

L'exemple suivant active la balise radio :

debug radio
Redirection de port Description
redir list Indique la redirection de port actuelle.
redir add protocol:host-port:guest-port Ajoute une nouvelle redirection de port comme suit :
  • protocol : doit avoir la valeur tcp ou udp.
  • host-port : numéro de port à ouvrir sur l'hôte.
  • guest-port : numéro de port vers lequel acheminer les données sur l'émulateur.
redir del protocol:host-port Supprime une redirection de port.
  • protocol : doit avoir la valeur tcp ou udp.
  • host-port : numéro de port à ouvrir sur l'hôte.
Emplacement géographique Description

Définit l'emplacement géographique signalé aux applications exécutées dans un émulateur en envoyant une position GPS à l'émulateur.

Vous pouvez exécuter l'une des commandes geo suivantes dès qu'un appareil virtuel est en cours d'exécution. L'émulateur définit l'emplacement que vous saisissez en créant un fournisseur de localisation fictif. Ce fournisseur répond aux écouteurs de localisation définis par les applications et fournit l'emplacement au LocationManager. Toute application peut interroger le gestionnaire de localisation pour obtenir la position GPS actuelle de l'appareil émulé en appelant LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Envoie une position GPS simple à l'émulateur. Indiquez longitude et latitude en degrés décimaux. Saisissez un nombre compris entre 1 et 12 pour définir le nombre de satellites à utiliser pour déterminer l'emplacement, et indiquez altitude en mètres et velocity en nœuds.
geo nmea sentence Envoie une phrase NMEA 0183 à l'appareil émulé, comme s'il s'agissait d'un modem GPS émulé. Commencez l'élément sentence par "$GP". Seules les phrases "$GPGGA" et "$GPRCM" sont actuellement prises en charge. L'exemple suivant est une phrase GPGGA (Global Positioning System Fix Data) qui récupère les données de temps, d'emplacement et de position d'un récepteur GPS :
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
Événements matériels factices Description
event types Indique tous les types d'événements factices. Pour les événements associés à des codes, le nombre de codes est indiqué entre parenthèses sur la droite.

event types
event <type> can be an integer or one of the following aliases:
    EV_SYN
    EV_KEY    (405 code aliases)
    EV_REL    (2 code aliases)
    EV_ABS    (27 code aliases)
    EV_MSC
    EV_SW     (4 code aliases)
    EV_LED
    EV_SND
    EV_REP
    EV_FF
    EV_PWR
    EV_FF_STATUS
    EV_MAX
OK
        

event send types [types ...] Envoie un ou plusieurs types d'événements factices.
event codes type Affiche la liste des codes d'événement pour le type d'événement factice spécifié.
event send type[:code]:[value] [...] Envoie un ou plusieurs événements factices avec des codes et des valeurs de code facultatifs.

Pour connaître l'événement exact à envoyer, vous pouvez utiliser la commande adb tout en appuyant manuellement sur les boutons de l'émulateur.

Voici les événements générés lorsque vous appuyez sur le bouton Marche/Arrêt :

adb shell getevent -lt

/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
      
Par exemple, pour simuler une pression prolongée sur le bouton Marche/Arrêt, envoyez deux événements EV_KEY pour les raccourcis clavier correspondants :
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Envoie une chaîne de caractères simulant des pressions de touche. Le message doit être une chaîne UTF-8. Les publications Unicode sont mappées à l'envers selon le clavier de l'appareil actuel, et les caractères non pris en charge sont supprimés de manière silencieuse.
Commandes d'état de l'alimentation Description
power display Affiche l'état de la batterie et du chargeur.
power ac {on|off} Définit l'état de charge sur secteur sur on ou off.
power status {unknown|charging|discharging|not-charging|full} Modifie l'état de la batterie comme indiqué.
power present {true|false} Définit l'état de présence de la batterie.
power health {unknown|good|overheat|dead|overvoltage|failure} Définit l'intégrité de la batterie.
power capacity percent Définit l'état de la batterie restante en tant que pourcentage compris entre 0 et 100 %.
État de la connexion réseau Description
network status Vérifie l'état du réseau ainsi que les caractéristiques de retard et de débit actuelles.
network delay latency

Modifie la latence du réseau émulé.

L'émulateur vous permet de simuler différents niveaux de latence réseau afin que vous puissiez tester votre application dans un environnement plus représentatif des conditions réelles de son exécution. Vous pouvez définir un niveau ou une plage de latence au démarrage de l'émulateur, ou utiliser la console pour modifier la latence pendant que l'application s'exécute dans l'émulateur.

Le format du réseau latency est l'un des suivants (les nombres sont exprimés en millisecondes) :

Format de latence réseau :

  • gprs : GPRS, qui utilise une plage de latence de 150 au minimum et de 550 au maximum.
  • edge : EDGE/EGPRS, qui utilise une plage de latence de 80 au minimum et de 400 au maximum.
  • umts : UMTS/3G, qui utilise une plage de latence de 35 au minimum et de 200 au maximum.
  • none : aucune latence.
  • num : émule la latence spécifiée en millisecondes.
  • min:max : émule la plage de latence spécifiée.

Pour définir la latence au démarrage de l'émulateur, utilisez l'option d'émulateur -netdelay avec une valeur latency prise en charge, comme indiqué dans la liste précédente des formats de latence réseau. Voici quelques exemples :

emulator -netdelay gprs
emulator -netdelay 40,100

Pour modifier le retard réseau pendant que l'émulateur s'exécute, connectez-vous à la console et utilisez la commande netdelay avec une valeur latency prise en charge, comme indiqué dans la liste précédente des formats de latence réseau.

network delay gprs
network delay 40 100
network speed speed L'émulateur vous permet de simuler différents taux de transfert réseau.

Vous pouvez définir un taux ou une plage de transfert au démarrage de l'émulateur, ou utiliser la console pour modifier ce taux pendant que l'application s'exécute dans l'émulateur.

Le format de réseau speed est l'un des suivants (les nombres sont exprimés en kbit/s) :

Format de débit réseau :

  • gsm : GSM/CSD, qui utilise un débit montant de 14,4 et un débit descendant de 14,4.
  • hscsd : HSCSD, qui utilise un débit montant de 14,4 et un débit descendant de 43,2.
  • gprs : GPRS, qui utilise un débit montant de 40,0 et un débit descendant de 80,0.
  • edge : EDGE/EGPRS, qui utilise un débit montant de 118,4 et un débit descendant de 236,8.
  • umts : UMTS/3G, qui utilise un débit montant de 128,0 et un débit descendant de 1 920.
  • hsdpa : HSDPA, qui utilise un débit montant de 348,0 et un débit descendant de 14 400,0.
  • lte : LTE, qui utilise un débit montant de 58 000 et un débit descendant de 173 000.
  • evdo : EvDo, qui utilise un débit montant de 75 000 et un débit descendant de 280 000.
  • full : débit illimité, mais qui dépend de la vitesse de connexion de votre ordinateur.
  • num : définit un débit exact en kbit/s pour le chargement et le téléchargement.
  • up:down : définit des débits exacts en kbit/s pour le chargement et le téléchargement séparément.

Pour définir le débit réseau au démarrage de l'émulateur, utilisez l'option d'émulateur -netspeed avec une valeur speed prise en charge, comme indiqué dans la liste précédente des formats de débit réseau. Voici quelques exemples :

emulator -netspeed gsm @Pixel_API_26
emulator -netspeed 14.4,80 @Pixel_API_26

Pour modifier le débit réseau pendant que l'émulateur s'exécute, connectez-vous à la console et utilisez la commande network speed avec une valeur speed prise en charge, comme indiqué dans la liste précédente des formats de débit réseau.

network speed 14.4 80
network capture {start|stop} file Envoie des paquets à un fichier. La liste suivante décrit les paramètres et leurs valeurs :
  • start file : commence à envoyer des paquets au fichier spécifié.
  • stop file : arrête d'envoyer des paquets au fichier spécifié.
Émulation de téléphonie Description
Android Emulator inclut ses propres modems émulés GSM et CDMA qui vous permettent de simuler des fonctions de téléphonie dans l'émulateur. Par exemple, GSM vous permet de simuler des appels téléphoniques entrants, ainsi que d'établir et d'arrêter des connexions de données. Avec CDMA, vous fournissez une source d'abonnement et la liste d'itinérance préférée. Le système Android gère les appels simulés exactement comme les appels réels. L'émulateur n'est pas compatible avec l'audio des appels.
gsm {call|accept|cancel|busy} phonenumber Les paramètres gsm sont les suivants :
  • call : simule un appel téléphonique entrant de phonenumber.
  • accept : accepte un appel entrant de phonenumber et fait passer l'état de l'appel à active. Vous ne pouvez définir l'état d'un appel sur active que si son état actuel est waiting ou held.
  • cancel met fin à un appel téléphonique entrant ou sortant vers phonenumber.
  • busy : clôture un appel sortant vers phonenumber et fait passer l'état de l'appel à busy. Vous ne pouvez définir l'état d'un appel sur busy que si son état actuel est waiting.
gsm {data|voice} state La commande data state modifie l'état de la connexion de données GPRS, tandis que la commande data voice state modifie l'état de la connexion vocale GPRS, comme suit :
  • unregistered : aucun réseau disponible.
  • home : sur un réseau local, sans itinérance.
  • roaming : sur un réseau en itinérance.
  • searching : recherche de réseaux.
  • denied : appels d'urgence uniquement.
  • off : identique à unregistered.
  • on : identique à home.
gsm hold Définit l'état d'un appel sur hold. Vous ne pouvez définir l'état d'un appel sur hold que si son état actuel est active ou waiting.
gsm list Affiche la liste de tous les appels entrants et sortants, ainsi que leur état.
gsm status Affiche l'état actuel de la connexion vocale/de données GSM. Les valeurs sont celles décrites pour les commandes voice et data.
gsm signal {rssi|ber} Modifie l'intensité du signal (rssi) et le taux d'erreur par bit (ber) enregistrés au cours des 15 prochaines secondes de mise à jour. La liste suivante décrit les paramètres et leurs valeurs :
  • La plage rssi est comprise entre 0 et 31. 99 correspond aux valeurs inconnues.
  • La plage ber est comprise entre 0 et 7. 99 correspond aux valeurs inconnues.
gsm signal-profile num Définit le profil d'intensité du signal. num est un nombre compris entre 0 et 4.
cdma ssource source Définit la source d'abonnement CDMA actuelle, où source est une liste d'autorisation basée sur le réseau qui contient les abonnés de l'opérateur CDMA et leurs valeurs, comme suit :
  • nv : lit l'abonnement à partir d'une RAM non volatile.
  • ruim : lit l'abonnement à partir d'un module d'identité d'utilisateur amovible (RUIM).
cdma prl_version version Vide la version actuelle de la liste d'itinérance préférée (PRL). Le numéro de version correspond à la base de données PRL qui contient les informations utilisées lors du processus de sélection et d'acquisition du système.
Gestion des capteurs sur l'émulateur Description
Ces commandes concernent les capteurs disponibles dans l'appareil virtuel Android. En plus d'utiliser la commande sensor, vous pouvez afficher et ajuster les paramètres dans l'émulateur sur l'écran Virtual sensors (Capteurs virtuels) des onglets Accelerometer (Accéléromètre). et Additional sensors (Capteurs supplémentaires).
sensor status Affiche la liste de tous les capteurs et leur état. Voici un exemple de sortie correspondant à la commande sensor status :
sensor get sensor-name Récupère les paramètres de sensor-name. L'exemple suivant obtient la valeur du capteur d'accélération :
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Les valeurs acceleration séparées par des caractères deux-points (:) font référence aux coordonnées x, y et z des capteurs virtuels.

sensor set sensor-name value-x:value-y:value-z Définit les valeurs de sensor-name. L'exemple suivant définit le capteur d'accélération sur les valeurs x, y et z, séparées par des caractères deux-points.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Émulation de SMS Description
sms send sender-phone-number textmessage Génère un SMS entrant émulé. La liste suivante décrit les paramètres et leurs valeurs :
  • sender-phone-number : contient une chaîne numérique arbitraire.
  • textmessage : message SMS.

Dans l'exemple suivant, le message "hi there" est envoyé au numéro 4085555555 :

sms send 4085555555 hi there

La console transfère le SMS au framework Android, qui le transmet à une application de l'émulateur qui gère les SMS, comme l'application Messages. Si vous transmettez 10 chiffres, l'application en fait un numéro de téléphone. Les chaînes numériques plus longues ou plus courtes indiquent la manière dont vous les avez envoyées.

Simulation d'empreintes digitales Description
finger touch fingerprint-id Simule la pression d'un doigt sur le capteur.
finger remove Simule le retrait du doigt.

Pour découvrir comment utiliser ces commandes, consultez la section suivante intitulée Simulation et validation d'empreintes digitales.

Simulation et validation d'empreintes digitales

Figure 1 : Écran d'authentification par empreinte digitale.

Utilisez la commande finger pour simuler et valider l'authentification par empreinte digitale pour votre application. Vous devez disposer de SDK Tools 24.3 ou version ultérieure et d'Android 6.0 (niveau d'API 23) ou version ultérieure.

Pour simuler et valider l'authentification par empreinte digitale, procédez comme suit :

  1. Si vous n'avez pas encore d'ID d'empreinte, enregistrez une nouvelle empreinte dans l'émulateur en sélectionnant Settings > Security > Fingerprint (Paramètres > Sécurité > Empreinte digitale), puis en suivant les instructions d'enregistrement.
  2. Configurez votre application pour qu'elle accepte l'authentification par empreinte digitale. Une fois cette étape effectuée, votre appareil affiche l'écran d'authentification par empreinte digitale.
  3. Pendant que votre application affiche l'écran d'authentification par empreinte digitale, accédez à la console et entrez la commande finger touch ainsi que l'ID d'empreinte que vous avez créé. Cela simule un geste avec le doigt.
  4. Entrez ensuite la commande finger remove pour simuler le retrait d'un doigt.

    Votre application doit réagir comme si un utilisateur touchait le lecteur d'empreinte digitale, puis en retirait son doigt.