Uruchamianie emulatora z poziomu wiersza poleceń

Pakiet Android SDK zawiera emulator urządzeń z Androidem – urządzenie wirtualne działające na komputerze. Emulator Androida pozwala tworzyć i testować aplikacje na Androida bez 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 za pomocą emulatora Androida.

Uruchom emulator

Uruchom emulator za pomocą polecenia emulator jako alternatywy dla uruchomienia projektu lub uruchamiania go za pomocą usługi AVD Manager.

Podstawowa składnia wiersza poleceń służąca do uruchamiania urządzenia wirtualnego z poziomu wiersza poleceń terminala:

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

lub

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

Jeśli na przykład uruchomisz emulator z poziomu Androida Studio uruchomionego na Macu, domyślny wiersz poleceń będzie podobny do tego:

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Pixel8_API_34 -netdelay none -netspeed full -qt-hide-window -grpc-use-token -idle-grpc-timeout

Pamiętaj, że argumenty -qt-hide-window -grpc-use-token -idle-grpc-timeout służą tylko do uruchamiania okna emulatora w Android Studio. Jeśli chcesz uruchomić emulator w osobnym oknie, nie używaj tych dodatkowych parametrów.

Możesz określić opcje uruchamiania 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. Domyślny katalog główny możesz zastąpić, ustawiając zmienną środowiskową ANDROID_SDK_HOME, która określa katalog główny katalogu, w którym są przechowywane wszystkie konfiguracje i treści AVD.

Zmienną środowiskową możesz ustawić w oknie terminala przed uruchomieniem urządzenia wirtualnego lub w ustawieniach użytkownika w systemie operacyjnym. na przykład w pliku .bashrc na Linuksie.

Aby zatrzymać emulator Androida, zamknij jego okno.

Instalowanie aplikacji

Oprócz instalacji aplikacji przy użyciu Android Studio lub interfejsu emulatora możesz ją zainstalować na urządzeniu wirtualnym za pomocą narzędzia adb.

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

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

Aby odinstalować aplikację, wykonaj te same czynności co 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 usunąć te dane, uruchom emulator przy użyciu opcji -wipe-data lub wyczyść dane w AVD Manager. Więcej informacji o partycji danych użytkownika i innym miejscu na dane znajdziesz w kolejnej sekcji.

Uwaga: narzędzie adb traktuje urządzenie wirtualne jako rzeczywiste urządzenie fizyczne. Dlatego konieczne może być użycie flagi -d z popularnymi poleceniami adb, takimi jak install. Flaga -d pozwala określić, którego z połączonych urządzeń chcesz używać jako miejsca docelowego polecenia. Jeśli nie określisz wartości -d, emulator będzie kierowany na pierwsze urządzenie na liście.

Informacje o domyślnych katalogach i plikach

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

Emulator Androida używa hipernadzorcy (QEMU).

Katalog systemu AVD

Katalog systemu zawiera obrazy systemu Android, których emulator używa do symulacji systemu operacyjnego. Ten katalog zawiera związane z platformą pliki tylko do odczytu udostępniane przez wszystkie narzędzia 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/
  • Windows – C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

Gdzie:

  • apiLevel to liczbowy poziom interfejsu API lub litera oznaczająca wersje podglądu. Na przykład android-V wskazuje podgląd VanillaIceCream na Androida. W chwili premiery zmieniono poziom interfejsu API na 35, który został oznaczony przez android-35.
  • 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.

Użyj opcji -sysdir, aby określić inny katalog systemowy na potrzeby AVD.

Emulator odczytuje te pliki z katalogu systemowego:

Tabela 1. Pliki katalogu systemowego odczytywane przez emulator Androida

