Emulator-Konsolenbefehle senden

Jedes ausgeführte virtuelle Gerät stellt eine Konsole bereit, mit der Sie die emulierte Geräteumgebung abfragen und steuern können. Mit der Console können Sie beispielsweise 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 Anwendungen im Android-Emulator ausführen und Emulator über die Befehlszeile starten.

Konsolensitzung starten und beenden

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

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

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

    Im Titel des Emulatorfensters wird die Portnummer der Konsole aufgeführt, wenn die Ausführung in einem separaten Fenster, aber nicht in einem Toolfenster ausgeführt wird. Der Fenstertitel für einen Emulator mit Konsolen-Port 5554 könnte beispielsweise Nexus_5X_API_23:5554 lauten. Außerdem gibt der Befehl adb devices eine Liste der ausgeführten virtuellen Geräte und ihrer Konsolenportnummern aus. Weitere Informationen findest du unter Geräteabfrage.

    Hinweis: Der Emulator überwacht die Ports 5554 bis 5585 auf Verbindungen 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, ist eine Authentifizierung für die Emulatorkonsole erforderlich. auth_token muss mit dem Inhalt der Datei .emulator_console_auth_token in Ihrem Basisverzeichnis übereinstimmen.

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

  5. Nachdem die Verbindung zur Konsole hergestellt wurde, geben Sie Console-Befehle 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

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

Emulator-Befehlsreferenz

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

Tabelle 1 Befehle der Emulator-Konsole

Allgemeine Befehle Beschreibung
avd {stop|start|status|name} Abfragen, steuern und verwalten das virtuelle Gerät so:
  • 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. Dieser kann running oder stopped sein.
  • name: Fragt den Namen des virtuellen Geräts ab.
avd snapshot {list|save name|load name|delete name} Speichert und stellt den Gerätestatus in Snapshots 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 Wenn das Gerät faltbar und derzeit aufgeklappt ist, wird es faltbar und so konfiguriert, dass sein kleineres Display angezeigt wird.
unfold Klappt das Gerät auf, um sein größeres Display anzuzeigen, wenn es faltbar und derzeit zugeklappt ist.
kill Beendet das virtuelle Gerät.
ping Überprüft, ob das virtuelle Gerät ausgeführt wird.
rotate Dreht das AVD in 45-Grad-Schritten gegen den Uhrzeigersinn.
Emulator abstürzen 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 Tags zur Fehlerbehebung 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 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 Fügt eine neue Portweiterleitung hinzu:
  • 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 ein GPS-Standortsignal an den Emulator gesendet wird.

Sie können einen der folgenden geo-Befehle ausgeben, sobald ein virtuelles Gerät ausgeführt wird. Der von Ihnen eingegebene Standort wird vom Emulator festgelegt, indem ein simulierter Standortanbieter erstellt wird. Dieser Anbieter antwortet auf von Apps festgelegte Standort-Listener und stellt den Standort für LocationManager bereit. Jede App kann den Standortmanager abfragen, um den aktuellen GPS-Standort für das emulierte Gerät durch Aufrufen von LocationManager.getLastKnownLocation("gps") zu ermitteln.

geo fix longitude latitude [altitude] [satellites] [velocity] Sendet einen einfachen GPS-Standort an den Emulator. Geben Sie longitude und latitude in Dezimalgraden an. Verwenden Sie eine Zahl von 1 bis 12, um die Anzahl von satellites anzugeben, die zur Bestimmung der Position verwendet werden soll. Geben Sie altitude in Metern und velocity in Knoten an.
geo nmea sentence Sendet einen NMEA 0183-Satz an das emulierte Gerät, als wäre er von einem emulierten GPS-Modem gesendet worden. Beginne sentence mit „$GP“. Derzeit werden nur Sätze vom Typ "$GPGGA" und "$GPRCM" unterstützt. Das folgende Beispiel ist ein GPGGA-Satz (Global Positioning System Fix Data), der Zeit-, Positions- 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, die Codes enthalten, ist 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 ...] Es wird mindestens ein fiktiver Ereignistyp gesendet.
event codes type Listet die Ereigniscodes für den angegebenen Fake-Ereignistyp auf.
event send type[:code]:[value] [...] Sendet ein oder mehrere fiktive Ereignisse mit optionalen Codes und Codewerten.

