Rozwiązanie problemu: „HAX nie działa, a emulator działa w trybie emulacji”


141

Pytaniem jest

Otrzymuję komunikat „HAX nie działa, a emulator działa w trybie emulacji”. Czy jest to związane z instalacją Intel x86 Emulator Accelerator (HAXM) i uruchomieniem avd z procesorem ustawionym na procesor Intel Atom (x86)? I chociaż wydaje się, że AVD działa szybciej po zainstalowaniu HAXM, czy ten komunikat wskazuje, że wydajność AVD jest ograniczona. Czy należy to naprawić, a jeśli tak, to w jaki sposób?

Używam systemu Mac OS X 10.9.1.

Lista tego, co jest zainstalowane w moim systemie za pośrednictwem menedżera Android SDK:

  • Przybory
    • Narzędzia Android SDK w wersji 22.3.1
    • Narzędzia platformy Android SDK w wersji 19.0.1
    • Narzędzia do tworzenia zestawu SDK systemu Android w wersji 19.0.1
    • Narzędzia do tworzenia zestawu SDK systemu Android w wersji 19

==

  • Android 4.4.2 (API 19)
    • Platforma SDK
    • Obraz systemu ARM EABI v7a
    • Obraz systemu Intel x86 Ato
    • Interfejsy API Google
    • Źródła dla Android SDK

==

  • Dodatki
    • Intel x86 Emulator Accelerator (HAXM) I RÓWNIEŻ uruchamiam również instalator dmg i instaluję poprawkę, gdy się o tym dowiedziałem.

Konfiguracja AVD

  • Platforma 4.4.2
  • Poziom API 19
  • Procesor Intel Atom (x86)

Po uruchomieniu avd:

(ruby-2.0.0-p353) .android   $ tools/emulator -avd 1AVD -wipe-data -no-boot-anim -cpu-delay 0

otrzymuję obserwację i emulator w końcu się ładuje

emulator: The memory needed by this VM exceeds the driver limit.

HAX is not working and emulator runs in emulation mode

Pojawił się ten błąd, ale mój emulator już działał, więc moim prawdziwym problemem było to, że celem programu Visual Studio był iPhone zamiast dowolnego procesora , co naprawiło moje wdrożenie w symulatorze.
Jaider

Odpowiedzi:


200

Tak, to powinno zostać naprawione, HAXM nie działa. Ile pamięci RAM jest ustawione do użytku w Twojej konfiguracji AVD?

768M to dobra liczba, ale co najważniejsze, liczba ta musi być mniejsza lub równa zużyciu pamięci ustawionemu podczas instalacji HAXM. Możesz ponownie uruchomić jego instalację, aby ją zmodyfikować.


9
dziękuję @ ph0b, to wszystko, HAXM został zainstalowany z przydzieleniem 1024 pamięci, a moja instancja avd miała przydział pamięci ustawiony na 1907. Dziękuję za zwrócenie uwagi.
GnrlBzik

44
Instalator HAXM zasugerował domyślnie 1 GB, ale Nexus 5 AVD jest ustawiony na 1536. Ustaw go z powrotem na 1 GB i gotowe!
aalaap

14
Dzięki. Dla tych, którzy się zastanawiali, lokalizacja pliku instalacyjnego HAXM znajduje się w sdk/extras/intelfolderze pakietu ADT. Umieszczenie kursora na wpisie HAXM w menedżerze AVD ujawni dokładną lokalizację.
Koh

2
@zhelon najwyraźniej jedynym sposobem na skonfigurowanie HAXM jest ponowne uruchomienie instalatora.
Thomas W

23
Jeśli korzystasz z systemu Windows i Android Studio, wykonaj następujące czynności. W Android Studio: Narzędzia> Android> Menedżer AVD> Twoje urządzenie> Pokaż ustawienia zaawansowane> Ustaw preferowany rozmiar pamięci RAM. W Panelu sterowania> Programy i funkcje> Intel Hardware Accelerated Execution Manager> Zmień> Ustaw ręcznie> Ustaw preferowany rozmiar.
Neurotransmitter

