Emulator-Konsolenbefehle senden

Jedes ausgeführte virtuelle Gerät bietet eine Konsole, mit der Sie die emulierte Geräteumgebung abfragen und steuern können. Beispielsweise können Sie mit der Console die Portweiterleitung, Netzwerkeigenschaften und Telefonieereignisse verwalten, während Ihre Anwendung im Emulator ausgeführt wird.

Für die folgenden Befehle muss bereits ein Emulator ausgeführt werden. Weitere Informationen zum Ausführen eines Emulators finden Sie unter Apps im Android-Emulator ausführen und Emulator über die Befehlszeile starten.

Konsolensitzung starten und beenden

Wenn Sie auf die Konsole zugreifen und Befehle über ein Terminalfenster eingeben möchten, verwenden Sie telnet, um eine Verbindung zum Konsolenport herzustellen und Ihr Authentifizierungstoken anzugeben. Jedes Mal, wenn in der Konsole OK angezeigt wird, können Befehle angenommen werden. Es gibt keinen typischen Prompt.

So stellen Sie eine Verbindung zur Konsole eines laufenden virtuellen Geräts her:

  1. Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:
  2. telnet localhost console-port

    Der Titel des Emulatorfensters enthält die Portnummer der Konsole, wenn sie in einem separaten Fenster ausgeführt wird, aber nicht, wenn sie in einem Toolfenster ausgeführt wird. Der Fenstertitel für einen Emulator, der den Konsolenport 5554 verwendet, könnte beispielsweise Pixel8_API_34:5554 lauten. Außerdem gibt der Befehl adb devices eine Liste der laufenden virtuellen Geräte und deren Konsolenportnummern aus. Weitere Informationen findest du unter Geräte abfragen.

    Hinweis: Der Emulator wartet auf Verbindungen an den Ports 5554 bis 5585 und akzeptiert nur Verbindungen von localhost.

  3. Wenn in der Konsole OK angezeigt wird, geben Sie den Befehl auth auth_token ein.
  4. Bevor Sie Konsolenbefehle eingeben können, erfordert die Emulatorkonsole eine Authentifizierung. auth_token muss mit dem Inhalt der .emulator_console_auth_token-Datei in Ihrem Basisverzeichnis übereinstimmen.

    Ist die Datei nicht vorhanden, erstellt der Befehl telnet localhost console-port die Datei, die ein zufällig generiertes Authentifizierungstoken enthält. Wenn Sie die Authentifizierung deaktivieren möchten, löschen Sie das Token aus der Datei .emulator_console_auth_token oder erstellen Sie eine leere Datei, falls noch nicht vorhanden.

  5. Wenn Sie mit der Konsole verbunden sind, geben Sie Konsolenbefehle ein.
  6. Geben Sie help, help command oder help-verbose ein, um eine Liste der Konsolenbefehle aufzurufen und mehr über bestimmte Befehle zu erfahren.

  7. Geben Sie zum Beenden der Konsolensitzung quit oder exit ein.

Hier ist eine Beispielsitzung:

$ 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
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device


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

Emulator-Befehlsreferenz

In der folgenden Tabelle werden die Emulator-Konsolenbefehle mit ihren Parametern und Werten beschrieben:

Tabelle 1 Emulator-Konsolenbefehle

Allgemeine Befehle Beschreibung
avd {stop|start|status|name} Das virtuelle Gerät wird wie folgt abgefragt, gesteuert und verwaltet:
  • stop: Beendet die Ausführung des Geräts.
  • start: Startet die Ausführung des Geräts.
  • status: Fragt den Status des virtuellen Geräts ab, entweder running oder stopped.
  • name: Fragt den Namen des virtuellen Geräts ab.
avd snapshot {list|save name|load name|delete name} Speichert den Gerätestatus in Snapshots und stellt ihn wie folgt wieder her:
  • list: Listet alle gespeicherten Snapshots auf.
  • save name: Speichert den Snapshot als name.
  • load name: Lädt den benannten Snapshot.
  • delete name: Löscht den benannten Snapshot.

Im folgenden Beispiel wird ein Snapshot mit dem Namen firstactivitysnapshot gespeichert:

