Wysyłaj polecenia konsoli emulatora

Każde uruchomione urządzenie wirtualne udostępnia konsolę, która umożliwia wysyłanie zapytań dotyczących emulowanego środowiska urządzenia i sterowanie nim. W konsoli możesz na przykład zarządzać przekierowaniem portów, danymi sieciowymi i zdarzeniami telefonicznymi, gdy aplikacja działa w emulatorze.

Poniższe polecenia wymagają uruchomienia emulatora. Więcej informacji o uruchamianiu emulatora znajdziesz w artykułach Uruchamianie aplikacji przy użyciu emulatora Androida oraz Uruchamianie emulatora z poziomu wiersza poleceń.

Rozpoczynanie i zatrzymywanie sesji w konsoli

Aby uzyskać dostęp do konsoli i wpisać polecenia w oknie terminala, połącz się z portem konsoli i podaj token uwierzytelniania za pomocą telnet. Za każdym razem, gdy w konsoli wyświetli się OK, będzie można przyjąć polecenia. Nie ma typowego promptu.

Aby połączyć się z konsolą uruchomionego urządzenia wirtualnego:

  1. Otwórz okno terminala i wpisz następujące polecenie:
  2. telnet localhost console-port

    Tytuł okna emulatora zawiera numer portu konsoli, gdy aplikacja jest uruchomiona w osobnym oknie, ale nie w oknie narzędzia. Na przykład tytuł okna emulatora używającego portu 5554 w konsoli może mieć nazwę Pixel8_API_34:5554. Oprócz tego polecenie adb devices powoduje wyświetlenie listy uruchomionych urządzeń wirtualnych wraz z numerami portów konsoli. Więcej informacji znajdziesz w artykule o wysyłaniu zapytań dotyczących urządzeń.

    Uwaga: emulator nasłuchuje połączeń na portach od 5554 do 5585 i akceptuje tylko połączenia od localhost.

  3. Gdy w konsoli wyświetli się OK, wpisz polecenie auth auth_token.
  4. Zanim zaczniesz wpisywać polecenia konsoli, konsola emulatora wymaga uwierzytelnienia. auth_token musi być zgodny z zawartością pliku .emulator_console_auth_token w katalogu głównym.

    Jeśli taki plik nie istnieje, polecenie telnet localhost console-port utworzy plik zawierający losowo wygenerowany token uwierzytelniania. Aby wyłączyć uwierzytelnianie, usuń token z pliku .emulator_console_auth_token lub utwórz pusty plik, jeśli nie istnieje.

  5. Po nawiązaniu połączenia z konsolą wpisz polecenia konsoli.
  6. Wpisz help, help command lub help-verbose, aby wyświetlić listę poleceń konsoli i dowiedzieć się więcej o konkretnych poleceniach.

  7. Aby zamknąć sesję konsoli, wpisz quit lub exit.

Oto przykładowa sesja:

$ 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.

Informacje o poleceniach emulatora

W poniższej tabeli opisano polecenia konsoli emulatora wraz z ich parametrami i wartościami:

Tabela 1. Polecenia konsoli emulatora

Polecenia ogólne Opis
avd {stop|start|status|name} Wykonuje zapytania dotyczące urządzenia wirtualnego i nim zarządza oraz nim zarządza:
  • stop: zatrzymuje uruchamianie urządzenia.
  • start: rozpoczyna uruchamianie urządzenia.
  • status: wykonuje zapytanie o stan urządzenia wirtualnego, który może mieć wartość running lub stopped.
  • name: wykonuje zapytanie o nazwę urządzenia wirtualnego.
avd snapshot {list|save name|load name|delete name} Zapisuje i przywraca stan urządzenia w zrzutach w ten sposób:
  • list: zawiera listę wszystkich zapisanych zrzutów.
  • save name: zapisuje zrzut jako name.
  • load name: wczytuje nazwany zrzut.
  • delete name: usuwa nazwany zrzut.

Ten przykład zapisuje zrzut o nazwie firstactivitysnapshot:

