Udostępnij za pośrednictwem


Rozwiązywanie problemów z emulatorem systemu Android

W tym artykule opisano najbardziej typowe komunikaty ostrzegawcze i problemy występujące podczas konfigurowania i uruchamiania emulatora systemu Android. Ponadto opisuje rozwiązania do rozwiązywania tych błędów, a także różne wskazówki dotyczące rozwiązywania problemów, które ułatwiają diagnozowanie problemów z emulatorem.

Problemy z wdrażaniem w systemie Windows

Niektóre komunikaty o błędach mogą być wyświetlane przez emulator podczas wdrażania aplikacji. Poniżej wyjaśniono najczęstsze błędy i rozwiązania.

Błędy wdrażania

Jeśli zostanie wyświetlony błąd dotyczący niepowodzenia instalacji pakietu APK w emulatorze lub niepowodzenia uruchomienia mostka debugowania systemu Android (adb), sprawdź, czy zestaw SDK systemu Android może nawiązać połączenie z emulatorem. Aby zweryfikować łączność emulatora, wykonaj następujące kroki:

  1. Uruchom emulator z Menedżer urządzeń systemu Android (wybierz urządzenie wirtualne i kliknij przycisk Start).

  2. Otwórz wiersz polecenia i przejdź do folderu, w którym zainstalowano bazę danych adb . Jeśli zestaw SDK systemu Android jest zainstalowany w domyślnej lokalizacji, adb znajduje się w folderze C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe; jeśli nie, zmodyfikuj tę ścieżkę dla lokalizacji zestawu Android SDK na komputerze.

  3. Wpisz następujące polecenie:

    adb devices
    
  4. Jeśli emulator jest dostępny z zestawu Android SDK, emulator powinien zostać wyświetlony na liście dołączonych urządzeń. Na przykład:

    List of devices attached
    emulator-5554   device
    
  5. Jeśli emulator nie jest wyświetlany na tej liście, uruchom Menedżera zestawu ANDROID SDK, zastosuj wszystkie aktualizacje, a następnie spróbuj ponownie uruchomić emulator.

Błąd dostępu MMIO

Jeśli zostanie wyświetlony komunikat Wystąpił błąd dostępu mmIO, uruchom ponownie emulator.

Brakujące usługi Google Play

Jeśli urządzenie wirtualne uruchomione w emulatorze nie ma zainstalowanych usług Google Play ani Sklepu Google Play, ten warunek jest często spowodowany tworzeniem urządzenia wirtualnego bez dołączania tych pakietów. Podczas tworzenia urządzenia wirtualnego (zobacz Zarządzanie urządzeniami wirtualnymi przy użyciu Menedżer urządzeń systemu Android) wybierz jedną lub obie następujące opcje:

  • Interfejsy API Google — obejmują usługi Google Play na urządzeniu wirtualnym.
  • Sklep Google Play — obejmuje sklep Google Play na urządzeniu wirtualnym.

Na przykład to urządzenie wirtualne będzie zawierać usługi Google Play i Sklep Google Play:

Example AVD with Google Play Services and Google Play Store enabled

Uwaga

Obrazy sklepu Google Play są dostępne tylko dla niektórych podstawowych typów urządzeń, takich jak Pixel, Pixel 2, Nexus 5 i Nexus 5X.

Problemy z wydajnością

Problemy z wydajnością są zwykle spowodowane jednym z następujących problemów:

  • Emulator działa bez przyspieszania sprzętowego.

  • Urządzenie wirtualne uruchomione w emulatorze nie korzysta z obrazu systemu opartego na architekturze x86.

W poniższych sekcjach opisano te scenariusze bardziej szczegółowo.

Przyspieszanie sprzętowe nie jest włączone

Jeśli przyspieszanie sprzętowe nie jest włączone, uruchomienie urządzenia wirtualnego z Menedżer urządzeń spowoduje wyświetlenie okna dialogowego z komunikatem o błędzie wskazującym, że platforma hypervisor systemu Windows (WHPX) nie jest poprawnie skonfigurowana:

Example Device Manager warning

Jeśli zostanie wyświetlony ten komunikat o błędzie, zobacz Problemy z przyspieszanie sprzętowe poniżej, aby uzyskać instrukcje, które można wykonać, aby zweryfikować i włączyć przyspieszanie sprzętowe.

