Uruchamianie emulatora z poziomu wiersza poleceń

Pakiet SDK na Androida zawiera emulator urządzeń z Androidem, czyli urządzenie wirtualne, które działa na komputerze. Emulator Androida pozwala tworzyć i testować aplikacje na Androida bez użycia fizycznego urządzenia.

Na tej stronie opisujemy funkcje wiersza poleceń, których możesz używać z emulatorem Androida. Informacje o korzystaniu z interfejsu emulatora Androida znajdziesz w artykule Uruchamianie aplikacji przy użyciu emulatora Androida.

Uruchom emulator

Uruchom emulator za pomocą polecenia emulator albo zamiast uruchamiać projekt lub uruchamiać za pomocą Menedżera AVD.

Podstawowa składnia wiersza poleceń uruchamiana z poziomu wiersza poleceń terminala:

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

lub

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

Jeśli na przykład uruchomisz emulator w Android Studio na komputerze Mac, domyślny wiersz poleceń będzie wyglądać tak:

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

Opcje uruchamiania możesz określić podczas uruchamiania emulatora, ale nie po jego uruchomieniu.

Aby wyświetlić listę nazw AVD, wpisz to polecenie:

emulator -list-avds

Użyj tej opcji, aby wyświetlić listę nazw AVD z katalogu głównego Androida. Możesz zastąpić domyślny katalog główny, ustawiając zmienną środowiskową ANDROID_SDK_HOME określającą katalog główny katalogu specyficznego dla użytkownika, w którym przechowywane są wszystkie konfiguracje i treści AVD.

Przed uruchomieniem urządzenia wirtualnego lub w ustawieniach użytkownika systemu operacyjnego możesz ustawić zmienną środowiskową w oknie terminala. np. w pliku .bashrc w Linuksie.

Aby zatrzymać emulator Androida, zamknij jego okno.

Instalowanie aplikacji

Aplikację możesz zainstalować nie tylko za pomocą Androida Studio lub interfejsu emulatora, ale także na urządzeniu wirtualnym, używając narzędzia adb.

Aby zainstalować, uruchomić i przetestować aplikację za pomocą adb, wykonaj te ogólne czynności:

  1. Utwórz i spakuj aplikację do pliku APK zgodnie z opisem w sekcji Tworzenie i uruchamianie aplikacji.
  2. Uruchom emulator z wiersza poleceń w sposób opisany w poprzedniej sekcji, korzystając z wszelkich niezbędnych opcji uruchamiania.
  3. Zainstaluj aplikację za pomocą adb.
  4. Uruchom i przetestuj aplikację za pomocą emulatora.
    Gdy działa emulator, możesz używać konsoli emulatora do wydawania poleceń w razie potrzeby.

Aby odinstalować aplikację, zrób to tak jak na urządzeniu z Androidem.

Urządzenie wirtualne zachowuje aplikację i jej dane o stanie po ponownym uruchomieniu na partycji dysku danych użytkownika (userdata-qemu.img). Aby wyczyścić te dane, uruchom emulator z opcją -wipe-data lub wyczyść dane w narzędziu AVD Manager. Więcej informacji o partycji danych użytkownika i innym miejscu na dane znajdziesz w kolejnej sekcji.

Uwaga: narzędzie adb postrzega urządzenie wirtualne jako rzeczywiste urządzenie fizyczne. Z tego powodu konieczne może być użycie flagi -d w przypadku typowych poleceń adb, takich jak install. Flaga -d umożliwia określenie, które z połączonych urządzeń ma być celem polecenia. Jeśli nie określisz -d, emulator kieruje reklamy na pierwsze urządzenie na liście.

Omówienie domyślnych katalogów i plików

Emulator wykorzystuje powiązane pliki, z których najważniejsze są system AVD i katalogi danych. Podczas określania opcji wiersza poleceń warto znać strukturę katalogów i pliki emulatora, ale zwykle nie musisz zmieniać domyślnych katalogów ani plików.

Emulator Androida korzysta z hipernadzorcy QEMU (Szybki emulator). Początkowe wersje emulatora Androida używały QEMU 1 (złota rybka), a nowsze – QEMU 2 (ranchu).

Katalog systemu AVD

Katalog systemu zawiera obrazy systemu Android, których emulator wykorzystuje do symulowania systemu operacyjnego. W tym katalogu znajdują się przeznaczone tylko do odczytu pliki przeznaczone tylko do odczytu, które są współużytkowane przez wszystkie komponenty AVD tego samego typu, w tym na poziomie interfejsu API, architekturze procesora i wersji Androida. Domyślne lokalizacje to:

  • macOS i 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\

Gdzie:

  • apiLevel to numeryczny poziom interfejsu API lub litera dla wersji testowej. Na przykład android-M oznacza wersję testową Androida Marshmallow. Po wersji został on zmieniony na poziom API 23 oznaczony przez android-23.
  • variant to nazwa odpowiadająca konkretnym funkcjom zaimplementowanym przez obraz systemu. Na przykład google_apis lub android-wear.
  • arch to docelowa architektura procesora. Przykład: x86.

Aby podać inny katalog systemowy na potrzeby AVD, użyj opcji -sysdir.

Emulator odczytuje z katalogu systemowego te pliki:

Tabela 1. Pliki katalogu systemowego odczytywane przez emulator Androida