66

Jeśli korzystasz z komputera Mac, możesz zainstalować haxmza pomocą homebrew przez cask, który jest wbudowanym rozszerzeniem (od 2015 r.), Które umożliwia instalowanie aplikacji innych niż open source i aplikacji komputerowych (tj. Chrome, Firefox, Eclipse itp.):

brew cask install intel-haxm 

Android Studio

Jeśli korzystasz z Android Studio to ten sam rezultat możesz osiągnąć z menu ToolsSDK Manager, a następnie na karcie SDK Tools zaznacz pole wyboru Intel x86 Emulator Accelerator (instalator HAXM) i kliknij Ok.


49

Sposób, w jaki to rozwiązałem, to ustawienie limitu pamięci AVD i pamięci HAXM na równą wielkość, która wynosi 1 GB = 1024 MB. AVD nie może mieć wyższego limitu pamięci niż HAXM.

1. Ustawienie pamięci HAXM na 1024 MB

Jedynym sposobem zmiany pamięci HAXM jest ponowna instalacja. Zrobiłem to za pomocą terminala. Zlokalizuj Hardware_Accelerated_Execution_Manager na swoim komputerze. Następnie zmień katalog tego folderu, aby uruchomić skrypt instalacyjny.

cd ~/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager

-OR-

cd ~/Library/Developer/Xamarin/android-sdk-macosx/extras/intel/Hardware_Accelerated_Execution_Manager

Może zajść potrzeba zmiany uprawnień:

sudo chmod 755 "HAXM installation"

Następnie:

./HAXM\ installation -m 1024

-OR-

sudo ./"HAXM installation" -m 1024

2. Ustawienie tego samego rozmiaru urządzenia wirtualnego z limitem pamięci HAXM

wprowadź opis obrazu tutaj

To działa dla mnie. Powodzenia!


2
U mnie to też zadziałało. Jeśli szukasz ekranu konfiguracji AVD, przejdź do Narzędzia> Android> AVD Manager
stephenspann

2
Jeśli chcesz mieć więcej niż jeden AVD działający w tym samym czasie, maksymalna pamięć RAM HAXM musi być sumą wszystkich działających AVD, tj. Dwa AVD przy 1024 MB = 2048 MB, więc:$ sudo ./HAXM\ installation -m 2048
Jason Hartley


20

Dla Windowsa.

W Android Studio:

Narzędzia > Android > AVD Manager > Twoje urządzenie > Ikona ołówka > Pokaż ustawienia zaawansowane > Pamięć i pamięć > RAM > Ustaw preferowany rozmiar pamięci RAM.

W Control Panel:

Programy i funkcje > Intel Hardware Accelerated Execution Manager > Zmień > Ustaw ręcznie > Ustaw pamięć RAM na preferowany rozmiar.

Lepiej jest, aby rozmiary pamięci RAM ustawione w obu miejscach były takie same.


2
+1 za wyjaśnienie dokładnego miejsca ustawienia tych wartości. Zbyt wiele odpowiedzi w Internecie zakłada poziom wiedzy, którego czytelnik, tak jak ja, nie zawsze posiada :-)
MikeKulls

4

Sprawdź najnowszą wersję Has w witrynie firmy Intel i zainstaluj ją. Pozwól pamięci RAM w zalecanym rozmiarze „wstępnie ustawić 2048”, a następnie spróbuj uruchomić aplikację. Wszystko powinno działać dobrze.


2

Tak, to powinno zostać naprawione, HAXM nie działa.

HAXM czasami działa; doświadczenie z HAXM jest obecnie sporadyczne na różnych platformach.

Na przykład mam komputer iMac z końca 2009 roku z procesorem 10.8.5 i i7 @ 2.8Ghz, Android SDK 22.6 ze wszystkimi dodatkami zaktualizowanymi dziś rano (03/05/14). API17 zbuduje emulatory z akceleracją HAXM na tym komputerze iMac, API19 się dławi.