Um genau herauszufinden, welches Ereignis gesendet werden soll, können Sie den Befehl adb verwenden, während Sie die Schaltflächen im Emulator manuell drücken.

Folgende Ereignisse werden beim Drücken der Ein/Aus-Taste 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, sende zwei EV_KEY-Ereignisse für Tastendruck und Tastenbelegung:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Sendet eine Zeichenfolge, die Tastendruck simuliert. Die Nachricht muss ein UTF-8-String sein. Unicode-Beiträge werden entsprechend der aktuellen Gerätetastatur umgekehrt zugeordnet und nicht unterstützte Zeichen werden automatisch verworfen.
Ein/Aus-Taste Beschreibung
power display Zeigt den Akku- und Ladegerätstatus an.
power ac {on|off} Legt den Wechselstatus für das Laden 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 Überprüft den Netzwerkstatus sowie die aktuelle Verzögerung und Geschwindigkeit.
network delay latency

Ändert die emulierte Netzwerklatenz.

Mit dem Emulator können Sie verschiedene Netzwerklatenzstufen simulieren, damit Sie die Anwendung in einer Umgebung testen können, die für tatsächliche Ausführungsbedingungen besser ist. Sie können beim Start des Emulators eine Latenzstufe oder einen Bereich festlegen oder die Latenz über die Console ändern, während die Anwendung im Emulator ausgeführt wird.

Das Netzwerk latency hat eines der folgenden Formate (Zahlen in Millisekunden):

Netzwerklatenzformat:

  • gprs: GPRS mit einem Latenzbereich von mindestens 150 und maximal 550.
  • edge: EDGE/EGPRS mit einem Latenzbereich von Minimum 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 Emulatorstart die Emulatoroption -netdelay mit einem unterstützten latency-Wert, wie in der obigen Liste unter Netzwerklatenzformat aufgeführt. Hier einige Beispiele:

emulator -netdelay gprs
emulator -netdelay 40,100

Wenn Sie Änderungen an der Netzwerkverzögerung während der Ausführung des Emulators vornehmen möchten, stellen Sie eine Verbindung zur Konsole her und verwenden Sie den Befehl netdelay mit einem unterstützten latency-Wert aus der obigen Liste 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 Geschwindigkeit über die Console ändern, während die Anwendung im Emulator ausgeführt wird.

Das Netzwerk speed hat eines der folgenden Formate (in Kilobit/s):

Format der Netzwerkgeschwindigkeit:

  • gsm: GSM/CSD mit einer Geschwindigkeit von 14,4 oben und 14,4 unten.
  • hscsd: HSCSD mit einer Geschwindigkeit von 14,4 oben und 43,2 unten.
  • gprs: GPRS mit einer Geschwindigkeit von 40,0 nach oben und 80,0 nach unten.
  • edge: EDGE/EGPRS mit einer Geschwindigkeit von 118,4 oben und 236,8 unten
  • umts: UMTS/3G mit einer Geschwindigkeit von 128, 0 nach oben und 1920 abwärts.
  • hsdpa: HSDPA mit einer Geschwindigkeit von 348, 0 nach oben und 14.400,0 nach unten.
  • lte: LTE mit einer Geschwindigkeit von 58.000 nach oben und 173.000 nach unten
  • evdo: EVDO mit einer Geschwindigkeit von 75.000 nach oben und 280.000 nach unten.
  • full: Unbegrenzte Geschwindigkeit, aber abhängig von der Verbindungsgeschwindigkeit des Computers.
  • num: Legt eine genaue Rate in Kilobit/s für Upload und Download fest.
  • up:down: Legt genaue Preise in Kilobit/s für den separaten Upload und Download fest.

Verwenden Sie zum Festlegen der Netzwerkgeschwindigkeit beim Start des Emulators die Emulatoroption -netspeed mit einem unterstützten speed-Wert, wie in der vorherigen Liste für das Netzwerkgeschwindigkeitsformat angegeben. Hier 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 speed-Wert aus der obigen Liste für das Netzwerkgeschwindigkeitsformat.

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 mit dem 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. Bei CDMA geben Sie eine Aboquelle und die Liste der bevorzugten Roaming-Nutzer an. Das Android-System behandelt simulierte Anrufe genauso wie tatsächliche Anrufe. Der Emulator unterstützt keine Anrufe.
gsm {call|accept|cancel|busy} phonenumber Die gsm-Parameter sind:
  • call: Simuliert einen eingehenden Anruf von phonenumber.
  • accept: Nimmt einen eingehenden Anruf von phonenumber an und ändert den Anrufstatus in active. Sie können einen Aufrufstatus nur dann in active ändern, wenn der aktuelle 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 dann in busy ändern, wenn der aktuelle Status waiting ist.