Plik Opis Opcja wskazania innego pliku
kernel-qemu lub kernel-ranchu Plik binarny jądra systemu AVD. kernel-ranchu opiera się na emulatorze QEMU. -kernel
ramdisk.img Obraz partycji rozruchowej. Jest to podzbiór zbioru danych system.img wczytywany przez jądro początkowo przed podłączeniem obrazu systemu. Zwykle zawiera on tylko kilka plików binarnych i skryptów inicjujących. -ramdisk
system.img Wstępna wersja obrazu systemu, dostępna tylko do odczytu. Konkretnie jest to partycja zawierająca biblioteki systemowe i dane odpowiadające poziomowi i wariantowi interfejsu API. -system
userdata.img Początkowa wersja partycji danych, która wyświetla się w emulowanym systemie jako data/ i zawiera wszystkie dostępne do zapisu dane AVD. Emulator używa tego pliku, gdy tworzysz nowy program 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 też katalogiem treści, jest powiązany z pojedynczą instancją AVD i zawiera wszystkie dane, które można modyfikować.

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

  • macOS i Linux – ~/.android/avd/name.avd/
  • Windows 10 lub nowszy – C:\Users\user\.android\name.avd\

Użyj opcji -datadir, aby określić inny katalog danych AVD.

Poniższa tabela zawiera najważniejsze pliki w tym katalogu:

Tabela 2. Ważne pliki w katalogu danych AVD

Plik Opis Opcja wskazania innego pliku
userdata-qemu.img

Zawartość partycji danych, która wyświetla się w emulowanym systemie jako data/. Gdy tworzysz nowy program AVD lub używasz opcji -wipe-data do przywrócenia go do ustawień fabrycznych, emulator skopiuje plik userdata.img z katalogu systemowego, aby go utworzyć.

Każda instancja urządzenia wirtualnego używa obrazu danych użytkownika z możliwością zapisu do przechowywania danych użytkownika i sesji. Obrazy są na przykład wykorzystywane do przechowywania danych, ustawień, baz danych i plików aplikacji zainstalowanych przez unikalnego użytkownika. Każdy użytkownik ma inny katalog ANDROID_SDK_HOME, w którym przechowywane są katalogi danych utworzone przez niego na potrzeby narzędzia 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/. Pole jest puste, gdy po raz pierwszy tworzysz średni czas oglądania lub używasz opcji -wipe-data. Zawiera on tymczasowe pliki pobierania i zapełnia je menedżer pobierania, a czasem system. Na przykład podczas działania emulatora przeglądarka używa go do zapisywania w pamięci podręcznej pobranych stron internetowych i obrazów. Gdy wyłączysz urządzenie wirtualne, plik zostanie usunięty. Aby zachować plik, możesz użyć opcji -cache. -cache
sdcard.img

(Opcjonalnie) Obraz partycji karty SD, który pozwala symulować kartę SD na urządzeniu wirtualnym. Możesz utworzyć plik obrazu karty SD w AVD Manager lub narzędziu mksdcard. Plik jest przechowywany na komputerze programistycznym i musi zostać załadowany podczas uruchamiania.

Podczas definiowania AVD w Menedżerze AVD możesz użyć automatycznie zarządzanego pliku karty SD lub pliku utworzonego przy użyciu narzędzia mksdcard. Plik sdcard.img powiązany z programem AVD możesz wyświetlić w aplikacji AVD Manager. Opcja -sdcard zastępuje plik na karcie SD określony w AVD. Pamiętaj, że ta opcja karty SD nie działa na Macu z silnikiem Apple Silicon.

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

Aby skopiować pliki na kartę SD przed jego wczytaniem, podłącz plik obrazu jako urządzenie do 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. Jeśli chcesz usunąć ten plik, usuń go i utwórz ponownie za pomocą programu AVD Manager lub narzędzia mksdcard. Zmiana rozmiaru pliku spowoduje też usunięcie go i utworzenie nowego.

-sdcard

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

Możesz sprawdzić lokalizację plików na 2 sposoby:

  • Jeśli uruchamiasz emulator z wiersza poleceń, użyj opcji -verbose lub -debug init. Spójrz na dane wyjściowe.
  • 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 znajdziesz opcje, które możesz udostępnić w wierszu poleceń po uruchomieniu emulatora.

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

Często używane opcje