Plik Opis Opcja określania innego pliku
kernel-qemu lub kernel-ranchu Binarny obraz jądra systemu AVD. kernel-ranchu to najnowsza wersja emulatora QEMU 2. -kernel
ramdisk.img Obraz partycji rozruchu. Jest to podzbiór system.img wczytany przez jądro przed podłączeniem obrazu systemu. Zwykle zawiera on tylko kilka plików binarnych i skryptów inicjujących. -ramdisk
system.img Początkowa wersja obrazu systemu dostępna tylko do odczytu. W szczególności chodzi o partycję zawierającą biblioteki systemowe oraz dane odpowiadające poziomowi interfejsu API i wariantowi. -system
userdata.img Początkowa wersja partycji danych, wyświetlana w emulowanym systemie jako data/ i zawierająca wszystkie dostępne do zapisu dane dla AVD. Emulator używa tego pliku, gdy tworzysz nowy komponent AVD lub używasz opcji ‑wipe-data. Więcej informacji znajdziesz w opisie pliku userdata-qemu.img w następnej sekcji. -initdata
-init-data

Katalog danych AVD

Katalog danych AVD, nazywany również katalogiem treści, jest przypisany do pojedynczej instancji AVD i zawiera wszystkie możliwe do modyfikacji dane dotyczące tego elementu.

Lokalizacja domyślna to ta, gdzie name to nazwa AVD:

  • macOS i Linux – ~/.android/avd/name.avd/
  • Microsoft Windows XP – C:\Documents and Settings\user\.android\name.avd\
  • Windows Vista i nowszy – C:\Users\user\.android\name.avd\

Aby wskazać inny katalog danych AVD, użyj opcji -datadir.

Poniższa tabela zawiera listę najważniejszych plików w tym katalogu:

Tabela 2. Ważne pliki w katalogu danych AVD

Plik Opis Opcja określania innego pliku
userdata-qemu.img

Zawartość partycji danych, wyświetlana w emulowanym systemie jako data/. Gdy tworzysz nowy AVD lub używasz opcji -wipe-data do przywrócenia jego ustawień fabrycznych, emulator kopiuje plik userdata.img w katalogu systemowym, aby go utworzyć.

Każda instancja urządzenia wirtualnego korzysta z obrazu danych użytkownika z możliwością zapisu do przechowywania danych dotyczących użytkownika i sesji. Służy on np. do przechowywania danych, ustawień, baz danych i plików zainstalowanych przez użytkownika. Każdy użytkownik ma inny katalog ANDROID_SDK_HOME, w którym przechowywane są katalogi danych utworzonych przez niego plików AVD. Każdy AVD ma 1 plik userdata-qemu.img.

-data
cache.img Obraz partycji pamięci podręcznej, który w emulowanym systemie wyświetla się jako cache/. Jeśli utworzysz komponent AVD lub użyjesz opcji -wipe-data, pole jest puste. Zawiera tymczasowe pliki pobierania i wypełnia go menedżer pobierania, a czasami system. Przeglądarka używa jej np. do zapisywania pobranych stron internetowych i obrazów w pamięci podręcznej, gdy działa emulator. Gdy wyłączysz urządzenie wirtualne, plik zostanie usunięty. Możesz utrwalić plik przy użyciu opcji -cache. -cache
sdcard.img

(Opcjonalnie) Obraz partycji karty SD, który umożliwia symulowanie działania karty SD na urządzeniu wirtualnym. Plik obrazu karty SD możesz utworzyć w AVD Manager lub za pomocą narzędzia mksdcard. Plik jest przechowywany na komputerze programistycznym i musi być wczytywany przy uruchamianiu.

Do określenia pliku AVD w Menedżerze AVD możesz użyć automatycznie zarządzanego pliku karty SD lub pliku utworzonego za pomocą narzędzia mksdcard. Plik sdcard.img powiązany z narzędziem AVD możesz wyświetlić w Menedżerze AVD. Opcja -sdcard zastępuje plik karty SD podany w komponencie AVD.

Gdy urządzenie wirtualne działa, możesz przeglądać i wysyłać pliki na symulowaną kartę SD oraz kopiować je i usuwać, korzystając z interfejsu emulatora lub narzędzia adb. Nie można usunąć symulowanej karty SD z działającego urządzenia wirtualnego.

Aby przed wczytaniem skopiować pliki na kartę SD, zamontuj plik obrazu jako urządzenie pętli, a następnie skopiuj pliki. Możesz też użyć narzędzia, takiego jak pakiet mtools, aby skopiować pliki bezpośrednio do obrazu.

Emulator traktuje plik jako pulę bajtów, więc format karty SD nie ma znaczenia.

Opcja -wipe-data nie ma wpływu na ten plik. W celu wyczyszczenia pliku usuń go, a następnie utwórz go ponownie za pomocą narzędzia AVD Manager lub mksdcard. Zmiana rozmiaru pliku powoduje też usunięcie go i utworzenie nowego.

-sdcard

Wyświetl listę katalogów i plików używanych przez emulator

Lokalizacje plików możesz sprawdzić na 2 sposoby:

  • Użyj opcji -verbose lub -debug init, gdy uruchamiasz emulator z poziomu wiersza poleceń. Przyjrzyj się wynikom.
  • Aby wyświetlić katalog domyślny, użyj polecenia emulator -help-option. Przykład:
    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.

Opcje uruchamiania wiersza poleceń

W tej sekcji wymienione są opcje, które możesz podać w wierszu poleceń przy uruchamianiu emulatora.

Uwaga: emulator Androida jest stale rozwijany, aby zwiększyć jego niezawodność. Stan zgłoszonych problemów związanych z różnymi opcjami wiersza poleceń oraz zgłaszanie błędów znajdziesz w narzędziu do śledzenia problemów z Androidem.

Najczęściej używane opcje

W tabeli poniżej znajdziesz opcje uruchamiania z poziomu wiersza poleceń, których możesz używać częściej:

Tabela 3. Często używane opcje wiersza poleceń