Mam też Retina z początku 2013 roku MBP 15 "z procesorem 10.8.5 i i7 @ 2,7Ghz, Android SDK 22.6 ze wszystkimi dodatkami zaktualizowanymi dziś rano (03/05/14). API17 zbuduje emulatory z akceleracją HAXM, API19 też działa świetnie .

To samo dotyczy mojego (osobistego) MBP Retina 13 "z końca 2013 r. Z dwurdzeniowym procesorem i5 i Mavericks.

Jest coś, czego brakuje do wirtualizacji na poziomie chipów w starszych procesorach (nawet i7), których potrzebują nowe obrazy API19 x86, aby HAXM działał. Jeśli API19 nie działa, wypróbuj API17 lub nawet 16.


2

Na komputerze Mac Otwórz wyszukiwarkę, a następnie Ctr + Alt + G wpisz to/Users/${yourMacNameHere}/Library/Android/sdk/extras/intel/Hardware_Accelerated_Execution_Manager

zamierzasz znaleźć instalator akceleratora emulatora, więc uruchom go i skonfiguruj pamięć, której potrzebujesz, zmodyfikuj go i spróbuj ponownie uruchomić aplikację na Androida


Powyższa sekwencja klawiszy nie działała dla mnie, ale po prostu szukałem IntelHAXM_<version name>.dmgpliku w katalogu
``

2

jeśli korzystasz z procesora Intel, upewnij się, że instalator HAXM (Intel® Hardware Accelerated Execution Manager) został zainstalowany za pośrednictwem Menedżera SDK, zaznaczając tę ​​opcję w Menedżerze SDK. a następnie uruchom instalator HAXM ext, korzystając z poniższej ścieżki

your_sdk_folder\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm.exe

sprawdź również rozmiar pamięci RAM przydzielony podczas instalacji HAX, aby pasował do rozmiaru pamięci RAM Twojego emulatora.

Ten film przedstawia wszystkie wymagane kroki, które mogą pomóc w rozwiązaniu problemu.

Ten film pomoże Ci również w przypadku problemów po zainstalowaniu HAXM.


1

Albo zwiększ rozmiar pamięci RAM przydzielony podczas instalacji HAX, aby zmieścić dokładnie lub nieco więcej miejsca niż rozmiar pamięci RAM emulatora, który chcesz uruchomić w trybie "Intel x86 Emulator Accelerator (HAXM)",

Gdy ci się to uda, możesz teraz zobaczyć to w konsoli / dzienniku

wprowadź opis obrazu tutaj



1

rozwiązanie Geckoba działa doskonale. Przestroga: dostarczony HAXM jest używany we wszystkich uruchomionych urządzeniach. Więc jeśli testujesz na telefonie i tablecie w tym samym czasie i każdy z nich ma wymaganie 1G. Następnie upewnij się, że przydzielony HAXM ma co najmniej 2G.


1

Pobierz HAXM z Menedżera SDK

Otwórz Menedżera SDK z Android Studio, kliknij ikonę pokazaną na zrzucie ekranu.

wprowadź opis obrazu tutaj

Kliknij opcję „Uruchom autonomicznego menedżera SDK” w oknie dialogowym „Ustawienia domyślne”.

wprowadź opis obrazu tutaj

Sprawdź węzeł „Dodatki> Akcelerator emulatora Intel x86 (instalator HAXM)” i kontynuuj pobieranie HAXM.

wprowadź opis obrazu tutaj

Instalowanie lub modyfikowanie HAXM

Możesz teraz uzyskać dostęp do instalacji (lub modyfikacji istniejącego installtino) HAXM, uzyskując dostęp do lokalizacji pobierania. Wprowadź tę ścieżkę w polu „Uruchom”

% localappdata% \ Android \ sdk \ extras \ intel \ Hardware_Accelerated_Execution_Manager

i dwukrotnie kliknij plik „intelhaxm-android.exe”

Możesz zwiększyć rozmiar pamięci przydzielonej do HAXM podczas modyfikowania istniejącej instalacji HAXM. Mam maszynę z 32 GB pamięci RAM i chciałbym uruchomić wiele AVD w tym samym czasie (do automatycznego testowania itp.), Więc przeznaczyłem 8 GB na HAXM.