W poniższej tabeli znajdziesz opcje uruchamiania 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 Przeprowadza „na zimno” i zapisuje stan emulatora przy zamykaniu.
-no-snapshot-save Wykonuje szybki rozruch, jeśli to możliwe, 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 dla aparatu skierowanego do przodu lub do tyłu. Zastępuje to wszystkie ustawienia kamery w AVD.

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

  • emulated – emulator symuluje działanie kamery w oprogramowaniu.
  • webcamn – emulator używa kamery internetowej podłączonej do komputera programistycznego (liczba). Aby wyświetlić listę kamer internetowych, użyj opcji -webcam-list. Na przykład: webcam0.
  • none – wyłącza kamerę na urządzeniu wirtualnym.

Przykład:

emulator @Pixel8_API_34 -camera-back webcam0

-webcam-list Zawiera listę kamer internetowych na Twoim komputerze programistycznym, które są dostępne do emulacji. Na przykład:
emulator @Pixel8_API_34 -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 element webcam0 to nazwa użyta w wierszu poleceń. Drugi element webcam0 to nazwa używana przez system operacyjny na komputerze programistycznym. Druga nazwa zależy od systemu operacyjnego.

Od wersji SDK Tools 25.2.4 wymagana jest nazwa AVD.

Obrazy na dysku i pamięć
-memory size

Określa rozmiar fizycznej pamięci RAM, od 1536 do 8192 MB. Na przykład:

emulator @Pixel8_API_34 -memory 2048

Ta wartość zastępuje ustawienie AVD.

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

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

Jeśli plik nie zostanie znaleziony, emulator będzie się uruchamiał, 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. Informacje o emulowanych kartach SD znajdziesz w katalogu danych AVD.

-wipe-data Usuwa dane użytkownika i kopiuje je z początkowego pliku danych. Ta opcja powoduje wyczyszczenie danych urządzenia wirtualnego i przywrócenie ich do stanu sprzed pierwszego zdefiniowania. Zostaną usunięte wszystkie zainstalowane aplikacje i ustawienia. Na przykład:

emulator @Pixel8_API_34 -wipe-data

Domyślnie plik danych użytkownika ma postać 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 dotyczących jednego lub większej liczby tagów. Kolejne tagi rozdziel spacją, przecinkiem lub kolumną. Na przykład:

$ emulator @Pixel8_API_34 -debug init,metrics

Aby wyłączyć tag, umieść przed nim łącznik (-). Na przykład ta opcja wyświetla wszystkie komunikaty debugowania z wyjątkiem tych związanych z gniazdami sieciowymi i wskaźnikami:

-debug all,-socket,-metrics

Aby wyświetlić listę 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 listę tagów, których chcesz użyć, rozdzielaną 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 @Pixel8_API_34 -debug-all -debug-no-metrics

Aby wyświetlić listę tagów, użyj polecenia emulator -help-debug-tags.

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

emulator @Pixel8_API_34 -logcat *:e

Pole logtags używa tego samego formatu co polecenie adb logcat logtags. Wpisz adb logcat -help, aby uzyskać więcej informacji. To lista filtrów logów rozdzielonych spacjami lub przecinkami w formacie componentName:logLevel. componentName jest symbolem wieloznacznym (*) lub nazwą komponentu, np. ActivityManager, SystemServer, InputManager lub WindowManager.

logLevel jest jedną z tych wartości:

  • v – szczegółowy
  • d – debugowanie
  • i – informacje
  • w – poziom logu ostrzeżenia
  • e – błąd
  • s – tryb cichy

W tym przykładzie wyświetlane są komunikaty komponentu GSM na poziomie logu informacyjnego:

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

Jeśli nie podasz opcji -logcat w wierszu poleceń, emulator poszuka zmiennej środowiskowej ANDROID_LOG_TAGS. Jeśli ANDROID_LOG_TAGS jest zdefiniowany z prawidłową wartością logtags i nie jest pusty, emulator użyje tej wartości, aby domyślnie włączyć dane wyjściowe Logcat w terminalu. Możesz też przekierować ten sam lub inny komunikat logu do terminala za pomocą adb.