avd snapshot save firstactivitysnapshot
fold Składa urządzenie, aby wyświetlić konfigurację z mniejszym ekranem, jeśli jest składane i obecnie rozłożone.
unfold Otwiera urządzenie, aby wyświetlić jego większą konfigurację, jeśli jest składane i obecnie złożone.
kill Zatrzymuje urządzenie wirtualne.
ping Sprawdza, czy urządzenie wirtualne jest uruchomione.
rotate Obraca AVD w lewo o 45 stopni.
Wyłącz emulator Opis
crash Powoduje awarię emulatora podczas uruchamiania aplikacji.
crash-on-exit Powoduje awarie emulatora przy zamykaniu aplikacji.
Tagi debugowania Opis
debug tags ...

Włącza lub wyłącza komunikaty debugowania pochodzące z określonych części emulatora. Parametr tags musi należeć do listy tagów debugowania, która pojawia się po wykonaniu polecenia emulator -help-debug-tags. Więcej informacji o opcji -help-debug-tags znajdziesz w tabeli najczęściej używanych opcji.

Poniższy przykład pozwala włączyć tag radio:

debug radio
Przekierowanie portu Opis
redir list Wyświetla listę bieżących przekierowań portów.
redir add protocol:host-port:guest-port Dodaje nowe przekierowanie portów w ten sposób:
  • protocol: musi to być tcp lub udp.
  • host-port: numer portu do otworzenia na hoście.
  • guest-port: numer portu, na który mają być kierowane dane w emulatorze.
redir del protocol:host-port Usuwa przekierowanie portów.
  • protocol: musi to być tcp lub udp.
  • host-port: numer portu do otworzenia na hoście.
Lokalizacja geograficzna Opis

Określa lokalizację geograficzną zgłaszaną aplikacjom uruchomionym w emulatorze, wysyłając do emulatora sygnał GPS.

Gdy tylko urządzenie wirtualne zostanie uruchomione, możesz uruchomić jedno z tych poleceń geo. Emulator ustawia podaną lokalizację, tworząc pozorowaną lokalizację. Ten dostawca odpowiada detektorom lokalizacji ustawionym przez aplikacje i przekazuje lokalizację do LocationManager. Każda aplikacja może wysłać zapytanie do menedżera lokalizacji, by uzyskać aktualną pozycję GPS dla emulowanego urządzenia, wywołując metodę LocationManager.getLastKnownLocation("gps").

geo fix longitude latitude [altitude] [satellites] [velocity] Wysyła do emulatora prosty sygnał GPS. Podaj longitude i latitude w stopniach dziesiętnych. Wpisz liczbę od 1 do 12, aby określić liczbę elementów satellites, która ma zostać użyta do określenia pozycji, i określ altitude w metrach oraz velocity w węzłach.
geo nmea sentence Wysyła zdanie NMEA 0183 do emulowanego urządzenia, tak jakby zostało wysłane z emulowanego modemu GPS. Rozpocznij sentence od „$GP”. Obecnie obsługiwane są tylko zdania „$GPGGA” i „$GPRCM”. W poniższym przykładzie jest to zdanie GPGGA (Global Positioning System Fix Data), które podaje czas, położenie i dane stałe dla odbiornika 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
Zdarzenia związane z fałszywym sprzętem Opis
event types Zawiera listę wszystkich fałszywych typów zdarzeń. W przypadku zdarzeń, które mają kody, ich liczba jest podana w nawiasach po prawej stronie.

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 ...] Wysyła co najmniej 1 fałszywy rodzaj zdarzenia.
event codes type Zawiera listę kodów zdarzeń określonego typu fałszywego zdarzenia.
event send type[:code]:[value] [...] Wysyła co najmniej 1 fałszywe wydarzenie z opcjonalnymi kodami i wartościami kodu.

Aby dowiedzieć się, które zdarzenie wysłać, możesz użyć polecenia adb, naciskając jednocześnie przyciski na emulatorze.