avd snapshot save firstactivitysnapshot
fold Faltt das Gerät, um die kleinere Bildschirmkonfiguration anzuzeigen, wenn das Gerät faltbar und gerade aufgeklappt ist.
unfold Wenn das Gerät faltbar und derzeit zugeklappt ist, klappt es auf, um das größere Display anzuzeigen.
kill Beendet das virtuelle Gerät.
ping Prüft, ob das virtuelle Gerät ausgeführt wird.
rotate Dreht das AVD in 45-Grad-Schritten gegen den Uhrzeigersinn.
Emulator zum Absturz bringen Beschreibung
crash Stürzt den Emulator während der App-Ausführung ab.
crash-on-exit Stürzt den Emulator ab, wenn die App beendet wird.
Tags zur Fehlerbehebung Beschreibung
debug tags ...

Aktiviert oder deaktiviert Debug-Meldungen von bestimmten Teilen des Emulators. Der Parameter tags muss ein Wert aus der Liste der Debug-Tags sein, die angezeigt wird, wenn Sie emulator -help-debug-tags ausführen. Weitere Informationen zur Option -help-debug-tags finden Sie in der Tabelle mit den häufig verwendeten Optionen.

Im folgenden Beispiel wird das radio-Tag aktiviert:

debug radio
Portweiterleitung Beschreibung
redir list Listet die aktuelle Portweiterleitung auf.
redir add protocol:host-port:guest-port Dadurch wird eine neue Portweiterleitung hinzugefügt:
  • protocol: Muss entweder tcp oder udp sein.
  • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.
  • guest-port: Die Portnummer, an die Daten im Emulator weitergeleitet werden sollen.
redir del protocol:host-port Löscht eine Portweiterleitung.
  • protocol: Muss entweder tcp oder udp sein.
  • host-port: Die Portnummer, die auf dem Host geöffnet werden soll.
Geografischer Standort Beschreibung

Legt den geografischen Standort fest, der an die in einem Emulator ausgeführten Apps gemeldet wird, indem eine GPS-Standortbestimmung an den Emulator gesendet wird.

Sie können einen der folgenden geo-Befehle ausführen, sobald ein virtuelles Gerät ausgeführt wird. Der Emulator legt den eingegebenen Standort fest, indem er einen Anbieter für simulierte Standorte erstellt. Dieser Anbieter reagiert auf Standort-Listener, die von Apps festgelegt werden, und stellt den Standort für LocationManager bereit. Jede App kann den Standortmanager abfragen, um die aktuelle GPS-Standortbestimmung für das emulierte Gerät zu erhalten, indem sie LocationManager.getLastKnownLocation("gps") aufruft.

geo fix longitude latitude [altitude] [satellites] [velocity] Sendet ein einfaches GPS-Signal an den Emulator. Geben Sie longitude und latitude im Dezimalformat an. Verwenden Sie eine Zahl von 1 bis 12, um die Anzahl der satellites anzugeben, die zur Bestimmung der Position verwendet werden soll, und geben Sie altitude in Metern und velocity in Knoten an.
geo nmea sentence Sendet einen NMEA 0183-Satz an das emulierte Gerät, als ob er von einem emulierten GPS-Modem gesendet worden wäre. Beginnen Sie sentence mit "$GP". Derzeit werden nur die Sätze "$GPGGA" und "$GPRCM" unterstützt. Das folgende Beispiel ist ein GPGGA-Satz (Global Positioning System Fix Data), der die Zeit, Position und Fixdaten für einen GPS-Empfänger abruft:
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
Gefälschte Hardwareereignisse Beschreibung
event types Listet alle gefälschten Ereignistypen auf. Bei Ereignissen mit Codes wird die Anzahl der Codes rechts in Klammern angegeben.

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 ...] Sendet einen oder mehrere gefälschte Ereignistypen.
event codes type Listet die Ereigniscodes für den angegebenen fiktiven Ereignistyp auf.
event send type[:code]:[value] [...] Sendet ein oder mehrere gefälschte Ereignisse mit optionalen Codes und Codewerten.

Wenn Sie genau herausfinden möchten, welches Ereignis gesendet werden soll, können Sie den Befehl adb verwenden, während Sie die Tasten auf dem Emulator manuell drücken.