Opcja wiersza poleceń Opis
Szybkie uruchamianie
-no-snapshot-load Uruchamia „na zimno” i zapisuje stan emulatora przy zamykaniu.
-no-snapshot-save Jeśli to możliwe, przeprowadza szybkie uruchomienie, ale nie zapisuje stanu emulatora przy zamykaniu.
-no-snapshot Całkowicie wyłącza funkcję szybkiego uruchamiania i nie wczytuje ani nie zapisuje stanu emulatora.
Sprzęt
-camera-back mode
-camera-front mode
Ustawia tryb emulacji aparatu z tyłu lub z przodu. Spowoduje to zastąpienie wszystkich ustawień kamery w AVD.

mode może mieć dowolną z tych wartości:

  • emulated – emulator w oprogramowaniu symuluje kamerę.
  • webcamn – emulator korzysta z kamery internetowej podłączonej do komputera, którego używasz do programowania, (wskazaną liczbę). Aby zobaczyć listę kamer internetowych, wybierz -webcam-list. Przykład: webcam0.
  • none – wyłącza kamerę w urządzeniu wirtualnym.

Przykład:

emulator @Nexus_5X_API_23 -camera-back webcam0

-webcam-list Zawiera listę kamer internetowych na komputerze programistycznym, które można emulować. Przykład:
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'

W tym przykładzie pierwszy webcam0 to nazwa użyta w wierszu poleceń. Druga wartość webcam0 to nazwa używana przez system operacyjny na komputerze programistycznym. Druga nazwa różni się w zależności od systemu operacyjnego.

Od wersji 25.2.4 narzędzi SDK nazwa AVD jest wymagana.

Obrazy dysków i pamięć
-memory size

Określa rozmiar fizycznej pamięci RAM – od 128 do 4096 MB. Na przykład:

emulator @Nexus_5X_API_23 -memory 2048

Ta wartość zastępuje ustawienie AVD.

-sdcard filepath Określa nazwę pliku i ścieżkę do pliku obrazu partycji karty SD. Na przykład:

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

Jeśli plik się nie znajdzie, emulator się uruchomi, ale bez karty SD. Polecenie zwraca ostrzeżenie Brak obrazu karty SD.

Jeśli nie określisz tej opcji, domyślną wartością w katalogu danych będzie sdcard.img, chyba że AVD określa coś innego. Więcej informacji na temat emulowanych kart SD znajdziesz w sekcji Katalog danych AVD.

-wipe-data Powoduje usunięcie danych użytkownika i skopiowanie danych z początkowego pliku danych. Ta opcja powoduje wyczyszczenie danych urządzenia wirtualnego i przywrócenie ich do stanu z pierwszego zdefiniowania. Wszystkie zainstalowane aplikacje i ustawienia zostaną usunięte. Na przykład:

emulator @Nexus_5X_API_23 -wipe-data

Domyślnie plik danych użytkownika to userdata-qemu.img, a początkowy plik danych to userdata.img. Oba te pliki znajdują się w katalogu danych. Opcja -wipe-data nie ma wpływu na plik sdcard.img. Więcej informacji o danych użytkownika znajdziesz w sekcji Omówienie domyślnych katalogów i plików.

Debuguj
-debug tags Włącza lub wyłącza wyświetlanie komunikatów debugowania w przypadku co najmniej jednego tagu. Kolejne tagi rozdziel spacją, przecinkiem lub kolumną. Na przykład:

$ emulator @Nexus_5X_API_23 -debug init,metrics

Aby wyłączyć tag, umieść przed nim łącznik (-). Na przykład przykład poniżej pokazuje wszystkie komunikaty debugowania oprócz tych związanych z gniazdami sieciowymi i wskaźnikami:

-debug all,-socket,-metrics

Aby skorzystać z listy tagów i opisów, użyj opcji -help-debug-tags. Na przykład:

emulator -help-debug-tags

Domyślne tagi debugowania możesz zdefiniować w zmiennej środowiskowej ANDROID_VERBOSE. Zdefiniuj tagi, których chcesz używać, na liście rozdzielanej przecinkami. Ten przykład pokazuje, jak określić tagi socket i gles:

ANDROID_VERBOSE=socket,gles

Jest to odpowiednik użycia:

-debug-socket -debug-gles

lub

-debug socket,gles

-debug-tag
-debug-no-tag
Włącza określony typ komunikatu debugowania. Aby wyłączyć typ wiadomości debugowania, użyj formularza no. Na przykład:

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

Listę tagów znajdziesz w poleceniu emulator -help-debug-tags.

-logcat logtags Włącza wyświetlanie komunikatów Logcat dla co najmniej jednego tagu i zapisuje je w oknie terminala. Na przykład to polecenie włącza komunikaty o błędach ze wszystkich komponentów:

emulator @Nexus_5X_API_23 -logcat *:e

logtags używa tego samego formatu co polecenie adb logcat logtags. Wpisz adb logcat -help, aby uzyskać więcej informacji. Jest to lista filtrów logu w formacie componentName:logLevel rozdzielonych spacjami lub przecinkami. componentName to gwiazdka wieloznaczna (*) lub nazwa komponentu, np. ActivityManager, SystemServer, InputManager lub WindowManager.

logLevel to jedna z tych wartości:

  • v – szczegółowe
  • d – debugowanie
  • i – informacje
  • w – poziom rejestrowania ostrzeżeń
  • e – błąd
  • s – cichy

Ten przykład zawiera komunikaty komponentu GSM z informacjami na poziomie dziennika:

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

Jeśli nie podasz opcji -logcat w wierszu poleceń, emulator szuka zmiennej środowiskowej ANDROID_LOG_TAGS. Jeśli zasada ANDROID_LOG_TAGS jest zdefiniowana z prawidłową wartością logtags i nie jest pusta, emulator używa jej wartości, aby domyślnie włączyć dane wyjściowe Logcat w terminalu. Możesz też przekierować te same lub inne komunikaty logu do terminala za pomocą funkcji adb.

