Usprawnienie działania emulatora Androida

251

Emulator Androida jest nieco powolny. W przypadku niektórych urządzeń, takich jak Motorola Droid i Nexus One, aplikacja działa szybciej na rzeczywistym urządzeniu niż emulator. Jest to problem podczas testowania gier i efektów wizualnych.

Jak sprawić, by emulator działał tak szybko, jak to możliwe? Bawiłem się jego parametrami, ale jeszcze nie znalazłem konfiguracji, która wykazuje zauważalną poprawę.

hpique
źródło
1
wszystkie moje aplikacje działają szybciej na urządzeniu
16
To zabawne, ponieważ symulator iPhone'a jest dokładnie odwrotny. Aplikacje działają wolniej na urządzeniu. W większości przypadków wolę wolniejszy emulator, ponieważ pobudza Cię do ulepszania aplikacji, ale czasami chcesz po prostu zobaczyć, jak działa na prawdziwym urządzeniu.
hpique
1
Możliwe jest, aby działał DUŻO szybciej, inaczej normalnie, za pomocą VirtualBox - patrz stackoverflow.com/a/6058689/40961
David d C e Freitas
5
iOS i Windows Mobile używają Symulatorów, podczas gdy Android używa Emulatorów. Symulatory ponownie wdrażają wszystkie biblioteki mobilne i interfejsy API za pomocą bibliotek hostów, dzięki czemu są szybkie. Emulatory używają tych samych bibliotek, co na prawdziwych urządzeniach, więc jest wolniejszy. Jeśli chodzi o Androida, jeśli używasz maszyny wirtualnej z Androidem, będzie ona bardzo szybka. Zapewniamy bezpłatny vm tutaj: leapdroid.com
huisinro
2
... i jak to jest szalone, że 6 lat później, a nawet przy HAXM i obrazie systemu x86 oraz dobrze zaprojektowanym środowisku programistycznym emulator Androida nadal jest powolny jak melasa?
aroth

Odpowiedzi:

229

Oficjalna strona internetowa

~ 50% szybciej

Windows:

  • Zainstaluj „Intel x86 Emulator Accelerator (HAXM)” => SDK-Manager / Extras
  • Zainstaluj „Obrazy systemowe Intel x86 Atom” => SDK-Manager / Android 2.3.3
  • Przejdź do folderu głównego zestawu SDK systemu Android i przejdź do dodatków \ ​​intel \ Hardware_Accelerated_Execution_Manager. Uruchom plik IntelHaxm.exe, aby zainstalować. (w Android Studio możesz przejść do: Ustawienia -> Android SDK -> Narzędzia SDK -> Intel x86 Emulator Accelerator (instalator HAXM))

  • Utwórz AVD za pomocą procesora / ABI „Intel atom x86”

  • Uruchom emulator i sprawdź w konsoli uruchomioną HAXM (otwórz okno wiersza polecenia i uruchom polecenie: sc query intelhaxm)

wprowadź opis zdjęcia tutaj

Nie zapomnij też zainstalować tego

wprowadź opis zdjęcia tutaj

PS podczas tworzenia AVD dodaj pamięć emulacji: Sprzęt / Nowy / Rozmiar pamięci urządzenia / ustaw wartość 512 lub więcej

Linux:

  • Zainstaluj KVM: otwórz GOOGLE, napisz „instalacja KVM”
  • Utwórz AVD za pomocą procesora / ABI „Intel atom x86”
  • Uruchom z wiersza poleceń: emulator -avd nazwa_dowolna -qemu -m 512 -enable-kvm
  • Lub uruchom z Eclipse: Uruchom / Uruchom konfiguracje / Zakładka „Cel” -> sprawdź Intel x86 AVD iw oknie „Dodatkowe opcje wiersza poleceń emulatora” dodaj: -qemu -m 512 -enable-kvm (kliknij Uruchom)

wprowadź opis zdjęcia tutaj

PS Dla Fedory , dla Ubuntu

OS-X:

  • W Menedżerze SDK systemu Android zainstaluj obraz systemu Intel Atom x86 Atom
  • W Android SDK Manager zainstaluj Intel x86 Emulator Accelerator (HAXM)
  • W wyszukiwarce przejdź do lokalizacji instalacji Intel Emulator Accelerator i zainstaluj IntelHAXM (otwórz dmg i uruchom instalację). Lokalizację można znaleźć, umieszczając wskaźnik myszy nad wpisem Emulator Accelerator w menedżerze SDK.
  • Utwórz lub zaktualizuj AVD i określ Intel Atom x86 jako CPU. Intel x86 Emulator Accelerator (HAXM) pokazuje lokalizację