Więcej informacji o logcat i adb znajdziesz w narzędziach wiersza poleceń Logcat, wyświetlaniu i zapisywaniu logów za pomocą Logcat, klasach Log i wysyłaniu poleceń adb.

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

emulator @Pixel8_API_34 -show-kernel

Jednym z przykładów zastosowania tej opcji jest sprawdzenie, czy proces uruchamiania działa prawidłowo.

-verbose Drukuje komunikaty o inicjowaniu emulatora w oknie terminala. Na przykład:

emulator @Pixel8_API_34 -verbose

Wskazuje, które pliki i ustawienia są rzeczywiście wybierane podczas uruchamiania urządzenia wirtualnego zdefiniowanego w AVD. Ta opcja jest identyczna z określeniem -debug-init.

Sieć
-dns-server servers Używa określonych serwerów DNS. servers to rozdzielana przecinkami lista maksymalnie 4 nazw serwerów DNS lub adresów IP. Na przykład:
emulator @Pixel8_API_34 -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 system Android mógł łączyć się bezpośrednio z serwerami. Użyj opcji -dns-server, aby określić inną listę serwerów DNS.

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

emulator @Pixel8_API_34 -http-proxy myserver:1981

proxy może być jednym z tych elementów:

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

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

Jeśli ta opcja nie zostanie podana, emulator wyszuka zmienną środowiskową http_proxy i automatycznie użyje dowolnej wartości pasującej do formatu proxy. Więcej informacji znajdziesz w artykule o używaniu emulatora 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 indywidualne minimalne i maksymalne czasy oczekiwania.

Przykład:

emulator @Pixel8_API_34 -netdelay gsm

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

-netfast Wyłącza ograniczanie wykorzystania sieci. Na przykład:

emulator @Pixel8_API_34 -netfast

Ta opcja jest identyczna z określaniem wartości -netspeed full -netdelay none. Są to wartości domyślne tych opcji.

-netspeed speed

Ustawia emulację szybkości sieci. Określa maksymalne szybkości przesyłania i pobierania w sieci przy użyciu jednej z tych wartości speed w kb/s:

  • gsm – GSM/CSD (góra: 14,4, dół: 14,4).
  • hscsd – HSCSD (góra: 14,4, dół: 57,6).
  • gprs – GPRS (góra: 28,8, spadek: 57,6).
  • edge – EDGE/EGPRS (góra: 473,6, dół: 473,6).
  • umts – UMTS/3G (góra: 384,0, dół: 384,0).
  • hsdpa – HSDPA (góra: 5760,0, dół: 13980,0).
  • lte – LTE (wzrost: 58 000, spadek: 173 000).
  • evdo – EVDO (wzrost: 75 000, spadek: 280 000).
  • full – bez limitu, wartość domyślna (góra: 0,0, dół: 0,0).
  • num – określa szybkość przesyłania i pobierania.
  • up:down – określa poszczególne prędkości wczytywania i zniżki.

Przykład:

emulator @Pixel8_API_34 -netspeed edge

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

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

emulator @Pixel8_API_34 -port 5556

Wartość domyślna to 5554 w przypadku pierwszej instancji urządzenia wirtualnego uruchomionego w Twojej maszynie. Urządzenie wirtualne zwykle zajmuje 2 sąsiadujące porty: port konsoli i port adb. Konsola pierwszego urządzenia wirtualnego uruchomionego na konkretnej maszynie używa portu 5554 konsoli i portu 5555 systemu adb. Kolejne instancje korzystają z numerów portów rosnących o dwa. Na przykład 5556/5557, 5558/5559 i tak dalej. Zakres wynosi od 5554 do 5682, co pozwala na obsługę 64 równoczesnych urządzeń wirtualnych.

Przypisanie portów jest często takie samo jak określenie -ports port,{port + 1}. Pole {port + 1} musi być bezpłatne i zarezerwowane dla domeny adb. Jeśli dowolny z portów konsoli lub adb jest już używany, emulator się nie uruchomi.