Więcej informacji o Logcat i adb znajdziesz w artykułach na temat narzędzia wiersza poleceń Logcat oraz artykułów na temat wyświetlania i zapisywania logów przy użyciu Logcat, klas Log oraz wydania poleceń adb.

-show-kernel Wyświetla komunikaty debugowania jądra w oknie terminala. Na przykład:

emulator @Nexus_5X_API_23 -show-kernel

Jednym z zastosowań tej opcji jest sprawdzenie, czy proces uruchamiania działa prawidłowo.

-verbose Drukuje komunikaty inicjowania emulatora do okna terminala. Na przykład:

emulator @Nexus_5X_API_23 -verbose

Pokazuje, które pliki i ustawienia są wybierane podczas uruchamiania urządzenia wirtualnego zdefiniowanego w AVD. Ta opcja działa tak samo jak określenie -debug-init.

Sieć
-dns-server servers Korzysta z określonych serwerów DNS. servers to rozdzielona przecinkami lista maksymalnie 4 nazw serwerów DNS lub adresów IP. Na przykład:
emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255

Domyślnie emulator próbuje wykryć używane serwery DNS i konfiguruje specjalne aliasy w emulowanej sieci zapory sieciowej, aby umożliwić systemowi Android bezpośrednie łączenie się z serwerami. Użyj opcji -dns-server, aby podać inną listę serwerów DNS.

-http-proxy proxy Wszystkie połączenia TCP przez określony serwer proxy HTTP/HTTPS. Jeśli emulator musi łączyć się z internetem przez serwer proxy, możesz skonfigurować odpowiednie przekierowanie, korzystając z tej opcji lub zmiennej środowiskowej http_proxy. Na przykład:

emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy może być jedną z tych wartości:

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

Prefiks http:// można pominąć.

Jeśli ta opcja nie zostanie podana, emulator wyszukuje zmienną środowiskową http_proxy i automatycznie używa dowolnej wartości pasującej do formatu proxy. Więcej informacji znajdziesz w sekcji o korzystaniu z emulatora w połączeniu z serwerem proxy.

-netdelay delay

Ustawia emulację opóźnienia sieci na jedną z tych wartości delay w milisekundach:

  • gsm – GSM/CSD (min. 150, maks. 550).
  • hscsd – HSCSD (min. 80, maks. 400).
  • gprs – GPRS (min. 35, maks. 200).
  • edge – EDGE/EGPRS (min. 80, maks. 400).
  • umts – UMTS/3G (min. 35, maks. 200).
  • hsdpa – HSDPA (min. 0, maks. 0).
  • lte – LTE (min. 0, maks. 0).
  • evdo – EVDO (min. 0, maks. 0).
  • none – brak czasu oczekiwania, wartość domyślna (min. 0, maks. 0).
  • num – określa dokładny czas oczekiwania.
  • min:max – określa minimalne i maksymalne opóźnienia.

Przykład:

emulator @Nexus_5X_API_23 -netdelay gsm

Emulator obsługuje ograniczanie przepustowości sieci oraz wyższe opóźnienia połączenia. Możesz go zdefiniować w konfiguracji karnacji lub za pomocą opcji ‑netspeed i -netdelay.

-netfast Wyłącza ograniczanie przepustowości sieci. Na przykład:

emulator @Nexus_5X_API_23 -netfast

Ta opcja działa tak samo jak określenie -netspeed full -netdelay none. To są wartości domyślne tych opcji.

-netspeed speed

Ustawia emulację szybkości sieci. Określa maksymalną szybkość przesyłania i pobierania w sieci, korzystając z jednej z tych wartości speed w kb/s:

  • gsm – GSM/CSD (góra: 14.4, dół: 14.4).
  • hscsd – HSCSD (wzrost: 14.4, dół: 57,6).
  • gprs – GPRS (góra: 28,8, dół: 57,6).
  • edge – EDGE/EGPRS (w górę: 473.6, w dół: 473,6).
  • umts – UMTS/3G (w górę: 384,0, w dół: 384,0).
  • hsdpa – HSDPA (wzrost: 5760,0, dół: 13 980,0).
  • lte – LTE (wzrost: 58 000, dół: 173 000).
  • evdo – EVDO (wzrost: 75 000, dół: 280 000).
  • full – brak limitu, wartość domyślna (góra: 0,0, dół: 0,0).
  • num – określa szybkość wysyłania i pobierania.
  • up:down – określa poszczególne szybkości zwiększania i zmniejszania szybkości.

Przykład:

emulator @Nexus_5X_API_23 -netspeed edge

Emulator obsługuje ograniczanie przepustowości sieci oraz wyższe opóźnienia połączenia. Możesz go zdefiniować w konfiguracji karnacji lub za pomocą opcji ‑netspeed i -netdelay.

-port port Ustawia numer portu TCP, który jest używany przez konsolę i adb. Na przykład:

emulator @Nexus_5X_API_23 -port 5556

Wartość domyślna to 5554 w przypadku pierwszej instancji urządzenia wirtualnego działającej na Twoim maszynie. Urządzenie wirtualne zajmuje zwykle parę sąsiadujących portów: port konsoli i port adb. Konsola pierwszego urządzenia wirtualnego działającego na danej maszynie korzysta z portu 5554 konsoli i portu 5555 adb. Kolejne instancje używają numerów portów zwiększanych o 2. np. 5556/5557, 5558/5559 itd. Zakres wynosi od 5554 do 5682, co pozwala na 64 równoczesne urządzenia wirtualne.

Przypisania portów są często takie same jak określenie -ports port,{port + 1}. Domena {port + 1} musi być bezpłatna i zarezerwowana dla domeny adb. Jeśli którykolwiek z portów konsoli lub adb jest już używany, emulator się nie uruchomi.