gsm {data|voice} state Der Befehl data state ändert den Status der GPRS-Datenverbindung und der Befehl data voice state den Status der GPRS-Sprachverbindung so:
  • unregistered: Kein Netzwerk verfügbar.
  • home: im lokalen Netzwerk, kein Roaming.
  • roaming: im Roaming-Netzwerk.
  • searching: Es wird nach Netzwerken gesucht.
  • denied: Nur Notrufe.
  • off: identisch mit unregistered.
  • on: identisch mit home.
gsm hold Ändert den Status eines Aufrufs in hold. Sie können einen Aufrufstatus nur dann in hold ändern, wenn der aktuelle Status active oder waiting ist.
gsm list Listet alle ein- und ausgehenden Anrufe mit ihrem Status auf.
gsm status Meldet den aktuellen GSM-Sprach-/Datenstatus. Die Werte sind die für die Befehle voice und data beschriebenen Werte.
gsm signal {rssi|ber} Ändert die gemeldete Signalstärke (RSSI) und die Bitfehlerrate (Ber) in den nächsten 15 Sekunden der Aktualisierung. In der folgenden Liste werden die Parameter und ihre Werte beschrieben:
  • Der rssi-Bereich ist 0 bis 31 und 99 für unbekannt.
  • Der ber-Bereich ist 0 bis 7 und 99 für unbekannt.
gsm signal-profile num Legt das Profil 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-Mobilfunkanbieters und deren Werte so enthält:
  • nv: Liest das Abo aus dem nichtflüchtigen RAM.
  • ruim: Liest Abo aus dem Removable User Identity Module (RUIM).
cdma prl_version version Gibt die aktuelle Version der Roaming-Liste (Preferred Roaming List, PRL) aus. Die Versionsnummer ist für die PRL-Datenbank bestimmt, die Informationen enthält, die während der Systemauswahl und des Erfassungsprozesses 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 im Bildschirm Virtuelle Sensoren auf den Tabs Beschleunigungsmesser und Zusätzliche Sensoren aufrufen und anpassen.
sensor status Listet alle Sensoren und ihren Status auf. Im Folgenden sehen Sie eine Beispielausgabe 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 werden für den Beschleunigungssensor die durch Doppelpunkte getrennten x-, y- und z-Werte festgelegt.
sensor set acceleration 2.23517e-07:9.77631:0.812348
SMS-Emulation Beschreibung
sms send sender-phone-number textmessage Erzeugt 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-Nachricht.

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

sms send 4085555555 hi there

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

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

Anweisungen zur Verwendung dieser Befehle finden Sie im folgenden Abschnitt über Fingerabdrucksimulation und -Validierung.

Fingerabdrucksimulation und -validierung

Abbildung 1: Bildschirm zur Authentifizierung per Fingerabdruck.

Mit dem Befehl finger kannst du die Fingerabdruckauthentifizierung für deine App simulieren und validieren. Du benötigst 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 Registrierungsanleitung.
  2. Richte deine App so ein, dass sie die Fingerabdruck-Authentifizierung akzeptiert. Nachdem du diese Einrichtung durchgeführt hast, wird auf deinem Gerät der Bildschirm zur Fingerabdruckauthentifizierung angezeigt.
  3. Während Ihre App den Bildschirm zur Fingerabdruckauthentifizierung anzeigt, rufen Sie die Konsole auf und geben Sie den Befehl finger touch und die von Ihnen erstellte Fingerabdruck-ID ein. Dies simuliert eine Berührung mit dem Finger.
  4. Geben Sie dann den Befehl finger remove ein, um das Entfernen des Fingers zu simulieren.

    Deine App sollte so reagieren, als ob ein Nutzer ihn berührt und dann den Finger vom Fingerabdrucksensor entfernt hätte.