Opcja ‑port informuje, których portów i numerów seryjnych używa urządzenie wirtualne, oraz ostrzega w przypadku problemów z podanymi wartościami. Aby zobaczyć numer portu konsoli w tytule okna w interfejsie emulatora, a także numer portu adb, kliknij Pomoc > Informacje.

Pamiętaj, że jeśli wartość port nie jest parzysta i należy do zakresu od 5554 do 5584, urządzenie wirtualne uruchomi się, ale nie będzie widoczne podczas użycia polecenia adb devices, jeśli adb server rozpoczyna się po emulatorze. Z tego powodu zalecamy używanie parzystego numeru portu konsoli.

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

emulator @Pixel8_API_34 -ports 5556,5559

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

Zalecamy, aby w miarę możliwości używać opcji -port. Opcja -ports jest dostępna w konfiguracjach sieci, które wymagają specjalnych ustawień.

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

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

emulator @Pixel8_API_34 -tcpdump /path/dumpfile.cap

Użyj tej opcji, aby rozpocząć przechwytywanie wszystkich pakietów sieciowych wysyłanych przez wirtualną sieć LAN Ethernet w emulatorze. Później możesz użyć narzędzia w rodzaju Wireshark, aby przeanalizować ruch.

Pamiętaj, że ta opcja przechwytuje wszystkie pakiety Ethernet, a nie tylko połączenia TCP.

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

emulator @Pixel8_API_34 -accel auto

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

Prawidłowe wartości dla mode to:

  • auto – automatycznie określa, czy akceleracja jest obsługiwana, i używa jej, gdy jest to możliwe (ustawienie domyślne).
  • off – całkowite wyłączenie przyspieszenia, które jest szczególnie przydatne podczas debugowania.
  • on – wymusza przyspieszenie. Jeśli narzędzie KVM lub HAXM nie jest zainstalowane lub nie nadaje się do użycia, emulator się nie uruchomi i wyświetli komunikat o błędzie.

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

-accel-check Sprawdza, czy zainstalowany jest wymagany hipernadzorca do przyspieszenia 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 silnik emulatora:

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

Na przykład:

emulator @Pixel8_API_34 -engine auto

Funkcja automatycznego wykrywania powinna wybrać wartość, która zapewni najwyższą wydajność podczas emulacji konkretnego AVD. Opcji -engine używaj tylko do debugowania i porównywania.

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

emulator @Pixel8_API_34 -gpu swiftshader_indirect

Więcej informacji znajdziesz w artykule Konfigurowanie akceleracji grafiki.

-no-accel Wyłącza przyspieszenie maszyny wirtualnej emulatora w przypadku używania obrazu systemu x86 lub x86_64. Jest przydatny tylko do debugowania i jest taki sam jak określenie właściwości -accel off. Na przykład:

emulator @Pixel8_API_34 -no-accel

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

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

emulator @Pixel8_API_34 -nojni

Gdy uruchamiasz urządzenie wirtualne, rozszerzone sprawdzanie JNI jest domyślnie włączone. Więcej informacji znajdziesz we wskazówkach JNI.

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

me-linux$ emulator @Pixel8_API_34 -selinux permissive

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

-timezone timezone

Ustawia strefę czasową urządzenia wirtualnego na timezone, a nie na strefę czasową hosta. Na przykład:

emulator @Pixel8_API_34 -timezone Europe/Paris

Domyślnie emulator używa strefy czasowej komputera, z którego korzystasz. Za pomocą tej opcji możesz 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 stref informacji.

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

emulator @Pixel8_API_34 -version

lub

emulator -version

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

emulator @Pixel8_API_34 -no-boot-anim

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

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

emulator @Pixel8_API_34 -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 wielodotykowego.

Opcje zaawansowane

Opcje uruchamiania wiersza poleceń wymienione w poniższej tabeli są dostępne, ale przeciętny deweloper aplikacji rzadko z nich korzysta.

W opisach katalog roboczy to bieżący katalog w terminalu, w którym wpisujesz polecenia. Informacje o katalogu systemu AVD i katalogu danych oraz plikach przechowywanych w nich znajdziesz w sekcji o katalogach i plikach domyślnych.

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