Caveat

Jeśli używasz jednego AVD o wielkości 1 GB i przydzielono 2 GB do HAXM, nie możesz uruchomić innego AVD z pamięcią RAM większą niż 1 GB. Upewnij się, że Android Device Monitor nie działa podczas modyfikowania lub instalowania HAXM (aby uniknąć niespodzianek).

wprowadź opis obrazu tutaj

Te kroki są testowane na platformie Windows, ale ogólnie można je zastosować również na innych platformach z niewielkimi modyfikacjami.


1

Mój problem polegał na tym, że nie mogłem już uruchomić emulatora, który działał, ponieważ zamknąłem aplikację emulatora, ale proces nie został w pełni zakończony, więc próbowałem uruchomić inny emulator, podczas gdy poprzedni nadal działał. Na komputerze Mac musiałem użyć Monitora aktywności, aby zobaczyć inny proces i go zabić. Kroki:

  1. Otwórz Monitor aktywności (w Narzędziach lub używając Command + Space)
  2. Znajdź nazwę procesu, w moim przypadku qemu-system ...
  3. Wybierz proces.
  4. Wymuś zakończenie procesu za pomocą przycisku „x” w lewym górnym rogu.
  5. Nie musiałem używać „Wymuś koniec”, tylko zwykłego „Zakończ”, ale możesz użyć jednego z nich.

1

W moim przypadku ten błąd został naprawiony, gdy ustawiłem pamięć HAXM równą pamięci AVD. Pamięć HAXM 1024 MB = pamięć AVD 1024 MB

Hax is enabled
Hax ram_size 0x40000000
HAX is working and emulator runs in fast virt mode.

Do tego momentu błąd powinien zostać naprawiony.

Teraz wymieniam moje określone środowisko na wypadek, gdyby mogło być pomocne dla kogoś używającego OS X.

OS X El Capitan 10.11.4

MacBook (13-calowy), 2 GHz Intel Core 2 Duo, 4 GB pamięci RAM.

Android Studio 2.1

Marshmallow (23) x86 nie przechodził przez migający ekran ikon Androida nawet przez kilka godzin.

Lollipop (22) x86 przeszedł przez migający ekran ikony Androida, a następnie pokazał

  • Uruchamianie Androida (optymalizacja x z y aplikacji)
  • Uruchamianie Androida (uruchamianie aplikacji)
  • Uruchamianie Androida (aktualizowanie bazy danych kontaktów)
  • Uruchamiam Androida (kończę rozruch) i utknąłem tutaj przez wiele godzin .

KitKat (19) x86 działał pomyślnie i mogłem tam zainstalować hello world.


czy to jest odpowiedź? @zeeawan
GnrlBzik

Tak, pamięć HAXM 1024 MB = kombinacja pamięci AVD 1024 MB sprawia, że ​​hax zaczął działać. Dodatkowo ta odpowiedź dotyczy tego, jak emulator zaczął działać dla mnie na OS X.
zeeawan

Myślę, że potrzebuję więcej narracji.
GnrlBzik

Więc mówisz, że naprawiłeś błąd, ale nadal masz problemy z uruchomieniem emulatora?
Sam

To było w porządku z KitKat (19) x86.
zeeawan

0

Otwórz ponownie konfigurację urządzenia AVD. edytując urządzenie w menedżerze AVD. przejdź do wyboru wersji AVD dla systemu Android. W prawym okienku wyświetlane jest zalecenie, postępuj zgodnie z nim i wszystko zostanie naprawione.


0

Domyślna pamięć przypisana do HAX to 1024 MB. Emulator ma najwyraźniej 1536 MB dla Nexusa 5x api 25.

jeśli używasz Android Studio,

  • po prostu przejdź do narzędzia -> Menedżer AVD.
  • Następnie wybierz emulator i kliknij przycisk ołówka po prawej stronie, aby edytować.
  • Przejdź do ustawień zaawansowanych w nowym oknie i zmień wartość pamięci RAM na 1024

Działa jak marzenie. :)

zrzut ekranu z Android Studio

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.