Opcja ‑port podaje porty i numery seryjne używane przez urządzenie wirtualne i ostrzega, jeśli wystąpią problemy z podanymi przez Ciebie wartościami. W interfejsie emulatora numer portu konsoli wyświetla się w tytule okna. Aby wyświetlić numer portu adb, wybierz Pomoc > Informacje.

Pamiętaj, że jeśli wartość port nie jest parzysta i mieści się w zakresie od 5554 do 5584, urządzenie wirtualne uruchomi się, ale nie będzie widoczne, gdy użyjesz polecenia adb devices, jeśli adb server rozpoczyna się po emulatorze. Z tego powodu zalecamy użycie parzystego numeru portu w konsoli.

-ports
console-port,adb-port
Określa porty TCP używane przez konsolę i adb. Na przykład:

emulator @Nexus_5X_API_23 -ports 5556,5559

Prawidłowy zakres portów to od 5554 do 5682, co pozwala na używanie 64 równoczesnych urządzeń wirtualnych. Opcja -ports informuje, których portów i numerów seryjnych używa instancja emulatora, i ostrzega w przypadku problemów z podanymi przez Ciebie wartościami.

Zamiast tego zalecamy używanie opcji -port, jeśli jest to możliwe. Opcja -ports jest dostępna w przypadku konfiguracji sieci, które wymagają specjalnych ustawień.

Więcej informacji o konfigurowaniu konsoli i portów adb znajdziesz w sekcji -port.

-tcpdump filepath Przechwytuje pakiety sieciowe i zapisuje je w pliku. Na przykład:

emulator @Nexus_5X_API_23 -tcpdump /path/dumpfile.cap

Użyj tej opcji, aby rozpocząć przechwytywanie wszystkich pakietów sieciowych wysyłanych przez wirtualną sieć LAN Ethernet emulatora. Następnie możesz go przeanalizować za pomocą narzędzia takiego jak Wireshark.

Pamiętaj, że ta opcja wychwytuje wszystkie pakiety Ethernet i nie jest ograniczona do połączeń TCP.

System
-accel mode Konfiguruje akcelerację maszyny wirtualnej emulatora. Na przykład:

emulator @Nexus_5X_API_23 -accel auto

Emulacja przyspieszona działa tylko w przypadku obrazów systemowych x86 i x86_64. W systemie Linux korzysta z KVM. W systemach Windows i macOS korzysta z procesora Intel i sterownika Intel HAXM. Ta opcja jest ignorowana, jeśli nie emulujesz urządzeń x86 ani x86_64.

Prawidłowe wartości pola mode to:

  • auto – określa automatycznie, czy przyspieszenie jest obsługiwane, i używa go, gdy to możliwe (domyślnie).
  • off – całkowicie wyłącza przyspieszenie, co przydaje się przede wszystkim do debugowania.
  • on – wymusza przyspieszenie. Jeśli KVM lub HAXM nie są zainstalowane lub nie można ich używać, emulator się nie uruchomi i wyświetli komunikat o błędzie.

Więcej informacji znajdziesz w artykule o konfigurowaniu akceleracji sprzętowej emulatora Androida.

-accel-check Sprawdza, czy jest zainstalowany hipernadzorca wymagany do akceleracji maszyny wirtualnej emulatora (HAXM lub KVM). Na przykład:

emulator -accel-check

Więcej informacji znajdziesz w artykule Sprawdzanie, czy zainstalowany jest hipernadzorca.

-engine engine

Określa mechanizm emulatora:

  • auto – automatycznie wybiera wyszukiwarkę (domyślnie).
  • classic – używa starszego silnika QEMU 1.
  • qemu2 – używa nowszego silnika QEMU 2.

Na przykład:

emulator @Nexus_5X_API_23 -engine auto

Funkcja automatycznego wykrywania powinna wybrać wartość, która zapewnia największą wydajność podczas emulacji konkretnego AVD. Używaj opcji -engine tylko do debugowania i porównywania.

-gpu mode Wybiera tryb emulacji GPU. Na przykład:

emulator @Nexus_5X_API_23 -gpu swiftshader_indirect

Więcej informacji znajdziesz w artykule Konfigurowanie akceleracji graficznej.

-no-accel Wyłącza akcelerator emulatora maszyny wirtualnej przy korzystaniu z obrazu systemu x86 lub x86_64. Przydaje się tylko do debugowania i działa tak samo jak określenie atrybutu -accel off. Na przykład:

emulator @Nexus_5X_API_23 -no-accel

Więcej informacji znajdziesz w artykule o konfigurowaniu akceleracji sprzętowej emulatora Androida.

-nojni
-no-jni
Wyłącza rozszerzone testy interfejsu natywnego Java (JNI) w środowisku wykonawczym Android Dalvik lub ART. Na przykład:

emulator @Nexus_5X_API_23 -nojni

Po uruchomieniu urządzenia wirtualnego rozszerzone testy JNI są domyślnie włączone. Więcej informacji znajdziesz w artykule ze wskazówkami dotyczącymi JNI.

-selinux {disabled|permissive} Ustawia moduł zabezpieczeń Security- Enhanced Linux (SELinux) na tryb disabled lub permissive w systemie operacyjnym Linux. Na przykład:

me-linux$ emulator @Nexus_5X_API_23 -selinux permissive

Domyślnie SELinux działa w trybie enforcing, co oznacza, że wymuszana jest zasada zabezpieczeń. Tryb permissive wczytuje zasadę SELinux, ale jej nie wymusza. Ta opcja powoduje rejestrowanie tylko naruszeń zasad. Tryb disabled wyłącza obsługę jądra na potrzeby SELinux.

-timezone timezone

Ustawia strefę czasową urządzenia wirtualnego na timezone zamiast strefy czasowej hosta. Na przykład:

emulator @Nexus_5X_API_23 -timezone Europe/Paris