Tabela 4. Zaawansowane opcje wiersza poleceń

Opcja zaawansowana Krótki opis
-bootchart timeout

Włącza rozruchowy schemat z limitem czasu w sekundach. Niektóre obrazy systemu Androida mają zmodyfikowany system inicjowania, który integruje funkcję uruchamiania kodu rozruchowego. Za pomocą tej opcji możesz przekazać do systemu czas oczekiwania na kod rozruchowy. Jeśli w systemie inicjującym nie jest włączone debugowanie rozruchowe, ta opcja nie ma żadnego efektu. Ta opcja jest przydatna głównie dla deweloperów platformy, a nie dla zewnętrznych deweloperów aplikacji.

Na przykład:

emulator @Pixel8_API_34 -bootchart 120
-cache filepath

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

Na przykład:

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

Jeśli nie użyjesz tej opcji, domyślną wartością będzie 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 @Pixel8_API_34 -cache-size 1000

Jeśli nie określisz tej opcji, wartość domyślna to 66 MB. Zwykle większość deweloperów aplikacji nie potrzebuje tej opcji, chyba że muszą 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 katalogu danych AVD.

-data filepath

Konfiguruje plik obrazu partycji danych użytkownika. Podaje nazwę pliku i ścieżkę bezwzględną lub ścieżkę względną do katalogu roboczego, aby skonfigurować trwały plik danych użytkownika. Jeśli plik nie istnieje, emulator utworzy obraz na podstawie domyślnego pliku userdata.img, zapisze go pod określoną nazwą pliku, a po wyłączeniu będzie przechowywać w nim dane użytkownika.

Na przykład:

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

Jeśli nie użyjesz tej opcji, domyślnie będzie używany plik o nazwie userdata-qemu.img. Więcej informacji o pliku danych użytkownika znajdziesz w katalogu danych AVD.

-datadir dir

Wskazuje katalog danych przy użyciu ścieżki bezwzględnej. Więcej informacji znajdziesz w katalogu danych AVD.

Na przykład:

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

Używa emulatora 32-bitowego na platformach 64-bitowych. Czasami ta opcja jest przydatna przy testowaniu lub debugowaniu. Chodziło np. o to, że w 64-bitowym systemie Windows emulator czasem nie działał, a w wersji 32-bitowej – działał. Ta opcja była przydatna podczas porównań w celu debugowania problemu. Oto przykład:

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

Uzyskuje pomoc dotyczącą obrazów dysków. Ta opcja dostarcza informacji przydatnych zarówno dla deweloperów aplikacji, jak i platformy. 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

Uzyskuje pomoc dotyczącą obrazów dysków istotnych dla deweloperów aplikacji. Ta opcja umożliwia uzyskanie informacji o tym, gdzie znajdują się pliki graficzne na potrzeby AVD utworzonego przy użyciu narzędzi pakietu SDK. Na przykład:

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

Uzyskuje pomoc dotyczącą obrazów dysków przydatnych dla deweloperów platformy. 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 @Pixel8_API_34 -initdata
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/userdata-test.img

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

-kernel filepath

Korzysta z konkretnego emulowanego jądra. Jeśli nie podasz ścieżki, emulator poszuka w katalogu systemowym.

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

Na przykład:

emulator @Pixel8_API_34 -kernel
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/kernel-test.img -show-kernel

Jeśli nie określisz tej opcji, domyślna wartość to kernel-ranchu. Więcej informacji znajdziesz w katalogu systemowym AVD.

-noaudio
-no-audio

Wyłącza obsługę dźwięku na tym urządzeniu wirtualnym. Niektóre komputery z systemem Linux i Windows mają uszkodzone sterowniki dźwięku, które powodują różne objawy, np. uniemożliwiają uruchomienie emulatora. W takim przypadku użyj tej opcji, aby rozwiązać problem. Do zmiany backendu audio możesz też użyć zmiennej środowiskowej QEMU_AUDIO_DRV.

Na przykład:

emulator @Pixel8_API_34 -noaudio
-nocache
-no-cache

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