Przyspieszanie jest włączone, ale emulator działa zbyt wolno

Częstą przyczyną tego problemu nie jest użycie obrazu opartego na architekturze x86 na urządzeniu wirtualnym (AVD). Podczas tworzenia urządzenia wirtualnego (zobacz Zarządzanie urządzeniami wirtualnymi przy użyciu Menedżer urządzeń systemu Android) pamiętaj, aby wybrać obraz systemu oparty na architekturze x86:

Selecting an x86 system image for a virtual device

Problemy z przyspieszaniem sprzętu

Niezależnie od tego, czy używasz funkcji Hyper-V, czy haXM na potrzeby przyspieszania sprzętowego, możesz napotkać problemy z konfiguracją lub konflikty z innym oprogramowaniem na komputerze. Możesz sprawdzić, czy przyspieszanie sprzętowe jest włączone (i która metoda przyspieszania jest używana przez emulator), otwierając wiersz polecenia i wprowadzając następujące polecenie:

"C:\Program Files (x86)\Android\android-sdk\emulator\emulator-check.exe" accel

To polecenie zakłada, że zestaw SDK systemu Android jest zainstalowany w domyślnej lokalizacji C:\Program Files (x86)\Android\android-sdk; jeśli nie, zmodyfikuj powyższą ścieżkę lokalizacji zestawu Android SDK na komputerze.

Przyspieszanie sprzętowe jest niedostępne

Jeśli funkcja Hyper-V jest dostępna, zostanie zwrócony komunikat podobny do poniższego przykładu z polecenia emulator-check.exe accel :

HAXM is not installed, but Windows Hypervisor Platform is available.

Jeśli funkcja HAXM jest dostępna, zostanie zwrócony komunikat podobny do poniższego przykładu:

HAXM version 6.2.1 (4) is installed and usable.

Jeśli przyspieszanie sprzętowe nie jest dostępne, zostanie wyświetlony komunikat podobny do poniższego przykładu (emulator szuka funkcji HAXM, jeśli nie może odnaleźć funkcji Hyper-V):

HAXM is not installed on this machine

Jeśli przyspieszanie sprzętowe jest niedostępne, zobacz Przyspieszanie za pomocą funkcji Hyper-V , aby dowiedzieć się, jak włączyć przyspieszanie sprzętowe na komputerze.

Nieprawidłowe ustawienia systemu BIOS

Jeśli system BIOS nie został prawidłowo skonfigurowany do obsługi przyspieszania sprzętowego, podczas uruchamiania polecenia emulator-check.exe accel zostanie wyświetlony komunikat podobny do poniższego przykładu:

VT feature disabled in BIOS/UEFI

Aby rozwiązać ten problem, uruchom ponownie system BIOS komputera i włącz następujące opcje:

  • Technologia wirtualizacji (może mieć inną etykietę w zależności od producenta płyty głównej).
  • Sprzęt wymuszane zapobieganie wykonywaniu danych.

Jeśli przyspieszanie sprzętowe jest włączone i system BIOS jest prawidłowo skonfigurowany, emulator powinien działać pomyślnie z akceleratorem sprzętowym. Jednak problemy mogą nadal wynikać z problemów specyficznych dla funkcji Hyper-V i HAXM, jak wyjaśniono w dalszej części.

Problemy z funkcją Hyper-V

W niektórych przypadkach włączenie zarówno funkcji Hyper-V , jak i platformy funkcji Hypervisor systemu Windows w oknie dialogowym Włączanie lub wyłączanie funkcji Windows może nie być poprawnie włączone funkcji Hyper-V. Aby sprawdzić, czy funkcja Hyper-V jest włączona, wykonaj następujące kroki:

  1. Wprowadź program PowerShell w polu wyszukiwania systemu Windows.

  2. Kliknij prawym przyciskiem myszy program Windows PowerShell w wynikach wyszukiwania i wybierz polecenie Uruchom jako administrator.

  3. W konsoli programu PowerShell wprowadź następujące polecenie:

    Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
    

    Jeśli funkcja Hyper-V nie jest włączona, zostanie wyświetlony komunikat podobny do poniższego przykładu, aby wskazać, że stan funkcji Hyper-V jest wyłączony:

    FeatureName      : Microsoft-Hyper-V-All
    DisplayName      : Hyper-V
    Description      : Provides services and management tools for creating and running virtual machines and their resources.
    RestartRequired  : Possible
    State            : Disabled
    CustomProperties :
    
  4. W konsoli programu PowerShell wprowadź następujące polecenie:

    Get-WindowsOptionalFeature -FeatureName HypervisorPlatform -Online
    

    Jeśli funkcja Hypervisor nie jest włączona, zostanie wyświetlony komunikat podobny do poniższego przykładu, aby wskazać, że stan funkcji HypervisorPlatform jest wyłączony:

    FeatureName      : HypervisorPlatform
    DisplayName      : Windows Hypervisor Platform
    Description      : Enables virtualization software to run on the Windows hypervisor
    RestartRequired  : Possible
    State            : Disabled
    CustomProperties :
    