Beim Drücken der Ein/Aus-Taste werden die folgenden Ereignisse generiert:

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
      
Wenn du beispielsweise ein langes Drücken der Ein/Aus-Taste simulieren möchtest, werden zwei EV_KEY-Ereignisse für die Tastenbelegung und die Tastenbetätigung gesendet:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Sendet eine Zeichenfolge, die Tastendrücke simuliert. Die Nachricht muss ein UTF-8-String sein. Unicode-Beiträge werden gemäß der aktuellen Gerätetastatur umgekehrt zugeordnet und nicht unterstützte Zeichen werden ohne Meldung verworfen.
Ein/Aus-Taste Beschreibung
power display Zeigt den Akku- und Ladegerätstatus an.
power ac {on|off} Legt den AC-Ladestatus auf on oder off fest.
power status {unknown|charging|discharging|not-charging|full} Ändert den Akkustatus wie angegeben.
power present {true|false} Legt den Akku-Anwesenheitsstatus fest.
power health {unknown|good|overheat|dead|overvoltage|failure} Legt den Akkuzustand fest.
power capacity percent Legt den Status der verbleibenden Akkukapazität als Prozentsatz von 0 bis 100 fest.
Status der Netzwerkverbindung Beschreibung
network status Prüft den Netzwerkstatus sowie die aktuellen Verspätungs- und Geschwindigkeitsmerkmale.
network delay latency

Ändert die emulierte Netzwerklatenz.

Mit dem Emulator können Sie verschiedene Netzwerklatenzstufen simulieren, um Ihre Anwendung in einer Umgebung zu testen, die für die tatsächlichen Ausführungsbedingungen eher typisch ist. Sie können beim Start des Emulators ein Latenzniveau oder einen Latenzbereich festlegen oder die Latenz über die Konsole ändern, während die Anwendung im Emulator ausgeführt wird.

Das Netzwerk latency hat folgendes Format (Zahlen sind Millisekunden):

Netzwerklatenzformat:

  • gprs: GPRS verwendet einen Latenzbereich von mindestens 150 und maximal 550.
  • edge: EDGE/EGPRS verwendet einen Latenzbereich von mindestens 80 und maximal 400.
  • umts: UMTS/3G mit einem Latenzbereich von mindestens 35 und maximal 200
  • none: Keine Latenz.
  • num: Emuliert die angegebene Latenz in Millisekunden.
  • min:max: Emuliert den angegebenen Latenzbereich.

Verwenden Sie zum Festlegen der Latenz beim Start des Emulators die Emulatoroption -netdelay mit einem unterstützten latency-Wert, wie in der obigen Liste Netzwerklatenzformat aufgeführt. Hier sind einige Beispiele:

emulator -netdelay gprs
emulator -netdelay 40,100

Wenn Sie Änderungen an der Netzwerkverzögerung vornehmen möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl netdelay mit einem unterstützten latency-Wert aus der obigen Liste mit dem Netzwerklatenzformat.

network delay gprs
network delay 40 100
network speed speed Mit dem Emulator können Sie verschiedene Netzwerkübertragungsraten simulieren.

Sie können beim Start des Emulators eine Übertragungsrate oder einen Bereich festlegen oder die Frequenz über die Konsole ändern, während die Anwendung im Emulator ausgeführt wird.

Das Netzwerk speed hat folgendes Format (Zahlen sind Kilobit/s):

Format der Netzwerkgeschwindigkeit:

  • gsm: GSM/CSD mit einer Geschwindigkeit von 14,4 nach oben und 14,4 unten.
  • hscsd: HSCSD mit einer Geschwindigkeit von 14,4 nach oben und 43,2 unten.
  • gprs: GPRS mit einer Geschwindigkeit von 40,0 nach oben und 80,0 unten.
  • edge: EDGE/EGPRS mit einer Geschwindigkeit von 118,4 nach oben und 236,8 %.
  • umts: UMTS/3G mit einer Geschwindigkeit von 128, 0 bzw.1920 Abwärtsgeschwindigkeit.
  • hsdpa: HSDPA mit einer Geschwindigkeit von 348,0 hoch und 14.400 % bei Abwärtsgeschwindigkeit.
  • lte: LTE mit einer Geschwindigkeit von 58.000 oben und 173.000 Downloads
  • evdo: EVDO mit einer Geschwindigkeit von 75.000 nach oben und 280.000 Abwärtsgeschwindigkeiten.
  • full: Unbegrenzte Geschwindigkeit, hängt aber von der Verbindungsgeschwindigkeit Ihres Computers ab.
  • num: Legt eine genaue Rate in Kilobit/s fest, die für den Upload und Download verwendet wird.
  • up:down: Legt die genauen Raten in Kilobit/s für den separaten Upload und Download fest.