Na przykład:

emulator @Pixel8_API_34 -nocache
-no-snapshot

Blokuje zarówno operacje automatycznego wczytywania, jak i zapisywania, przez co emulator wykonuje pełną sekwencję rozruchu i traci swój stan po zamknięciu. Zastępuje opcję -snapshot.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot
-no-snapshot-load

Uniemożliwia emulatorowi wczytywanie stanu AVD z pamięci zrzutów. Wykonuje pełny rozruch.

Na przykład:

emulator @Pixel8_API_34 -no-snapshot-load
-no-snapshot-save

Uniemożliwia emulatorowi zapisanie stanu AVD w pamięci zrzutów po zamknięciu, co oznacza, że wszystkie zmiany zostaną utracone.

Na przykład:

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

Nie podejmuje próby skorygowania czasu AVD natychmiast po przywróceniu zrzutu. Ta opcja może być przydatna podczas testowania, ponieważ pozwala uniknąć nagłych skoków w czasie. Aktualizacje czasu są nadal wysyłane do AVD co około 15 sekund.

Na przykład:

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

Uruchamia emulator bez podłączania pliku do przechowywania lub wczytywania zrzutów stanu. Wymusza to pełny rozruch i wyłącza funkcję zrzutów stanu. Ta opcja zastępuje opcje -snapstorage i -snapshot.

Na przykład:

emulator @Pixel8_API_34 -no-snapstorage
-no-window

Wyłącza graficzne wyświetlanie okien w emulatorze. Ta opcja jest przydatna przy uruchamianiu emulatora na serwerach, które nie mają wyświetlacza. Dostęp do emulatora możesz uzyskać w adb lub konsoli. Na przykład:

emulator @Pixel8_API_34 -no-window
-partition-size size

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

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

Konfiguruje w emulatorze właściwość systemu Android po jego uruchomieniu. name musi być nazwą właściwości oznaczoną jako qemu_prop o długości maksymalnie 32 znaków, bez spacji, a value musi być ciągiem składającym się z maksymalnie 92 znaków. Przykład znajdziesz w pliku property_contexts. W jednym wierszu poleceń możesz określić kilka opcji ‑prop. Ta opcja może być przydatna podczas debugowania. Na przykład:

emulator @Pixel8_API_34 -prop qemu.name=value -prop qemu.abc=xyz
-qemu args Przekazuje argumenty do oprogramowania emulatora QEMU. Jeśli używasz tej opcji, sprawdź, czy jest to ostatnia określona opcja, ponieważ wszystkie kolejne opcje są interpretowane jako opcje związane z QEMU. Ta opcja jest dość zaawansowana, więc powinni z niej korzystać tylko deweloperzy, którzy bardzo znają QEMU oraz emulację Androida.
-qemu -h

Wyświetla pomoc dotyczącą funkcji -qemu. Na przykład:

emulator -qemu -h
-ramdisk filepath

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

Na przykład:

emulator @Pixel8_API_34 -ramdisk
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/ramdisk-test.img

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

-report-console socket

Przed rozpoczęciem emulacji zgłasza port konsoli zdalnej firmie zewnętrznej. Może być przydatna w przypadku skryptu automatycznego testowania. socket musi mieć jeden 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 poświęconej pomocy dotyczącej określonych opcji.

-shell

Tworzy główną konsolę powłoki w bieżącym terminalu. Ta opcja różni się od polecenia adb shell w następujący sposób:

  • Tworzy powłokę root, która pozwala modyfikować wiele części systemu.
  • Działa nawet wtedy, gdy interfejs 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 @Pixel8_API_34 -shell
-snapshot name

Określa nazwę zrzutu w pliku magazynu zrzutów na potrzeby operacji automatycznego uruchamiania i zapisywania.

Zamiast wykonywać pełną sekwencję rozruchu, emulator może wznowić wykonywanie od wcześniejszego zrzutu stanu, co zwykle jest znacznie szybsze. Gdy podasz tę opcję, emulator wczyta zrzut tej nazwy z obrazu zrzutu i zapisze go z powrotem pod tą samą nazwą przy wyjściu.