Domyślnie emulator używa strefy czasowej komputera, którego używasz do programowania. Użyj tej opcji, aby określić inną strefę czasową lub jeśli automatyczne wykrywanie nie działa prawidłowo. Wartość timezone musi mieć format zoneinfo, czyli area/location lub area/subarea/location. Na przykład:

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

Podana strefa czasowa musi znajdować się w bazie danych Zoneinfo.

-version Wyświetla numer wersji emulatora. Na przykład:

emulator @Nexus_5X_API_23 -version

lub

emulator -version

Interfejs użytkownika
-no-boot-anim Wyłącza animację podczas uruchamiania emulatora, aby przyspieszyć uruchamianie. Na przykład:

emulator @Nexus_5X_API_23 -no-boot-anim

Na wolniejszych komputerach ta opcja może znacznie przyspieszyć sekwencję uruchamiania.

-screen mode Ustawia tryb emulacji ekranu dotykowego. Na przykład:

emulator @Nexus_5X_API_23 -screen no-touch

mode może mieć dowolną z tych wartości:

  • touch – emuluje ekran dotykowy (domyślnie).
  • multi-touch – emuluje ekran wielodotykowy.
  • no-touch – wyłącza emulację ekranu dotykowego i ekranu wielodotykowego.

Opcje zaawansowane

Podane w poniższej tabeli opcje uruchamiania wiersza poleceń są dostępne, ale przeciętny deweloper aplikacji nie używa ich często.

W opisach katalog roboczy to bieżący katalog w terminalu, w którym wpisujesz polecenia. Informacje o katalogu i katalogu danych systemu AVD oraz o plikach w nich znajdziesz w sekcji poświęconej domyślnym katalogom i plikom.

Niektóre z nich są odpowiednie dla zewnętrznych deweloperów aplikacji, a inne są używane głównie przez deweloperów platform. Deweloperzy aplikacji tworzą aplikacje na Androida i uruchamiają je na określonych urządzeniach. Programiści platformy pracują na systemie Android i uruchamiają go w emulatorze bez wstępnie utworzonego AVD.

Tabela 4. Zaawansowane opcje wiersza poleceń

Opcja zaawansowana Krótki opis
-bootchart timeout

Włącza schematy rozruchowe z czasem oczekiwania w sekundach. Niektóre obrazy systemu Android mają zmodyfikowany system inicjujący, który jest zintegrowany z programem rozruchowym. Za pomocą tej opcji możesz przekazać systemowi czas oczekiwania na uruchomienie. Jeśli w systemie inicjującym nie jest włączony program rozruchowy, opcja nie przyniesie żadnego efektu. Ta opcja jest przydatna głównie dla deweloperów platform, a nie zewnętrznych deweloperów aplikacji.

Na przykład:

emulator @Nexus_5X_API_23 -bootchart 120
-cache filepath

Określa plik obrazu partycji pamięci podręcznej. Zawiera nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu danych, aby skonfigurować trwały plik pamięci podręcznej. Jeśli plik nie istnieje, emulator utworzy go jako pusty plik.

Na przykład:

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

Jeśli nie użyjesz tej opcji, domyślnie będzie to plik tymczasowy o nazwie cache.img. Więcej informacji znajdziesz w katalogu danych AVD.

-cache-size size

Ustawia rozmiar partycji pamięci podręcznej w MB.

Na przykład:

emulator @Nexus_5X_API_23 -cache-size 1000

Jeśli nie określisz tej opcji, domyślnie przyjęta zostanie wartość 66 MB. Zwykle większość deweloperów aplikacji nie potrzebuje tej opcji, chyba że pobiera bardzo duże pliki, które są większe niż domyślna pamięć podręczna. Więcej informacji o pliku pamięci podręcznej znajdziesz w artykule Katalog danych AVD.

-data filepath

Ustawia plik obrazu partycji danych użytkownika. Zawiera nazwę pliku i ścieżkę bezwzględną lub względną do katalogu roboczego, aby skonfigurować trwały plik danych użytkownika. Jeśli taki plik nie istnieje, emulator tworzy obraz z domyślnego pliku userdata.img, zapisuje go pod wpisaną przez Ciebie nazwą i pozostawia dane użytkownika w momencie wyłączenia.

Na przykład:

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

Jeśli nie użyjesz tej opcji, domyślną nazwą będzie plik o nazwie userdata-qemu.img. Więcej informacji o pliku danych użytkownika znajdziesz w artykule Katalog danych AVD.

-datadir dir

Określa katalog danych przy użyciu ścieżki bezwzględnej. Więcej informacji znajdziesz w artykule Katalog danych AVD.

Na przykład:

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

Używa 32-bitowego emulatora na platformach 64-bitowych. Czasami ta opcja jest przydatna do testowania lub debugowania. Występował na przykład problem polegający na tym, że emulator czasem nie uruchamiał się w 64-bitowym systemie Windows, a w systemie 32-bitowym. Ta opcja była pomocna przy przeprowadzaniu porównań w celu debugowania problemu. Oto przykład:

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

Uzyskiwanie pomocy dotyczącej obrazów dysków. Ta opcja dostarcza informacji zarówno dla deweloperów aplikacji, jak i platform. Na przykład:

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

Uzyskiwanie pomocy dotyczącej specyfikacji znaków device. Niektóre opcje emulatora wymagają parametru device. Na przykład:

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

Uzyskiwanie pomocy dotyczącej obrazów dysków przydatnych dla deweloperów aplikacji. Ta opcja umożliwia uzyskanie informacji o lokalizacji plików graficznych w przypadku komponentu AVD utworzonego za pomocą narzędzi SDK. Na przykład:

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

Uzyskiwanie pomocy dotyczącej obrazów dysków istotnych dla programistów platform. Na przykład:

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

