Den Android-Emulator schneller laufen lassen


251

Der Android-Emulator ist etwas träge. Bei einigen Geräten, wie dem Motorola Droid und dem Nexus One, läuft die App auf dem tatsächlichen Gerät schneller als auf dem Emulator. Dies ist ein Problem beim Testen von Spielen und visuellen Effekten.

Wie lässt du den Emulator so schnell wie möglich laufen? Ich habe mit seinen Parametern gespielt, aber noch keine Konfiguration gefunden, die eine spürbare Verbesserung zeigt.


1
Alle meine Apps laufen schneller auf dem Gerät

16
Es ist lustig, weil der iPhone-Simulator genau das Gegenteil ist. Die Apps laufen auf dem Gerät langsamer. In den meisten Fällen bevorzuge ich einen langsameren Emulator, weil er Sie dazu anregt, Ihre App zu verbessern, aber manchmal möchten Sie einfach nur sehen, wie sie auf einem realen Gerät funktioniert.
Hpique

1
Es ist möglich, es VIEL schneller laufen zu lassen, auch bekannt als normal, indem man VirtualBox verwendet - siehe stackoverflow.com/a/6058689/40961
David d C e Freitas

5
iOS und Windows Mobile verwenden Simulatoren, während Android Emulatoren verwendet. Simulatoren implementieren alle mobilen Bibliotheken und APIs mithilfe von Hostbibliotheken erneut und sind daher schnell. Emulatoren verwenden dieselben Bibliotheken wie auf den realen Geräten, daher ist es langsamer. In Bezug auf Android ist es sehr schnell, wenn Sie eine virtuelle Android-Maschine verwenden. Wir bieten eine kostenlose VM hier: leapdroid.com
Huisinro

2
... und wie verrückt ist es, dass 6 Jahre später und selbst mit HAXM und dem x86-System-Image und einer gut spezifizierten Entwicklungsumgebung der Android-Emulator immer noch langsam wie Melasse ist?
Aroth

Antworten:


229

Offizielle Webseite

~ 50% schneller

Windows:

  • Installieren Sie "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Extras
  • Installieren Sie "Intel x86 Atom System Images" => SDK-Manager / Android 2.3.3
  • Wechseln Sie zum Android SDK-Stammordner und navigieren Sie zu extras \ intel \ Hardware_Accelerated_Execution_Manager. Führen Sie die zu installierende Datei IntelHaxm.exe aus. (In Android Studio können Sie navigieren zu: Einstellungen -> Android SDK -> SDK-Tools -> Intel x86 Emulator Accelerator (HAXM-Installationsprogramm))

  • Erstellen Sie eine AVD mit "Intel Atom x86" -CPU / ABI

  • Führen Sie den Emulator aus und überprüfen Sie in der Konsole, ob HAXM ausgeführt wird (öffnen Sie ein Eingabeaufforderungsfenster und führen Sie den folgenden Befehl aus: sc query intelhaxm)

Geben Sie hier die Bildbeschreibung ein

Vergessen Sie auch nicht, dieses zu installieren

Geben Sie hier die Bildbeschreibung ein

PS während der AVD-Erstellung Emulationsspeicher hinzufügen: Hardware / Neu / Geräte-RAM-Größe / Einrichtungswert 512 oder mehr

Linux:

  • KVM installieren: GOOGLE öffnen, "kvm-Installation" schreiben
  • Erstellen Sie eine AVD mit "Intel Atom x86" -CPU / ABI
  • Führen Sie es über die Befehlszeile aus: Emulator -avd avd_name -qemu -m 512 -enable-kvm
  • Oder führen Sie Eclipse aus: Ausführen / Ausführen von Konfigurationen / Registerkarte "Ziel" -> Überprüfen Sie Intel x86 AVD und fügen Sie im Fenster "Zusätzliche Emulator-Befehlszeilenoptionen" Folgendes hinzu: -qemu -m 512 -enable-kvm (klicken Sie auf Ausführen)

Geben Sie hier die Bildbeschreibung ein

PS Für Fedora , für Ubuntu

OS-X:

  • Installieren Sie im Android SDK Manager das Intel x86 Atom System Image
  • Installieren Sie im Android SDK Manager den Intel x86 Emulator Accelerator (HAXM).
  • Wechseln Sie im Finder zum Installationsverzeichnis des Intel Emulator Accelerator und installieren Sie IntelHAXM (öffnen Sie das dmg und führen Sie die Installation aus). Sie finden den Speicherort, indem Sie mit der Maus über den Eintrag Emulator Accelerator im SDK-Manager fahren.
  • Erstellen oder aktualisieren Sie eine AVD und geben Sie Intel Atom x86 als CPU an. Intel x86 Emulator Accelerator (HAXM) zeigt den Standort an