Są to zdarzenia generowane po naciśnięciu przycisku zasilania:

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
      
Aby na przykład symulować przytrzymanie przycisku zasilania, wyślij 2 zdarzenia EV_KEY związane z naciśnięciem klawisza i naciśnięciem klawisza:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message Wysyła ciąg znaków symulujący naciśnięcia klawiszy. Wiadomość musi być ciągiem znaków UTF-8. Posty w standardzie Unicode są mapowane wstecznie zgodnie z bieżącą klawiaturą urządzenia, a nieobsługiwane znaki są odrzucane bez powiadomienia.
Elementy sterujące stanem zasilania Opis
power display Wyświetla stan baterii i ładowarki.
power ac {on|off} Ustawia stan ładowania AC na on lub off.
power status {unknown|charging|discharging|not-charging|full} Zmienia stan baterii zgodnie z określonym ustawieniem.
power present {true|false} Ustawia stan obecności baterii.
power health {unknown|good|overheat|dead|overvoltage|failure} Określa stan baterii.
power capacity percent Ustawia stan pozostałej pojemności baterii jako procent od 0 do 100.
Stan połączenia sieciowego Opis
network status Sprawdza stan sieci oraz bieżące parametry opóźnienia i szybkości.
network delay latency

Zmienia emulowane opóźnienie sieciowe.

Emulator umożliwia symulację różnych poziomów opóźnień w sieci, dzięki czemu możesz przetestować aplikację w środowisku bardziej typowym dla rzeczywistych warunków działania. Możesz ustawić poziom lub zakres opóźnienia podczas uruchamiania emulatora albo zmienić czas oczekiwania, gdy aplikacja działa w emulatorze, za pomocą konsoli.

Sieć latency ma jeden z tych formatów (liczby są wyrażone w milisekundach):

Format opóźnienia sieciowego:

  • gprs: GPRS, który korzysta z zakresu czasu oczekiwania od 150 do 550 znaków.
  • edge: EDGE/EGPRS z zakresem czasu oczekiwania wynoszącym od 80 do 400 znaków.
  • umts: UMTS/3G z opóźnieniem w zakresie od 35 do 200.
  • none: brak opóźnienia.
  • num: emuluje określone opóźnienie w milisekundach.
  • min:max: emuluje określony zakres czasu oczekiwania.

Aby ustawić czas oczekiwania podczas uruchamiania emulatora, użyj opcji emulatora -netdelay z obsługiwaną wartością latency podaną na poprzedniej liście formatów opóźnienia sieciowego. Oto przykłady:

emulator -netdelay gprs
emulator -netdelay 40,100

Aby zmienić opóźnienie sieci, gdy emulator jest uruchomiony, połącz się z konsolą i użyj polecenia netdelay z obsługiwaną wartością latency z poprzedniej listy formatów opóźnienia sieciowego.

network delay gprs
network delay 40 100
network speed speed Emulator pozwala symulować różne szybkości przesyłania danych w sieci.

Możesz ustawić szybkość lub zakres transferu podczas uruchamiania emulatora albo zmienić ją za pomocą konsoli, gdy aplikacja działa w emulatorze.

Sieć speed ma jeden z tych formatów (liczba kilobitów/s):

Format szybkości sieci:

  • gsm: GSM/CSD, wykorzystujący szybkość 14,4 w górę i 14,4 w dół.
  • hscsd: HSCSD, który korzysta z szybkości 14,4 w górę i 43,2 w dół.
  • gprs: GPRS, który korzysta z szybkości 40,0 w górę i 80,0 w dół.
  • edge: EDGE/EGPRS z szybkością ustawioną na poziomie 118,4 w górę i 236,8 w dół.
  • umts: UMTS/3G, który korzysta z prędkości 128,0 w górę i 1920 w dół.
  • hsdpa: HSDPA, który korzysta z szybkości 348,0 w górę i 14 400,0 w dół.
  • lte: LTE, który działa z prędkością 58 tys. w górę i 173 000 w dół.
  • evdo: EVDO, który wykorzystuje prędkość od 75 000 do 280 000 w górę i 280 000 w dół.
  • full: szybkość bez ograniczeń, ale zależy od szybkości połączenia z Twoim komputerem.
  • num: ustawia dokładną szybkość przesyłania i pobierania (w kilobitach na sekundę).
  • up:down: ustawia dokładne szybkości przesyłania i pobierania oddzielnie (w kilobitach/s).