Określa początkową wersję partycji danych. Po wyczyszczeniu danych użytkownika emulator kopiuje zawartość określonego pliku do danych użytkownika (domyślnie jest to plik userdata-qemu.img), zamiast używać domyślnego pliku userdata.img jako wersji początkowej. Określa nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

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

Jeśli nie określisz ścieżki, plik zostanie umieszczony w katalogu systemowym. Więcej informacji znajdziesz w katalogu systemu AVD.

-kernel filepath

Korzysta z określonego emulowanego jądra. Jeśli nie określisz ścieżki, emulator będzie szukał w katalogu systemowym.

Aby wyświetlić komunikaty debugowania jądra, użyj opcji ‑show‑kernel.

Na przykład:

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

Jeśli nie określisz tej opcji, domyślną wartością będzie kernel-ranchu. Więcej informacji znajdziesz w katalogu systemu AVD.

-noaudio
-no-audio

Wyłącza obsługę dźwięku przez to urządzenie wirtualne. Niektóre komputery z systemem Linux i Windows mają uszkodzone sterowniki audio, które powodują inne objawy, na przykład uniemożliwiają uruchomienie emulatora. W takiej sytuacji skorzystaj z tej opcji, aby rozwiązać problem. Aby zmienić backend audio, możesz też użyć zmiennej środowiskowej QEMU_AUDIO_DRV.

Na przykład:

emulator @Nexus_5X_API_23 -noaudio
-nocache
-no-cache

Uruchamia emulator bez partycji pamięci podręcznej. Jeśli nie użyjesz tej opcji, domyślnie będzie to plik tymczasowy o nazwie cache.img. Ta opcja jest dostępna tylko dla deweloperów platform. Więcej informacji znajdziesz w artykule Katalog danych AVD.

Na przykład:

emulator @Nexus_5X_API_23 -nocache
-no-snapshot

Blokuje operacje automatycznego wczytywania i zapisywania, co powoduje, że emulator wykonuje pełną sekwencję rozruchu, a po zamknięciu traci swój stan. Zastępuje opcję -snapshot.

Na przykład:

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

Uniemożliwia emulatorowi wczytywanie stanu AVD z pamięci zrzutu. Wykonuje pełne uruchomienie.

Na przykład:

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

Zapobiega to zapisywaniu stanu AVD w pamięci zrzutu przez emulator przy zamykaniu, co oznacza, że wszystkie zmiany zostaną utracone.

Na przykład:

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

Nie próbuje skorygować czasu AVD od razu po przywróceniu zrzutu. Ta opcja może być przydatna podczas testowania, ponieważ pozwala uniknąć nagłych skoków w czasie. Aktualne informacje o czasie są wysyłane do AVD co około 15 sekund.

Na przykład:

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

Uruchamia emulator bez podłączania pliku w celu przechowywania lub wczytywania zrzutów stanu, wymuszając pełny rozruch i wyłączając funkcję zrzutu stanu. Ta opcja zastępuje opcje -snapstorage i -snapshot.

Na przykład:

emulator @Nexus_5X_API_23 -no-snapstorage
-no-window

Wyłącza graficzne wyświetlanie okna w emulatorze. Ta opcja jest przydatna, gdy emulator działa na serwerach, które nie mają wyświetlacza. Emulator możesz otworzyć przez adb lub w konsoli. Na przykład:

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

Określa rozmiar systemowej partycji danych w MB. Na przykład:

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

Ustawia właściwość systemu Android w emulatorze podczas uruchamiania. name musi być nazwą właściwości oznaczoną etykietą qemu_prop o długości maksymalnie 32 znaków bez spacji, a value musi być ciągiem o długości maksymalnie 92 znaków. Przykład: plik property_contexts. W jednym wierszu polecenia można określić kilka opcji ‑prop. Ta opcja może być przydatna podczas debugowania. Na przykład:

emulator @Nexus_5X_API_23 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Przekazuje argumenty do oprogramowania emulatora QEMU. Pamiętaj, że QEMU 1 i QEMU 2 mogą używać różnych argumentów. Gdy używasz tej opcji, upewnij się, że jest to ostatnia określona opcja, ponieważ wszystkie kolejne opcje zostaną zinterpretowane jako opcje związane z QEMU. Ta opcja jest dość zaawansowana i powinna być używana tylko przez programistów, którzy bardzo znają funkcję QEMU oraz emulację Androida.
-qemu -h

Wyświetla pomoc na temat: -qemu. Na przykład:

emulator -qemu -h
-ramdisk filepath

Określa obraz rozruchowy Ramdisk. Określa nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

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

Jeśli nie używasz tej opcji, domyślną wartością jest plik ramdisk.img w katalogu systemowym. Więcej informacji znajdziesz w katalogu systemu AVD.

-report-console socket

Raportuje port konsoli zdalnej firmie zewnętrznej przed rozpoczęciem emulacji. Może być przydatna w przypadku automatycznego skryptu testowania. socket musi używać jednego z tych formatów:

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

Aby uzyskać więcej informacji, użyj opcji -help-report-console w sposób opisany w sekcji dotyczącej pomocy dotyczącej określonych opcji.

-shell

Tworzy główną konsolę powłoki na bieżącym terminalu. Ta opcja różni się od polecenia adb shell tym, że:

  • Tworzy powłokę główną, która umożliwia modyfikowanie wielu części systemu.
  • Działa nawet wtedy, gdy adb daemon w emulowanym systemie jest uszkodzony.
  • Naciśnij Control+C (lub Command+C w systemie macOS), aby zatrzymać emulator zamiast powłoki.

Na przykład:

emulator @Nexus_5X_API_23 -shell
-snapshot name

Określa nazwę zrzutu w pliku pamięci masowej na potrzeby automatycznego uruchamiania i zapisywania operacji.