PS: Überprüfen Sie dieses Tool, sehr praktisch sogar Test


8
Dies funktioniert auch unter OSX. Sie müssen es installieren, /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgnachdem Sie das Paket vom SDK-Manager heruntergeladen haben.
Jarett Millard

5
Die Windows-Anleitung mit "Use Host GPU" gab mir einen superschnellen Emulator! (Ich habe einen unterstützten Intel-Prozessor und eine nVidia-Grafikkarte.) Die Animationen sind butterweich ( meistens ; zu anderen Zeiten sehr wenig Ruckeln)! Beachten Sie, dass Sie Eclipse neu starten müssen, damit der AVD Manager die Intel Atom (x86) -CPU-Option übernimmt. Tipp: Weisen Sie nicht zu viel RAM zu. Mit 1 GB RAM konnte der Emulator nicht gestartet werden (mit GPU), aber mit 512 MB RAM lief er reibungslos und startete sehr schnell (wieder mit GPU).
ADTC

Ich habe festgestellt, dass der LogCat mit vielen Trace-Warnungen gespammt wird. Verwenden Sie ^(?!.*(nativeGetEnabledTags)).*$zum Herausfiltern diesen Text als Textfilter. Ich habe dies als Fehlerproblem gemeldet . Ich denke auch, dass Sie Ihr Emulatorgerät ordnungsgemäß herunterfahren müssen (halten Sie den Netzschalter gedrückt und wählen Sie dann Ausschalten ), um Fehler beim nächsten Start zu vermeiden (ich könnte den ARM-Emulator einfach schließen, aber mit dem Intel-Emulator). Nur das Schließen scheint Probleme zu verursachen.
ADTC

Ich würde dir +100 geben, wenn ich könnte. Funktioniert unter Windows 8 und die Leistung wurde enorm gesteigert!
Paolo M

2
Ich musste die Hyper V-Technologie zuerst über das Programm und die Funktionen unter dem Bedienfeld deaktivieren, damit dies funktioniert.
Mike Flynn

34

UPDATE: Jetzt, da ein Intel x86-Image verfügbar ist, ist die beste Antwort oben.

Wie CommonsWare richtig hervorgehoben hat, ist der Emulator langsam, da er eine ARM-CPU emuliert, für die eine Übersetzung in Intel-Opcodes erforderlich ist. Diese Virtualisierung zerkaut die CPU.

Um den Emulator schneller zu machen, müssen Sie ihm mehr CPU geben. Beginnen Sie mit einer schnellen CPU oder aktualisieren Sie, wenn Sie können.