Wenn Sie die Netzwerkgeschwindigkeit beim Start des Emulators festlegen möchten, verwenden Sie die Emulatoroption -netspeed mit einem unterstützten speed-Wert, wie in der obigen Liste mit dem Format der Netzwerkgeschwindigkeit. Hier sind einige Beispiele:

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

Wenn Sie die Netzwerkgeschwindigkeit ändern möchten, während der Emulator ausgeführt wird, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl network speed mit einem unterstützten Wert für speed aus der obigen Liste mit dem Format der Netzwerkgeschwindigkeit.

network speed 14.4 80
network capture {start|stop} file Sendet Pakete an eine Datei. In der folgenden Liste werden die Parameter und Parameterwerte beschrieben:
  • start file: Beginnt das Senden von Paketen an die angegebene Datei.
  • stop file: Beendet das Senden von Paketen an die angegebene Datei.
Telefonieemulation Beschreibung
Der Android-Emulator enthält eigene GSM- und CDMA-emulierte Modems, mit denen Sie Telefoniefunktionen im Emulator simulieren können. Mit GSM können Sie beispielsweise eingehende Telefonanrufe simulieren und Datenverbindungen herstellen und beenden. Mit CDMA geben Sie eine Aboquelle und die bevorzugte Roaming-Liste an. Das Android-System verarbeitet simulierte Anrufe genau wie tatsächliche Anrufe. Der Emulator unterstützt keine Anrufe.
gsm {call|accept|cancel|busy} phonenumber Die gsm-Parameter sind:
  • call: Simuliert einen eingehenden Telefonanruf von phonenumber.
  • accept: Nimmt einen eingehenden Anruf von phonenumber an und ändert den Anrufstatus in active. Sie können einen Aufrufstatus nur in active ändern, wenn sein aktueller Status waiting oder held ist.
  • cancel: Beendet einen eingehenden Anruf von oder einen ausgehenden Anruf an phonenumber.
  • busy: Schließt einen ausgehenden Anruf an phonenumber und ändert den Anrufstatus in busy. Sie können einen Aufrufstatus nur in busy ändern, wenn sein aktueller Status waiting ist.
gsm {data|voice} state Der Befehl data state ändert den Status der GPRS-Datenverbindung und der Befehl data voice state ändert den Status der GPRS-Sprachverbindung so:
  • unregistered: Kein Netzwerk verfügbar.
  • home: im lokalen Netzwerk, kein Roaming.
  • roaming: im Roaming-Netzwerk.
  • searching: Netzwerke werden gesucht.
  • denied: Nur Notrufe.
  • off: Entspricht unregistered.
  • on: Entspricht home.
gsm hold Ändert den Status eines Aufrufs in hold. Sie können einen Aufrufstatus nur in hold ändern, wenn sein aktueller Status active oder waiting ist.
gsm list Listet alle ein- und ausgehenden Anrufe und deren Status auf
gsm status Meldet den aktuellen GSM-Sprach-/Datenstatus. Die Werte sind die für die Befehle voice und data beschriebenen.
gsm signal {rssi|ber} Ändert die gemeldete Signalstärke (rssi) und Bitfehlerrate (Ber) in den nächsten 15 Sekunden der Aktualisierung. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:
  • Der rssi-Bereich liegt zwischen 0 und 31 und 99 für unbekannt.
  • Der ber-Bereich liegt zwischen 0 und 7 und 99 für unbekannt.
gsm signal-profile num Legt das Signal für die Signalstärke fest. num ist eine Zahl zwischen 0 und 4.
cdma ssource source Legt die aktuelle CDMA-Aboquelle fest, wobei source eine netzwerkbasierte Zulassungsliste ist, die die Abonnenten des CDMA-Anbieters und ihre Werte so enthält:
  • nv: Liest das Abo aus dem nichtflüchtigen RAM.
  • ruim: Liest das Abo aus dem Removable User Identity Module (RUIM).