Zamiast wykonywać pełną sekwencję rozruchu, emulator może wznowić wykonywanie z wcześniejszego zrzutu stanu, co zwykle jest znacznie szybsze. Jeśli podasz tę opcję, emulator wczytuje zrzut o tej nazwie z obrazu zrzutu i zapisuje go z powrotem pod tą samą nazwą przy zamykaniu.

Jeśli nie użyjesz tej opcji, domyślnie będzie to pełna sekwencja rozruchu. Jeśli określony zrzut nie istnieje, emulator wykonuje sekwencję pełnego rozruchu i zapisuje operację.

Informacje o określaniu plików do przechowywania zrzutów oraz pliku domyślnego znajdziesz w sekcji -snapstorage.

emulator @Nexus_5X_API_23 -snapshot snapshot2

Pamiętaj, że podczas wczytywania zrzutu cała zawartość systemu, dane użytkownika i obrazy kart SD są zastępowane zawartością, która była przechowywana podczas tworzenia zrzutu. Jeśli nie zapiszesz tych informacji w innym zrzucie, wszystkie zmiany wprowadzone od tego momentu zostaną utracone.

Zrzut możesz też utworzyć w konsoli emulatora za pomocą polecenia avd snapshot save name. Więcej informacji znajdziesz w artykule o wysyłaniu poleceń konsoli emulatora.

-snapshot-list

Wyświetla listę dostępnych zrzutów. To polecenie wyświetla tabelę zrzutów zapisanych w pliku pamięci masowej, na którym został uruchomiony emulator, a następnie zamykane jest. Jeśli podasz także -snapstorage file, to polecenie wyświetli tabelę zrzutów zapisanych w pliku.

Na przykład:

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

Możesz użyć wartości kolumn ID i TAG w danych wyjściowych jako argumentów dla opcji -snapshot.

-snapstorage filepath

Określa plik repozytorium, który zawiera wszystkie zrzuty stanu. W tym pliku zapisywane są wszystkie zrzuty utworzone podczas wykonywania. Podczas działania emulatora można przywrócić tylko zrzuty z tego pliku.

Na przykład:

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

Jeśli nie określisz tej opcji, domyślną wartością w katalogu danych będzie snapshots.img. Jeśli podany plik nie istnieje, emulator uruchomi się, ale nie będzie obsługiwać zapisywania ani wczytywania zrzutów stanu.

-sysdir dir

Określa katalog systemowy przy użyciu ścieżki bezwzględnej. Więcej informacji znajdziesz w katalogu systemu AVD. Na przykład:

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

Określa początkowy plik systemowy. Zawiera nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego.

Na przykład:

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

Jeśli nie używasz tej opcji, domyślną wartością jest plik system.img w katalogu systemowym. Więcej informacji znajdziesz w katalogu systemu AVD.

-use-system-libs

W Linuksie zamiast wersji pakietu z emulatorem używany jest system libstdc++. Użyj tej opcji tylko wtedy, gdy emulator nie uruchamia się prawidłowo i pamiętaj, że nie zawsze działa. Możesz też ustawić zmienną środowiskową ANDROID_EMULATOR_USE_SYSTEM_LIBS na 1.

Na przykład:

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

Ta opcja umożliwia uzyskanie obrazu systemu z możliwością zapisu podczas sesji emulacji. Aby to zrobić:

  1. Uruchom urządzenie wirtualne za pomocą opcji -writable-system.
  2. Wpisz polecenie adb remount z terminala poleceń, aby nakazać emulatorowi ponowne podłączenie system/ do odczytu i zapisu. Domyślnie jest dostępny tylko do odczytu.

Użycie tej flagi powoduje utworzenie tymczasowej kopii obrazu systemu. Może ona mieć bardzo duży rozmiar, do kilkuset MB, ale zostanie zniszczona po zamknięciu emulatora.

Opcje wycofane

Te opcje wiersza poleceń zostały wycofane:

  • -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

Pomoc dotycząca opcji wiersza poleceń

W tej sekcji dowiesz się, jak uzyskać pomoc dotyczącą opcji wiersza poleceń. Zawiera on bardziej szczegółowe informacje o najczęściej używanych opcjach wiersza poleceń emulatora, które są dostępne po uruchomieniu emulatora.

Wyświetlanie listy wszystkich opcji emulatora

Aby wydrukować listę wszystkich opcji emulatora w tym krótki opis, wpisz to polecenie:

emulator -help

Uzyskiwanie szczegółowej pomocy dotyczącej konkretnej opcji

Aby wydrukować pomoc dotyczącą określonej opcji uruchamiania, wpisz następujące polecenie:

emulator -help-option

Na przykład:

emulator -help-netspeed

Ta pomoc jest bardziej szczegółowa niż opis podany w opcji -help.

Szczegółowa pomoc dotycząca wszystkich opcji

Aby uzyskać szczegółową pomoc dotyczącą wszystkich opcji emulatora, wpisz to polecenie:

emulator -help-all

Wyświetlenie listy zmiennych środowiskowych emulatora

Aby uzyskać listę zmiennych środowiskowych emulatora, wpisz to polecenie:

emulator -help-environment

Zmienne środowiskowe możesz ustawić w oknie terminala przed uruchomieniem urządzenia wirtualnego lub skonfigurować je w ustawieniach użytkownika w systemie operacyjnym. Możesz go na przykład ustawić w pliku .bashrc na komputerze z Linuksem.

Wyświetl listę tagów debugowania

Aby wydrukować listę tagów dla opcji -debug, wpisz to polecenie:

emulator -help-debug-tags

Opcje -debug pozwalają włączać i wyłączać komunikaty debugowania pochodzące z konkretnych komponentów emulatora (zgodnie z ustawieniami tagów).