PS: Sprawdź to narzędzie, bardzo wygodne nawet próbne

Gennadiy Ryabkin
źródło
8
Działa to również w OSX. Musisz zainstalować /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgpo pobraniu pakietu z menedżera SDK.
Jarett Millard
5
Instrukcje Windows z „Use Host GPU” dały mi super szybki emulator! (Mam obsługiwany procesor Intel i kartę graficzną nVidia.) Animacje są płynnie maślane (przez większość czasu ; w innych przypadkach bardzo małe szarpnięcie)! Pamiętaj, że musisz ponownie uruchomić Eclipse, aby AVD Manager mógł wybrać opcję procesora Intel Atom (x86) . Wskazówka: nie przydzielaj zbyt dużo pamięci RAM. Przy 1 GB pamięci RAM emulator nie uruchomił się (z GPU), ale przy 512 MB pamięci RAM działał płynnie i uruchamiał się bardzo szybko (ponownie z GPU).
ADTC
Odkryłem, że LogCat jest spamowany z wieloma ostrzeżeniami dotyczącymi śledzenia. Aby je odfiltrować, użyj ^(?!.*(nativeGetEnabledTags)).*$jako filtru tekstu. Zgłosiłem to jako błąd . Myślę też, że musisz poprawnie wyłączyć urządzenie emulujące (przytrzymaj przycisk zasilania, a następnie wybierz Wyłącz ), aby uniknąć błędów przy następnym uruchomieniu (mogę po prostu zamknąć emulator ARM, ale za pomocą emulatora Intel, samo zamykanie wydaje się stwarzać problemy).
ADTC
Dałbym ci +100, gdybym mógł. Działa na systemie Windows 8, a wydajność znacznie wzrosła!
Paolo M
2
Musiałem najpierw wyłączyć technologię Hyper V za pomocą programu i funkcji w panelu sterowania, aby to zadziałało.
Mike Flynn
34

AKTUALIZACJA: Teraz, gdy obraz Intel x86 jest dostępny, najlepszą odpowiedzią jest powyżej.

Jak słusznie zauważył CommonsWare, emulator działa wolno, ponieważ emuluje procesor ARM, który wymaga tłumaczenia na kody Intel. Ta wirtualizacja żuje procesor.

Aby emulator był szybszy, musisz dać mu więcej procesora. Zacznij od szybkiego procesora lub uaktualnij, jeśli możesz.