Jeśli funkcje Hyper-V i/lub HypervisorPlatform nie są włączone, użyj następujących poleceń programu PowerShell, aby je włączyć:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -All

Po zakończeniu tych poleceń uruchom ponownie.

Aby uzyskać więcej informacji na temat włączania funkcji Hyper-V (w tym technik włączania funkcji Hyper-V przy użyciu narzędzia obsługi i zarządzania obrazami wdrażania), zobacz Instalowanie funkcji Hyper-V.

Problemy z wysoką dostępnością maszyn wirtualnych

Problemy z funkcją HAXM są często wynikiem konfliktów z innymi technologiami wirtualizacji, nieprawidłowymi ustawieniami lub nieaktualnym sterownikiem HAXM.

Proces HAXM nie jest uruchomiony

Jeśli program HAXM jest zainstalowany, możesz sprawdzić, czy proces HAXM jest uruchomiony, otwierając wiersz polecenia i wprowadzając następujące polecenie:

sc query intelhaxm

Jeśli proces HAXM jest uruchomiony, powinny zostać wyświetlone dane wyjściowe podobne do następującego:

SERVICE_NAME: intelhaxm
    TYPE               : 1  KERNEL_DRIVER
    STATE              : 4  RUNNING
                            (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

Jeśli STATE nie ustawiono wartości RUNNING, zobacz Jak rozwiązać ten problem za pomocą Menedżera przyspieszonego wykonywania sprzętu firmy Intel.

Konflikty wirtualizacji HAXM

Funkcja HAXM może powodować konflikt z innymi technologiami korzystającymi z wirtualizacji, takimi jak Funkcja Hyper-V, Funkcja Windows Device Guard i niektóre oprogramowanie antywirusowe:

  • Hyper-V — jeśli używasz wersji systemu Windows przed aktualizacją systemu Windows 10 z kwietnia 2018 r. (kompilacja 1803), a funkcja Hyper-V jest włączona, wykonaj kroki opisane w temacie Wyłączanie funkcji Hyper-V , aby można było włączyć funkcję HAXM.

  • Device Guard — funkcja Device Guard i credential Guard mogą uniemożliwić wyłączenie funkcji Hyper-V na maszynach z systemem Windows. Aby wyłączyć funkcję Device Guard i Credential Guard, zobacz Wyłączanie funkcji Device Guard.

  • Oprogramowanie antywirusowe — jeśli korzystasz z oprogramowania antywirusowego korzystającego z wirtualizacji wspomaganej sprzętowo (na przykład Firmy Antywirusowej), wyłącz lub odinstaluj to oprogramowanie, uruchom ponownie i ponów próbę emulatora systemu Android.

Nieprawidłowe ustawienia systemu BIOS

Jeśli używasz funkcji HAXM na komputerze z systemem Windows, funkcja HAXM nie będzie działać, chyba że technologia wirtualizacji (Intel VT-x) jest włączona w systemie BIOS. Jeśli protokół VT-x jest wyłączony, podczas próby uruchomienia emulatora systemu Android zostanie wyświetlony błąd podobny do następującego:

Ten komputer spełnia wymagania dotyczące technologii HAXM, ale technologia Intel Virtualization Technology (VT-x) nie jest włączona.

Aby naprawić ten błąd, uruchom komputer w systemie BIOS, włącz zarówno VT-x, jak i SLAT (translacja adresów drugiego poziomu), a następnie ponownie uruchom komputer z powrotem do systemu Windows.

Wyłączanie funkcji Hyper-V

Jeśli używasz wersji systemu Windows przed aktualizacją systemu Windows 10 z kwietnia 2018 r. (kompilacja 1803), a funkcja Hyper-V jest włączona, należy wyłączyć funkcję Hyper-V i ponownie uruchomić komputer, aby zainstalować i używać funkcji HAXM. Jeśli używasz systemu Windows 10 z kwietnia 2018 Update (kompilacja 1803) lub nowszej, emulator systemu Android w wersji 27.2.7 lub nowszej może używać funkcji Hyper-V (zamiast haXM) na potrzeby przyspieszania sprzętowego, więc nie jest konieczne wyłączenie funkcji Hyper-V.

Funkcję Hyper-V można wyłączyć z Panel sterowania, wykonując następujące kroki:

  1. Wprowadź funkcje systemu Windows w polu wyszukiwania systemu Windows i wybierz pozycję Włącz lub wyłącz funkcje systemu Windows w wynikach wyszukiwania.

  2. Usuń zaznaczenie funkcji Hyper-V:

    Disabling Hyper-V in the Windows Features dialog

  3. Uruchom ponownie komputer.

Alternatywnie możesz użyć następującego polecenia programu PowerShell, aby wyłączyć funkcję Hypervisor funkcji Hyper-V:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Funkcje Intel HAXM i Microsoft Hyper-V nie mogą być jednocześnie aktywne. Niestety nie ma możliwości przełączania między funkcją Hyper-V i funkcją HAXM bez ponownego uruchamiania komputera.

W niektórych przypadkach użycie powyższych kroków nie powiedzie się w przypadku wyłączenia funkcji Hyper-V, jeśli włączono funkcję Device Guard i Credential Guard. Jeśli nie możesz wyłączyć funkcji Hyper-V (lub wydaje się, że instalacja haXM nadal kończy się niepowodzeniem), wykonaj kroki opisane w następnej sekcji, aby wyłączyć funkcję Device Guard i Credential Guard.

Wyłączanie funkcji Device Guard

Funkcja Device Guard i Credential Guard mogą uniemożliwić wyłączenie funkcji Hyper-V na maszynach z systemem Windows. Taka sytuacja jest często problemem dla maszyn przyłączonych do domeny, które są konfigurowane i kontrolowane przez organizację będącą właścicielem. W systemie Windows 10 wykonaj następujące kroki, aby sprawdzić, czy funkcja Device Guard jest uruchomiona:

  1. Wprowadź ciąg Informacje systemowe w polu wyszukiwania systemu Windows i wybierz pozycję Informacje o systemie w wynikach wyszukiwania.

  2. W podsumowaniu systemu sprawdź, czy zabezpieczenia oparte na wirtualizacji funkcji Device Guard są obecne i są w stanie Uruchomiony:

    Device Guard is present and running

Jeśli funkcja Device Guard jest włączona, wykonaj następujące kroki, aby ją wyłączyć:

  1. Upewnij się, że funkcja Hyper-V jest wyłączona (w obszarze Włączanie lub wyłączanie funkcji systemu Windows) zgodnie z opisem w poprzedniej sekcji.

  2. W polu wyszukiwania systemu Windows wprowadź gpedit.msc i wybierz wynik wyszukiwania Edytuj zasady grupy. Te kroki umożliwiają uruchomienie edytora lokalnych zasad grupy.

  3. W Edytorze lokalnych zasad grupy przejdź do konfiguracji > komputera Administracja istrative Templates > System > Device Guard:

    Device Guard in Local Group Policy Editor

  4. Zmień ustawienie Włącz zabezpieczenia oparte na wirtualizacji na Wyłączone (jak pokazano powyżej) i zamknij Edytor lokalnych zasad grupy.

  5. W polu wyszukiwania systemu Windows wprowadź polecenie cmd. Gdy wiersz polecenia pojawi się w wynikach wyszukiwania, kliknij prawym przyciskiem myszy wiersz polecenia i wybierz polecenie Uruchom jako Administracja istrator.

  6. Skopiuj i wklej następujące polecenia w oknie wiersza polecenia (jeśli dysk Z: jest używany, wybierz nieużywaną literę dysku do użycia):

    mountvol Z: /s
    copy %WINDIR%\System32\SecConfig.efi Z:\EFI\Microsoft\Boot\SecConfig.efi /Y
    bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
    bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
    bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=Z:
    mountvol Z: /d
    
  7. Ponownie uruchom komputer. Na ekranie rozruchowym powinien zostać wyświetlony monit podobny do następującego:

    Czy chcesz wyłączyć funkcję Credential Guard?

    Naciśnij wskazany klawisz, aby wyłączyć funkcję Credential Guard po wyświetleniu monitu.

  8. Po ponownym uruchomieniu komputera sprawdź ponownie, czy funkcja Hyper-V jest wyłączona (zgodnie z opisem w poprzednich krokach).

Jeśli funkcja Hyper-V nadal nie jest wyłączona, zasady komputera przyłączonego do domeny mogą uniemożliwić wyłączenie funkcji Device Guard lub Credential Guard. W takim przypadku możesz zażądać wykluczenia od administratora domeny, aby zezwolić na rezygnację z funkcji Credential Guard. Alternatywnie możesz użyć komputera, który nie jest przyłączony do domeny, jeśli musisz użyć funkcji HAXM.

Dodatkowe wskazówki dotyczące rozwiązywania problemów

Poniższe sugestie są często przydatne podczas diagnozowania problemów z emulatorem systemu Android.

Uruchamianie emulatora z poziomu wiersza polecenia

Jeśli emulator nie jest jeszcze uruchomiony, możesz uruchomić go z poziomu wiersza polecenia (a nie z poziomu programu Visual Studio), aby wyświetlić jego dane wyjściowe. Zazwyczaj obrazy AVD emulatora systemu Android są przechowywane w następującej lokalizacji (zastąp nazwę użytkownika nazwą użytkownika systemu Windows):

C:\Users\username\.android\avd

Emulator można uruchomić przy użyciu obrazu AVD z tej lokalizacji, przekazując nazwę folderu avD. Na przykład to polecenie uruchamia usługę AVD o nazwie Pixel_API_27:

"C:\Program Files (x86)\Android\android-sdk\emulator\emulator.exe" -partition-size 512 -no-boot-anim -verbose -feature WindowsHypervisorPlatform -avd Pixel_API_27 -prop monodroid.avdname=Pixel_API_27

W tym przykładzie przyjęto założenie, że zestaw SDK systemu Android jest zainstalowany w domyślnej lokalizacji C:\Program Files (x86)\Android\android-sdk; jeśli nie, zmodyfikuj powyższą ścieżkę lokalizacji zestawu SDK systemu Android na komputerze.

Uruchomienie tego polecenia spowoduje wygenerowanie wielu wierszy danych wyjściowych podczas uruchamiania emulatora. W szczególności wiersze, takie jak poniższy przykład, zostaną wydrukowane, jeśli przyspieszanie sprzętowe jest włączone i działa prawidłowo (w tym przykładzie funkcja HAXM jest używana do przyspieszania sprzętowego):

emulator: CPU Acceleration: working
emulator: CPU Acceleration status: HAXM version 6.2.1 (4) is installed and usable.

Wyświetlanie dzienników Menedżer urządzeń

Często można zdiagnozować problemy z emulatorem, wyświetlając dzienniki Menedżer urządzeń. Te dzienniki są zapisywane w następującej lokalizacji:

C:\Users\username\AppData\Local\Xamarin\Logs\16.0

Każdy plik DeviceManager.log można wyświetlić przy użyciu edytora tekstów, takiego jak Notatnik. Poniższy przykładowy wpis dziennika wskazuje, że nie można odnaleźć haXM na komputerze:

Component Intel x86 Emulator Accelerator (HAXM installer) r6.2.1 [Extra: (Intel Corporation)] not present on the system

Problemy z wdrażaniem w systemie macOS

Niektóre komunikaty o błędach mogą być wyświetlane przez emulator podczas wdrażania aplikacji. Poniżej wyjaśniono najczęstsze błędy i rozwiązania.

Błędy wdrażania

Jeśli zostanie wyświetlony błąd dotyczący niepowodzenia instalacji pakietu APK w emulatorze lub niepowodzenia uruchomienia mostka debugowania systemu Android (adb), sprawdź, czy zestaw SDK systemu Android może nawiązać połączenie z emulatorem. Aby zweryfikować łączność, wykonaj następujące czynności:

  1. Uruchom emulator z Menedżer urządzeń systemu Android (wybierz urządzenie wirtualne i kliknij przycisk Start).

  2. Otwórz wiersz polecenia i przejdź do folderu, w którym zainstalowano bazę danych adb . Jeśli zestaw SDK systemu Android jest zainstalowany w domyślnej lokalizacji, adb znajduje się w lokalizacji ~/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb; jeśli nie, zmodyfikuj tę ścieżkę dla lokalizacji zestawu SDK systemu Android na komputerze.

  3. Wpisz następujące polecenie:

    adb devices
    
  4. Jeśli emulator jest dostępny z zestawu Android SDK, emulator powinien zostać wyświetlony na liście dołączonych urządzeń. Na przykład:

    List of devices attached
    emulator-5554   device
    
  5. Jeśli emulator nie jest wyświetlany na tej liście, uruchom Menedżera zestawu ANDROID SDK, zastosuj wszystkie aktualizacje, a następnie spróbuj ponownie uruchomić emulator.

Błąd dostępu MMIO

Jeśli wystąpił błąd dostępu mmIO, uruchom ponownie emulator.

Brakujące usługi Google Play

Jeśli urządzenie wirtualne uruchomione w emulatorze nie ma zainstalowanych usług Google Play ani Sklepu Google Play, ten warunek jest zwykle spowodowany tworzeniem urządzenia wirtualnego bez dołączania tych pakietów. Podczas tworzenia urządzenia wirtualnego (zobacz Zarządzanie urządzeniami wirtualnymi przy użyciu Menedżer urządzeń z systemem Android) pamiętaj, aby wybrać jedno lub oba następujące elementy:

  • Interfejsy API Google — obejmują usługi Google Play na urządzeniu wirtualnym.
  • Sklep Google Play — obejmuje sklep Google Play na urządzeniu wirtualnym.

Na przykład to urządzenie wirtualne będzie zawierać usługi Google Play i Sklep Google Play:

Example AVD with Google Play Services and Google Play Store enabled

Uwaga

Obrazy sklepu Google Play są dostępne tylko dla niektórych podstawowych typów urządzeń, takich jak Pixel, Pixel 2, Nexus 5 i Nexus 5X.

Problemy z wydajnością

Problemy z wydajnością są zwykle spowodowane jednym z następujących problemów:

  • Emulator działa bez przyspieszania sprzętowego.

  • Urządzenie wirtualne uruchomione w emulatorze nie korzysta z obrazu systemu opartego na architekturze x86.

W poniższych sekcjach opisano te scenariusze bardziej szczegółowo.

Przyspieszanie sprzętowe nie jest włączone

Jeśli przyspieszanie sprzętowe nie jest włączone, może pojawić się okno dialogowe z komunikatem, takim jak urządzenie, zostanie uruchomione bez kontroli podczas wdrażania aplikacji w emulatorze systemu Android. Jeśli nie masz pewności, czy na komputerze jest włączone przyspieszanie sprzętowe (lub chcesz wiedzieć, która technologia zapewnia przyspieszenie), zobacz Problemy z przyspieszanie sprzętowe poniżej, aby uzyskać instrukcje, które można wykonać, aby zweryfikować i włączyć przyspieszanie sprzętowe.

Przyspieszanie jest włączone, ale emulator działa zbyt wolno

Częstą przyczyną tego problemu nie jest użycie obrazu opartego na architekturze x86 na urządzeniu wirtualnym. Podczas tworzenia urządzenia wirtualnego (zobacz Zarządzanie urządzeniami wirtualnymi przy użyciu Menedżer urządzeń systemu Android) pamiętaj, aby wybrać obraz systemu oparty na architekturze x86:

Selecting an x86 system image for a virtual device

Problemy z przyspieszaniem sprzętu

Niezależnie od tego, czy używasz programu Hypervisor Framework, czy haXM na potrzeby przyspieszania sprzętowego emulatora, mogą wystąpić problemy spowodowane problemami z instalacją lub nieaktualną wersją systemu macOS. Poniższe sekcje mogą pomóc w rozwiązaniu tego problemu.

Problemy ze strukturą funkcji Hypervisor

Jeśli używasz systemu macOS 10.10 lub nowszego na nowszym komputerze Mac, emulator systemu Android automatycznie użyje struktury hypervisor na potrzeby przyspieszania sprzętowego. Jednak niektóre starsze komputery Mac lub Mac z systemem macOS starszym niż 10.10 mogą nie zapewnić obsługi platformy Hypervisor.

Aby określić, czy komputer Mac obsługuje platformę hypervisor, otwórz terminal i wprowadź następujące polecenie:

sysctl kern.hv_support

Jeśli komputer Mac obsługuje platformę Hypervisor, powyższe polecenie zwróci następujący wynik:

kern.hv_support: 1

Jeśli platforma hypervisor nie jest dostępna na komputerze Mac, możesz wykonać kroki opisane w temacie Przyspieszanie przy użyciu funkcji HAXM, aby zamiast tego użyć funkcji HAXM na potrzeby przyspieszania.

Problemy z wysoką dostępnością maszyn wirtualnych

Jeśli emulator systemu Android nie zostanie uruchomiony prawidłowo, ten problem jest często spowodowany problemami z funkcją HAXM. Problemy z funkcją HAXM są często wynikiem konfliktów z innymi technologiami wirtualizacji, nieprawidłowymi ustawieniami lub nieaktualnym sterownikiem HAXM. Spróbuj ponownie zainstalować sterownik HAXM, wykonując kroki opisane w temacie Instalowanie programu HAXM.

Dodatkowe wskazówki dotyczące rozwiązywania problemów

Poniższe sugestie są często przydatne podczas diagnozowania problemów z emulatorem systemu Android.

Uruchamianie emulatora z poziomu wiersza polecenia

Jeśli emulator nie jest jeszcze uruchomiony, możesz uruchomić go z poziomu wiersza polecenia (a nie z poziomu Visual Studio dla komputerów Mac), aby wyświetlić jego dane wyjściowe. Zazwyczaj obrazy AVD emulatora systemu Android są przechowywane w następującej lokalizacji:

~/.android/avd

Emulator można uruchomić przy użyciu obrazu AVD z tej lokalizacji, przekazując nazwę folderu avD. Na przykład to polecenie uruchamia usługę AVD o nazwie Pixel_2_API_28:

~/Library/Developer/Xamarin/android-sdk-macosx/emulator/emulator -partition-size 512 -no-boot-anim -verbose -feature WindowsHypervisorPlatform -avd Pixel_2_API_28 -prop monodroid.avdname=Pixel_2_API_28

Jeśli zestaw SDK systemu Android jest zainstalowany w domyślnej lokalizacji, emulator znajduje się w katalogu ~/Library/Developer/Xamarin/android-sdk-macosx/emulator . Jeśli nie, zmodyfikuj tę ścieżkę dla lokalizacji zestawu SDK systemu Android na komputerze Mac.

Uruchomienie tego polecenia spowoduje wygenerowanie wielu wierszy danych wyjściowych podczas uruchamiania emulatora. W szczególności wiersze, takie jak poniższy przykład, zostaną wydrukowane, jeśli przyspieszanie sprzętowe jest włączone i działa prawidłowo (w tym przykładzie funkcja Hypervisor Framework jest używana do przyspieszania sprzętowego):

emulator: CPU Acceleration: working
emulator: CPU Acceleration status: Hypervisor.Framework OS X Version 10.13

Problemy dotyczące dodatków intencji nazewnictwa

Po ustawieniu dodatków intencji w konfiguracji uruchamiania systemu Android obsługiwane są tylko numery A-Z, a-z, "_", "-" i numery. Ponadto wszystkie wartości klucza muszą być unikatowe.

Wyświetlanie dzienników Menedżer urządzeń

Często można zdiagnozować problemy z emulatorem, wyświetlając dzienniki Menedżer urządzeń. Te dzienniki są zapisywane w następującej lokalizacji:

~/Biblioteka/Dzienniki/XamarinDeviceManager

Każdy plik Devices.log systemu Android można wyświetlić, klikając go dwukrotnie, aby otworzyć go w aplikacji Konsola. Poniższy przykładowy wpis dziennika wskazuje, że nie znaleziono funkcji HAXM:

Component Intel x86 Emulator Accelerator (HAXM installer) r6.2.1 [Extra: (Intel Corporation)] not present on the system