Aby ustawić szybkość sieci podczas uruchamiania emulatora, użyj opcji emulatora -netspeed z obsługiwaną wartością speed, jak w przypadku poprzedniej listy formatów szybkości sieci. Oto przykłady:

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

Aby zmienić szybkość sieci, gdy emulator jest uruchomiony, połącz się z konsolą i użyj polecenia network speed z obsługiwaną wartością speed z poprzedniej listy formatów szybkości sieci.

network speed 14.4 80
network capture {start|stop} file Wysyła pakiety do pliku. Na liście znajdziesz parametry i ich wartości:
  • start file: zaczyna wysyłać pakiety do określonego pliku.
  • stop file: zatrzymuje wysyłanie pakietów do określonego pliku.
Emulacja telefonii Opis
Emulator Androida zawiera własny modem GSM i CDMA, który pozwala symulować funkcje telefoniczne w emulatorze. W GSM możesz na przykład symulować przychodzące połączenia telefoniczne oraz nawiązywać i kończyć połączenia do transmisji danych. W przypadku CDMA należy podać źródło subskrypcji i preferowaną listę roamingową. System Android obsługuje symulowane połączenia dokładnie tak samo, jak rzeczywiste połączenia. Emulator nie obsługuje dźwięku połączeń.
gsm {call|accept|cancel|busy} phonenumber Parametry gsm:
  • call: imituje przychodzące połączenie telefoniczne z numeru phonenumber.
  • accept: odbiera połączenie przychodzące od użytkownika phonenumber i zmienia jego stan na active. Stan wywołania możesz zmienić na active tylko wtedy, gdy jego bieżący stan to waiting lub held.
  • cancel: kończy przychodzące połączenie telefoniczne z numeru phonenumber lub wychodzące.
  • busy: zamyka połączenie wychodzące z numerem phonenumber i zmienia stan połączenia na busy. Stan wywołania możesz zmienić na busy tylko wtedy, gdy jego bieżący stan to waiting.
gsm {data|voice} state Polecenie data state zmienia stan połączenia danych GPRS, a polecenie data voice state powoduje zmianę stanu połączenia głosowego GPRS w następujący sposób:
  • unregistered: brak dostępnej sieci.
  • home: w sieci lokalnej, bez roamingu.
  • roaming: w sieci roamingowej.
  • searching: szukam sieci.
  • denied: tylko połączenia alarmowe.
  • off: taki sam jak unregistered.
  • on: taki sam jak home.
gsm hold Zmienia stan wywołania na hold. Stan wywołania możesz zmienić na hold tylko wtedy, gdy jego bieżący stan to active lub waiting.
gsm list Zawiera listę wszystkich połączeń przychodzących i wychodzących oraz ich stanów.
gsm status Raportuje bieżący stan głosu/danych GSM. Wartości to wartości opisane dla poleceń voice i data.
gsm signal {rssi|ber} Zmienia siłę sygnału (rssi) i współczynnik błędów transmisji bitów (ber) w ciągu kolejnych 15 sekund aktualizacji. Na liście poniżej znajdziesz parametry i ich wartości:
  • Zakres rssi wynosi od 0 do 31 i 99 (nieznane).
  • Zakres ber wynosi od 0 do 7 i 99 (nieznane).
gsm signal-profile num Określa profil siły sygnału. num jest liczbą od 0 do 4.
cdma ssource source Ustawia bieżące źródło subskrypcji CDMA, gdzie source to sieciowa lista dozwolonych zawierająca subskrybentów operatora CDMA oraz ich wartości:
  • nv: odczytuje subskrypcję z nieulotnej pamięci RAM.
  • ruim: odczytuje subskrypcję z modułu Removable User Identity Module (RUIM).