Następnie daj emulatorowi więcej posiadanego procesora:

  1. Wyłącz hyperthreading - Ponieważ wydaje się, że emulator nie wykorzystuje więcej niż jednego rdzenia, hyperthreading faktycznie zmniejsza całkowity czas pracy procesora, który emulator będzie miał. Wyłączenie HT spowolni aplikacje korzystające z wielu procesorów. Hyperthreading musi być wyłączony w systemie BIOS.
  2. Uruchom emulator na innym procesorze niż CPU 0 - ma to znacznie mniejszy wpływ niż wyłączenie HT, ale pomaga niektórym. W systemie Windows możesz określić, na którym procesorze proces będzie działał. Wiele aplikacji będzie żuć procesor 0, a domyślnie emulator działa na procesorze 0. Zmieniam emulator, aby działał na ostatnim. Zauważ, że w OS X nie można ustawić powinowactwa (patrz: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Widzę około 50% poprawę po wprowadzeniu tych dwóch zmian.

Aby ustawić koligację procesora w systemie Windows 7:

  1. Otwórz Menedżera zadań
  2. Kliknij opcję Wyświetl wszystkie procesy (aby uruchomić jako administrator, w przeciwnym razie nie można ustawić koligacji procesora)
  3. Kliknij prawym przyciskiem myszy emulator.exe i wybierz Ustaw koligację ...
  4. W oknie dialogowym Ustaw koligację wybierz tylko ostatni procesor

Uwaga: Gdy zmieniasz powinowactwo w ten sposób, zmienia się to tylko na czas trwania procesu. Przy następnym uruchomieniu musisz to zrobić ponownie.

wprowadź opis zdjęcia tutaj

mcohen75
źródło
22
Procent CPU podwoił się po wyłączeniu hiperwątkowości, ponieważ zmniejszyliśmy o połowę liczbę procesorów logicznych.
Timothy003,
1
Działa jak urok, ale .. Czy wiesz, jak to zrobić na Ubuntu 11.10?
emeraldhieu
1
@ Timothy003 tak absolutnie poprawne. I podwoił procesor, którego użyje emulator.
mcohen75
3
Widać tylko podwojenie w liczbach, które pokazuje menedżer zadań; nie w rzeczywistości. Jeśli nie masz wystarczającej ilości oprogramowania, aby wygenerować wystarczającą ilość pracy, aby mieć równowartość co najmniej 4 wątków na 100% procesorze, kilka aplikacji intensywnie wykorzystujących procesor nadal będzie skutecznie uzyskiwać prawie cały rdzeń, a nie półrdzeń, na co naiwnie zakładasz co wyświetla menedżer zadań.
Dan Is Fiddling By Firelight
3
Aby potwierdzić to, co mówi @Dan Neely: Mam aplikację z jednym rdzeniem, która po prostu spala 100% procesora. Kiedy mam HT, pokazuje około 25%, bez pokazuje około 50%, ale w rzeczywistości oblicza to, co musi obliczyć w tym samym czasie. Więc nie ma różnicy (przynajmniej na Sandy Bridge).
bartosz.r
17

Chciałbym zasugerować Genymotion . Działa w VirtualBox Oracle i legalnie osiągnie 60 fps na umiarkowanym systemie.

Oto zrzut ekranu z jednego z moich warsztatów, działającego na niskim MacBooku Air z 2012 roku:

Emulator Nexusa 7 działający z 56,6 fps

Jeśli nie możesz odczytać tekstu, jest to emulator Nexusa 7 działający z 56,6 fps. Dodatkową (dużą!) Premią jest to, że Google Play i Google Play Services są dostarczane wraz z maszynami wirtualnymi.

(Źródło animacji demonstracyjnej można znaleźć tutaj .)

Paul Lammertsma
źródło
12

Włącz przyspieszenie sprzętowe GPU (oprócz HAXM Intela), jeśli używasz API 15 v3 lub nowszego oraz SDK Tools v17 +. Przyspieszenie graficzne emulatora wykorzystuje sprzęt graficzny komputera programistycznego, a zwłaszcza jego procesor graficzny (GPU), aby przyspieszyć rysowanie ekranu. Daje to zauważalny wzrost prędkości.

Aby włączyć akcelerację grafiki domyślnie włączoną w emulatorze : podczas tworzenia AVD, w sekcji Sprzęt kliknij Nowy, wybierz emulację GPU i ustaw wartość na Tak.

Aby włączyć przyspieszenie tylko w czasie wykonywania : użyj flagi -gpu podczas uruchamiania emulatora w następujący sposób:

emulator -avd <avd_name> -gpu on

Źródło: samouczek Google'a dotyczący korzystania z emulatora .

John Lehmann
źródło
10

Edycja Chociaż użycie obrazów Intela ma pewien wzrost wydajności, wydajność uzyskana dzięki zastosowaniu Genymotion jest znacznie większa. Zobacz odpowiedź Paula Lammertsmy .

Poprzednia odpowiedź

Z ADT rev 17 emulator obsługuje uruchamianie obrazów systemu x86 w trybie wirtualizacji w systemach Windows i Mac OS X. Ma to zauważalny wpływ na wydajność.

ADT rev 17 notatek: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

Konfigurowanie przyspieszenia maszyny wirtualnej: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

ThomasW
źródło
7

Niedawno zmieniłem rdzeń 2 @ 2.5 z 3 GB pamięci RAM na i7 @ 1.73 z 8 GB pamięci RAM (oba systemy działały pod Ubuntu 10.10), a emulator działa teraz co najmniej dwa razy szybciej. Rzucanie w to więcej sprzętu z pewnością pomaga.

TripleG
źródło
To nie jest tak naprawdę rozwiązanie: może sprawić, że emulator będzie miał większą przepustowość na czas, ale tak naprawdę nie przyspieszy jego działania.
Jaśniejsze
4

Zauważyłem, że domyślnym emulatorem jest tylko Core 0, przy czym większość aplikacji Windows domyślnie ma „dowolny” rdzeń. Ponadto, jeśli umieścisz go na innym rdzeniu (takim jak ostatni rdzeń), może to spowodować, że emulator oszaleje. Jeśli możesz, możesz spróbować umieścić aplikacje intensywnie wykorzystujące procesor na innych rdzeniach procesora, aby przyspieszyć.

Jeśli chodzi o sprzęt, uzyskaj najszybszy procesor, jaki można uzyskać w przypadku aplikacji jednordzeniowych. Więcej niż 2 rdzenie mogą nie odczuwać ogromnej różnicy pod względem wydajności emulatora.

Eclipse + emulator Androida razem pochłaniają mnóstwo pamięci RAM. Poleciłbym 3 gigabajty pamięci RAM przynajmniej dlatego, że korzystałem z systemu z 2 gigabajtami pamięci RAM, a to zwolniło, ponieważ w systemie zabrakło pamięci RAM i zaczął używać pliku strony.

Uważam, że najlepsze procesory zapewnią wysoki zegar (używają zegara jako miernika dla procesorów tej samej serii btw), dobrze radzą sobie z operacjami innymi niż SIMD i mają mechanizm turbo boost. Nie ma wielu testów porównawczych opartych na Javie, ale ogólny wygląd testów porównawczych aplikacji, takich jak kompresja i pakiet Office. Nie patrz na gry ani media, ponieważ SIMD ma na nie duży wpływ. Jeśli znajdziesz wersję Java, jeszcze lepiej.

Joe P.
źródło
4

W tym roku Google I / O (2011) Google zademonstrował szybszy emulator. Problemem jest nie tyle bajt kodu między ARM a x86, ale renderowanie oprogramowania wykonywane przez QEMU. Pomijają renderowanie QEMU i wysyłają renderowanie bezpośrednio do serwera X, który moim zdaniem. Pokazali grę samochodową o naprawdę dobrych osiągach i fps.

Zastanawiam się, kiedy będzie to dostępne dla programistów ...

Cesar
źródło
Jakieś wieści o tym emulatorze? Jak się nazywał
alcor
Nie mam żadnych wieści Przez około rok nie śledziłem aktualizacji emulatora Androida.
Cesar
3

Google ogłosił niedawno nowy emulator dla Androida. Jest znacznie szybszy i lepszy niż stary. Więcej informacji na ten temat można znaleźć tutaj .

Koc
źródło
1

Myślę, że dzieje się tak, ponieważ wirtualna maszyna clr używa procesora bezpośrednio bez tłumaczenia kodu opcode. Może to być optymalizacja dla aplikacji CLR lub Windows Mobile / Windows Phone 7 uruchomiony na procesorze INTEL. Platforma Android oparta na systemie Linux i teoretycznie możesz uruchomić Androida na maszynie wirtualnej w środowisku i686. W takim przypadku maszyny wirtualne, takie jak vmware, mogą bezpośrednio wykonać niektóre kody operacyjne. Ale ta opcja będzie dozwolona tylko wtedy, gdy piszesz na Javie. Ponieważ Java interpretuje swój kod bajtowy lub prekompiluje go przed wykonaniem. patrz: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

assad
źródło
1

Dziękuję @zest! Działa jak urok. Niektóre rzeczy warte uwagi: Konieczność zastosowania poprawki Intel dla HAXM w celu rozwiązania problemu paniki jądra: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Również należy pamiętać , jeśli masz więcej niż jednego abi, musisz go odinstalować z powodu błędu w najnowszej wersji interfejsu API Androida (r19): https://code.google.com/p/android/issues/detail?id= 66740 (w tym przypadku usuń armeabi-v7a, ponieważ chcesz abi x86). Poza 45-minutowym zajęciem ich rozwiązania, było to bardzo satysfakcjonujące ćwiczenie pod względem zwiększonej wydajności emulatora.

horcle_buzz
źródło
1

Możesz także wypróbować Visual Studio Android Emulator , który można również zainstalować jako samodzielny emulator (nie potrzebujesz Visual Studio). Pamiętaj, że można go zainstalować tylko w systemach Windows Pro lub nowszych.

David Dostal
źródło
1

Użyj Genymotion zamiast emulatora. Genymotion ma lepszą wydajność https://www.genymotion.com

Oleg Tarashkevich
źródło
1

wybierz emulator niskiej rozdzielczości (np .: Nexus S), jeśli nie masz dobrej karty graficznej (takiej jak ja)

Dan Alboteanu
źródło
0

Korzystałem z procesora / ABI Intel (86). Stworzyłem kolejny emulator za pomocą ARM (armeabi-v7a) i zauważyłem znaczną poprawę prędkości. Korzystam z platformy 4.1.2 interfejsu API poziomu 16

dziwny programista
źródło
0

Mam nadzieję, że to Ci pomoże.

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

To rozwiązało mój problem ...

RajeshVijayakumar
źródło
0

Zaktualizuj swój obecny Android Studio do Android Studio 2.0, a także zaktualizuj obrazy systemowe.

Emulator Android Studio 2.0 działa około 3 razy szybciej niż poprzedni emulator Androida, a dzięki ulepszeniom ADB możesz teraz przesyłać aplikacje i dane 10 razy szybciej do emulatora niż do urządzenia fizycznego. Podobnie jak urządzenie fizyczne, oficjalny emulator Androida zawiera także wbudowane usługi Google Play, dzięki czemu możesz przetestować więcej funkcji API. Wreszcie, nowy emulator ma bogate nowe funkcje do zarządzania połączeniami, baterią, siecią, GPS i więcej.

Umer
źródło