Jeśli nie użyjesz tej opcji, domyślną opcją jest pełna sekwencja rozruchu. Jeśli określony zrzut nie istnieje, emulator wykonuje pełną sekwencję rozruchu i wykonuje operację zapisu.

Informacje na temat określania pliku pamięci masowej zrzutu oraz pliku domyślnego znajdziesz w sekcji -snapstorage.

emulator @Pixel8_API_34 -snapshot snapshot2

Pamiętaj, że podczas wczytywania zrzutu cała zawartość systemu, dane użytkownika i obrazy karty SD są zastępowane zawartością zapisaną podczas tworzenia zrzutu. Jeśli nie zapiszesz tych informacji w innym zrzucie dysku, wszystkie wprowadzone od tego czasu zmiany 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 powoduje wyświetlenie tabeli zrzutów zapisanych w pliku pamięci zrzutów, od którego został uruchomiony emulator, a następnie zostaje zamknięty. Jeśli podasz także -snapstorage file, to polecenie wygeneruje tabelę zrzutów zapisanych w pliku.

Na przykład:

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

Wartości z kolumn ID i TAG w danych wyjściowych możesz użyć jako argumentów opcji -snapshot.

-snapstorage filepath

Określa plik repozytorium zawierający wszystkie zrzuty stanu. W tym pliku są zapisywane wszystkie zrzuty wykonane podczas wykonywania. Podczas działania emulatora można przywrócić tylko zrzuty w tym pliku.

Na przykład:

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

Jeśli nie określisz tej opcji, domyślnie przyjęta zostanie wartość snapshots.img w katalogu danych. Jeśli określony plik nie istnieje, emulator uruchomi się, ale bez obsługi zapisywania i wczytywania zrzutów stanu.

-sysdir dir

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

emulator @Pixel8_API_34 -sysdir
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/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 @Pixel8_API_34 -system
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/system-test.img

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

-use-system-libs

W systemie Linux używana jest systemowa libstdc++ zamiast wersji dołączonej do systemu emulatora. Użyj tej opcji tylko wtedy, gdy emulator nie uruchomi się normalnie. 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 @Pixel8_API_34 -use-system-libs
-writable-system

Użyj tej opcji, by podczas sesji emulacji mieć możliwość zapisu obrazu systemu. Aby to zrobić:

  1. Umożliwia uruchomienie urządzenia wirtualnego za pomocą opcji -writable-system.
  2. Wpisz w terminalu poleceń polecenie adb remount, aby nakazać emulatorowi ponowne podłączenie instancji system/ jako do odczytu i zapisu. Domyślnie jest on podłączony w trybie tylko do odczytu.

Użycie tej flagi spowoduje utworzenie tymczasowej kopii obrazu systemu, który może być bardzo duży (do kilkuset MB), ale zostanie zniszczony po zamknięciu emulatora.

Wycofane opcje

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 opisaliśmy, jak uzyskać pomoc dotyczącą opcji wiersza poleceń. Zawiera ona bardziej szczegółowe informacje o najczęściej używanych opcjach wiersza poleceń emulatora, które są dostępne po uruchomieniu emulatora.

Wyświetl wszystkie opcje 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 to polecenie:

emulator -help-option

Na przykład:

emulator -help-netspeed

Ta pomoc jest bardziej szczegółowy niż opis dostępny w opcji -help.

Szczegółowa pomoc dotycząca wszystkich opcji

Aby uzyskać szczegółową pomoc dotyczącą wszystkich opcji emulatora, wpisz następujące polecenie:

emulator -help-all

Wyświetlenie listy zmiennych środowiskowych emulatora

Aby wyświetlić listę zmiennych środowiskowych emulatora, wpisz następujące polecenie:

emulator -help-environment

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

Wyświetl listę tagów debugowania

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

emulator -help-debug-tags

Opcje -debug umożliwiają włączanie i wyłączanie komunikatów debugowania pochodzących z określonych komponentów emulatora określonych w tagach.