cdma prl_version version Speichert die aktuelle Version der bevorzugten Roaming-Liste (PRL). Die Versionsnummer gilt für die PRL-Datenbank, die Informationen enthält, die während der Systemauswahl und des Akquisitionsprozesses verwendet werden.
Sensoren im Emulator verwalten Beschreibung
Diese Befehle beziehen sich darauf, welche Sensoren im AVD verfügbar sind. Neben dem Befehl sensor können Sie die Einstellungen im Emulator auf den Tabs Beschleunigungsmesser und Zusätzliche Sensoren auf dem Bildschirm Virtuelle Sensoren ansehen und anpassen.
sensor status Listet alle Sensoren und deren Status auf. Das folgende Beispiel zeigt die Ausgabe für den Befehl sensor status:
sensor get sensor-name Ruft die Einstellungen für sensor-name ab. Im folgenden Beispiel wird der Wert für den Beschleunigungssensor abgerufen:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Die durch Doppelpunkte(:) getrennten acceleration-Werte beziehen sich auf die x-, y- und z-Koordinaten der virtuellen Sensoren.

sensor set sensor-name value-x:value-y:value-z Legt die Werte für sensor-name fest. Im folgenden Beispiel wird der Beschleunigungssensor auf die x-, y- und z-Werte gesetzt, getrennt durch Doppelpunkte.
sensor set acceleration 2.23517e-07:9.77631:0.812348
SMS-Emulation Beschreibung
sms send sender-phone-number textmessage Generiert eine emulierte eingehende SMS. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:
  • sender-phone-number: enthält einen beliebigen numerischen String.
  • textmessage: Die SMS.

Im folgenden Beispiel wird die Nachricht „hista“ an die Telefonnummer 4085555555 gesendet:

sms send 4085555555 hi there

Die Konsole leitet die SMS an das Android-Framework weiter, das sie im Emulator an eine App weitergibt, die SMS verarbeitet, z. B. die Messages App. Wenn Sie zehn Nummern übergeben, wird sie von der App als Telefonnummer formatiert. Längere oder kürzere numerische Strings zeigen die Art und Weise an, wie Sie sie gesendet haben.

Fingerabdrucksimulation Beschreibung
finger touch fingerprint-id Simuliert einen Finger, der den Sensor berührt.
finger remove Simuliert die Fingerentfernung.

Eine Anleitung zur Verwendung dieser Befehle findest du im folgenden Abschnitt zur Fingerabdrucksimulation und -validierung.

Fingerabdrucksimulation und -validierung

Abbildung 1: Bildschirm zur Authentifizierung per Fingerabdruck.

Verwenden Sie den Befehl finger, um die Fingerabdruckauthentifizierung für Ihre App zu simulieren und zu validieren. Sie benötigen SDK Tools 24.3 oder höher und Android 6.0 (API-Level 23) oder höher.

So simulieren und validieren Sie die Fingerabdruckauthentifizierung:

  1. Wenn Sie noch keine Fingerabdruck-ID haben, registrieren Sie einen neuen Fingerabdruck im Emulator. Wählen Sie dazu Einstellungen > Sicherheit > Fingerabdruck aus und folgen Sie der Anleitung zur Registrierung.
  2. Richte deine Anwendung so ein, dass sie die Fingerabdruck-Authentifizierung akzeptiert. Nach dieser Einrichtung zeigt dein Gerät den Bildschirm zur Fingerabdruckauthentifizierung an.
  3. Während Ihre App den Fingerabdruckauthentifizierungsbildschirm anzeigt, rufen Sie die Konsole auf und geben Sie den Befehl finger touch sowie die von Ihnen erstellte Fingerabdruck-ID ein. Dadurch wird eine Fingerberührung simuliert.
  4. Geben Sie dann den Befehl finger remove ein, um die Fingerentfernung zu simulieren.

    Deine App sollte so reagieren, als würde ein Nutzer den Fingerabdrucksensor berühren und dann den Finger vom Display nehmen.