cdma prl_version version Usuwa bieżącą wersję preferowanej listy roamingowych (PRL). Numer wersji dotyczy bazy danych PRL, która zawiera informacje używane podczas procesu wyboru i pozyskiwania systemu.
Zarządzaj czujnikami w emulatorze Opis
Polecenia te odnoszą się do tego, które czujniki są dostępne w AVD. Oprócz użycia polecenia sensor możesz wyświetlić i dostosować ustawienia emulatora na ekranie Czujniki wirtualne na kartach Akcelerometr i Dodatkowe czujniki.
sensor status Zawiera listę wszystkich czujników i ich stan. Oto przykładowe dane wyjściowe polecenia sensor status:
sensor get sensor-name Pobiera ustawienia dla zakresu: sensor-name. W tym przykładzie pobiera się wartość czujnika przyspieszenia:
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

Wartości acceleration rozdzielone dwukropkami(:) odnoszą się do współrzędnych x, y i z czujników wirtualnych.

sensor set sensor-name value-x:value-y:value-z Ustawia wartości dla funkcji sensor-name. W tym przykładzie czujnik przyspieszenia ustawia wartości x, y i Z rozdzielone dwukropkami.
sensor set acceleration 2.23517e-07:9.77631:0.812348
Emulacja SMS-ów Opis
sms send sender-phone-number textmessage Generowanie emulowanego przychodzącego SMS-a. Na liście znajdziesz parametry i ich wartości:
  • sender-phone-number: zawiera dowolny ciąg liczbowy.
  • textmessage: SMS.

Poniższy przykład wysyła wiadomość „Cześć” na numer telefonu 4085555555:

sms send 4085555555 hi there

Konsola przekazuje SMS-a do platformy Androida, co przekazuje go do aplikacji w emulatorze, która obsługuje SMS-y (np. do aplikacji Wiadomości). Jeśli przekażesz 10 numerów, aplikacja sformatuje je jako numer telefonu. Dłuższe lub krótsze ciągi liczbowe będą wyświetlać sposób ich wysłania.

Symulacja odcisku palca Opis
finger touch fingerprint-id Symuluje palec dotykający czujnika.
finger remove Symuluje usunięcie palca.

Instrukcje używania tych poleceń znajdziesz w sekcji o symulacji i walidacji odcisku palca.

Symulacja i weryfikacja odcisku palca

Rysunek 1. Ekran uwierzytelniania odciskiem palca.

Aby zasymulować i zweryfikować uwierzytelnianie odciskiem palca w swojej aplikacji, użyj polecenia finger. Aby to zrobić, potrzebujesz pakietu SDK Tools w wersji 24.3 lub nowszej oraz Androida w wersji 6.0 (poziom interfejsu API 23) lub nowszej.

Aby przeprowadzić symulację i zweryfikować uwierzytelnianie odciskiem palca, wykonaj te czynności:

  1. Jeśli nie masz jeszcze identyfikatora odcisku palca, zarejestruj nowy odcisk palca w emulatorze. Aby to zrobić, wybierz Ustawienia > Zabezpieczenia > Odcisk palca, i postępuj zgodnie z instrukcjami rejestracji.
  2. Skonfiguruj aplikację tak, aby akceptowała uwierzytelnianie odciskiem palca. Po zakończeniu konfiguracji na urządzeniu wyświetli się ekran uwierzytelniania odciskiem palca.
  3. Gdy aplikacja wyświetli ekran uwierzytelniania odciskiem palca, otwórz konsolę i wpisz polecenie finger touch oraz utworzony identyfikator odcisku palca. Symuluje dotknięcie palca.
  4. Następnie wpisz polecenie finger remove, aby zasymulować usuwanie palca.

    Aplikacja powinna reagować tak, jakby użytkownik dotknął, a potem wyjął palec z czytnika linii papilarnych.