Geben Sie dem Emulator dann mehr von der CPU, die Sie haben:

  1. Hyperthreading deaktivieren - Da der Emulator anscheinend nicht mehr als einen Kern verwendet, reduziert Hyperthreading tatsächlich die Gesamt-CPU-Zeit, die der Emulator benötigt. Durch Deaktivieren von HT werden Apps verlangsamt, die mehrere CPUs nutzen. Hyperthreading muss in Ihrem BIOS deaktiviert sein.
  2. Lassen Sie den Emulator auf einer anderen CPU als CPU 0 laufen - Dies hat eine viel geringere Auswirkung als das Ausschalten von HT, hilft aber einigen. Unter Windows können Sie angeben, auf welcher CPU ein Prozess ausgeführt werden soll. Viele Apps kauen CPU 0 und standardmäßig läuft der Emulator auf CPU 0. Ich ändere den Emulator so, dass er auf dem letzten läuft. Beachten Sie, dass Sie unter OS X keine Affinität festlegen können (siehe: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Mit diesen beiden Änderungen sehe ich eine Verbesserung um etwa 50% .

So legen Sie die Prozessoraffinität unter Windows 7 fest:

  1. Öffnen Sie den Task-Manager
  2. Klicken Sie auf Alle Prozesse anzeigen (um als Administrator ausgeführt zu werden, andernfalls können Sie die Prozessoraffinität nicht festlegen.)
  3. Klicken Sie mit der rechten Maustaste auf emulator.exe und wählen Sie Affinität festlegen ...
  4. Wählen Sie im Dialogfeld "Affinität festlegen" nur die letzte CPU aus

Hinweis: Wenn Sie die Affinität auf diese Weise ändern, wird sie nur für die Lebensdauer des Prozesses geändert. Beim nächsten Start müssen Sie es erneut tun.

Geben Sie hier die Bildbeschreibung ein


22
Der CPU-Prozentsatz hat sich verdoppelt, als Sie das Hyper-Threading deaktiviert haben, weil Sie die Anzahl der logischen Prozessoren halbiert haben.
Timothy003

1
Es funktioniert wie Charme, aber .. Wissen Sie, wie es unter Ubuntu 11.10 geht?
Smaragdhieu

1
@ Timothy003 ja absolut richtig. Und verdoppelte die CPU, die der Emulator verwenden wird.
mcohen75

3
Sie sehen nur eine Verdoppelung in den Zahlen, die der Task-Manager anzeigt. nicht in Wirklichkeit. Wenn Sie nicht genug Software ausführen, um genug Arbeit zu generieren, um mindestens 4 Threads bei 100% CPU zu haben, erhalten die wenigen Apps mit hoher CPU-Auslastung immer noch fast den gesamten Kern, nicht den halben Kern, von dem Sie naiv ausgehen Was der Task-Manager anzeigt, bedeutet.
Dan spielt am Feuer

3
Um zu bestätigen, was @Dan Neely sagt: Ich habe eine Single-Core-App, die nur 100% CPU brennt. Wenn ich HT habe, zeigt es ungefähr 25%, ohne dass es ungefähr 50% zeigt, aber tatsächlich berechnet es, was es in der gleichen Zeit berechnen muss. Also kein Unterschied (zumindest auf der Sandy Bridge).
Bartosz.r

17

Ich möchte vorschlagen, Genymotion eine Wendung zu geben . Es läuft in der VirtualBox von Oracle und erreicht auf einem moderaten System zu Recht 60 fps.

Hier ist eine Bildschirmabdeckung aus einem meiner Workshops, die auf einem 2012er Low-End-Modell MacBook Air ausgeführt wird:

Nexus 7-Emulator mit 56,6 fps

Wenn Sie den Text nicht lesen können, handelt es sich um einen Nexus 7-Emulator mit 56,6 fps. Der zusätzliche (große!) Bonus besteht darin, dass Google Play und Google Play Services mit den virtuellen Maschinen geliefert werden.

(Die Quelle der Demo-Animation finden Sie hier .)


12

Aktivieren Sie die GPU-Hardwarebeschleunigung (zusätzlich zu Intels HAXM), wenn Sie API 15 v3 oder höher und SDK Tools v17 + verwenden. Die Grafikbeschleunigung für den Emulator nutzt die Grafikhardware Ihres Entwicklungscomputers, insbesondere die Grafikverarbeitungseinheit (GPU), um das Zeichnen auf dem Bildschirm zu beschleunigen. Dies erhöht die Geschwindigkeit spürbar.

So aktivieren Sie die standardmäßig auf Ihrem Emulator aktivierte Grafikbeschleunigung : Klicken Sie beim Erstellen der AVD im Abschnitt Hardware auf Neu, wählen Sie GPU-Emulation aus und setzen Sie den Wert auf Ja.

So aktivieren Sie die Beschleunigung nur zur Laufzeit : Verwenden Sie das Flag -gpu, während Sie den Emulator wie folgt starten:

emulator -avd <avd_name> -gpu on

Quelle: Google verwendet das Emulator-Tutorial .


10

Bearbeiten Obwohl die Verwendung der Intel-Images einige Leistungssteigerungen bringt, ist die durch die Verwendung von Genymotion erzielte Leistung viel höher. Siehe Paul Lammertsmas Antwort .

Vorherige Antwort

Mit ADT Version 17 unterstützt der Emulator das Ausführen von x86-Systemabbildern im Virtualisierungsmodus unter Windows und Mac OS X. Dies hat spürbare Auswirkungen auf die Leistung.

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

Konfigurieren der Beschleunigung virtueller Maschinen: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm


7

Ich habe kürzlich von einem Core 2 @ 2.5 mit 3 GB RAM auf einen i7 @ 1.73 mit 8 GB RAM umgestellt (auf beiden Systemen wurde Ubuntu 10.10 ausgeführt), und der Emulator läuft jetzt mindestens doppelt so schnell. Es hilft sicherlich, mehr Hardware darauf zu werfen.


Dies ist keine wirkliche Lösung: Es kann dazu führen, dass der Emulator einen höheren Durchsatz pro Zeit hat, aber er lässt ihn nicht schneller laufen.
Klarer


4

Ich habe festgestellt, dass der Emulator standardmäßig nur Core 0 verwendet, wobei die meisten Windows-Anwendungen standardmäßig "einen beliebigen" Core verwenden. Wenn Sie es auf einen anderen Kern (wie den letzten Kern) legen, wird der Emulator möglicherweise verrückt. Wenn Sie können, können Sie versuchen, Ihre Anwendungen mit hoher CPU-Auslastung auf die anderen CPU-Kerne zu übertragen, um die Geschwindigkeit zu erhöhen.

In Bezug auf die Hardware erhalten Sie die schnellste CPU, die Sie für Single-Core-Anwendungen erhalten können. Bei mehr als 2 Kernen besteht möglicherweise kein großer Unterschied in Bezug auf die Emulatorleistung.

Eclipse + der Android-Emulator verbrauchen zusammen eine Menge RAM. Ich würde 3 GB RAM empfehlen, zumindest weil ich ein System mit 2 GB RAM verwendet habe, und es wurde langsamer, weil das System keinen RAM mehr hat und die Auslagerungsdatei verwendet.

Ich bin der Meinung, dass die besten CPUs dafür wahrscheinlich einen hohen Takt haben werden (verwenden Sie den Takt übrigens nur als Maß für CPUs derselben Serie), Nicht-SIMD-Operationen gut handhaben und einen Turbo-Boost-Mechanismus haben werden. Es gibt nicht viele Java-basierte Benchmarks, aber insgesamt sollten Sie nach Anwendungsbenchmarks wie Komprimierung und Office suchen. Schauen Sie sich keine Spiele oder Medien an, da diese stark von SIMD betroffen sind. Wenn Sie ein Java finden, noch besser.


4

In diesem Jahr hat Google I / O (2011) einen schnelleren Emulator demonstriert. Das Problem liegt nicht so sehr im Bytecode zwischen ARM und x86, sondern im von QEMU durchgeführten Software-Rendering. Sie umgehen das Rendering von QEMU und senden das Rendering direkt an einen X-Server, glaube ich. Sie zeigten ein Autospiel mit wirklich guter Leistung und fps.

Ich frage mich, wann das für Entwickler verfügbar sein wird ...


Gibt es Neuigkeiten von diesem Emulator? Wie war der Name?
Alcor

Ich habe keine Neuigkeiten. Ich habe die Android-Emulator-Updates für das letzte Jahr oder so nicht weiterverfolgt.
Cesar

3

Google hat kürzlich einen neuen Emulator für Android angekündigt. Es ist viel schneller und besser als das alte. Weitere Informationen dazu finden Sie hier .


1

Ich denke, das liegt daran, dass die virtuelle Maschine von clr die CPU direkt ohne Code-Opcode-Übersetzung verwendet. Dies kann eine Optimierung für die CLR-Anwendung sein oder Windows Mobile / Windows Phone 7, das auf dem INTEL-Prozessor gestartet wurde. Android-Plattform basiert auf Linux und theoretisch können Sie Android auf einer virtuellen Maschine in einer i686-Umgebung starten. In diesem Fall könnten virtuelle Maschinen wie VMware einige Opcodes direkt ausführen. Diese Option ist jedoch nur zulässig, wenn Sie auf Java schreiben. Weil Java ihren Bytecode interpretiert oder vor der Ausführung vorkompiliert. Siehe: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks


1

Danke @zest! Lief wie am Schnürchen. Einige wichtige Punkte: Sie müssen Intels Hotfix für das HAXM anwenden, um das Problem mit der Kernel-Panik zu lösen: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager Beachten Sie auch Wenn Sie mehr als ein Abi haben, müssen Sie eines aufgrund eines Fehlers in der neuesten Version der Android-API (r19) deinstallieren: https://code.google.com/p/android/issues/detail?id= 66740 (entfernen Sie in diesem Fall armeabi-v7a, da Sie das x86 abi möchten). Abgesehen von den 45 Minuten, die ich brauchte, um diese Probleme zu lösen, war es eine sehr lohnende Übung in Bezug auf die gesteigerte Leistung des Emulators.


1

Sie können auch den Visual Studio Android Emulator ausprobieren , der auch als eigenständiger Emulator installiert werden kann (Sie benötigen Visual Studio nicht). Bitte beachten Sie, dass es nur auf Windows Pro oder höheren Systemen installiert werden kann.



1

Wählen Sie einen Emulator mit niedriger Auflösung (z. B. Nexus S), wenn Sie keine gute Grafikkarte haben (wie ich).


0

Ich habe die Intel (86) CPU / ABI verwendet. Ich habe mit dem ARM (armeabi-v7a) einen weiteren Emulator erstellt und mit der Geschwindigkeit eine deutliche Verbesserung festgestellt. Ich verwende Plattform 4.1.2 API Level 16


0

Ich hoffe, dies wird dir helfen.

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

Es hat mein Problem gelöst ...


0

Aktualisieren Sie Ihr aktuelles Android Studio auf Android Studio 2.0 und aktualisieren Sie auch die Systemabbilder.

Der Android Studio 2.0-Emulator läuft ~ 3x schneller als der vorherige Emulator von Android. Mit ADB-Verbesserungen können Sie Apps und Daten jetzt 10x schneller auf den Emulator übertragen als auf ein physisches Gerät. Wie ein physisches Gerät enthält auch der offizielle Android-Emulator die integrierten Google Play Services, sodass Sie mehr API-Funktionen testen können. Schließlich verfügt der neue Emulator über zahlreiche neue Funktionen zum Verwalten von Anrufen, Akkus, Netzwerken, GPS und mehr.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.