it-swarm.com.de

Beschleunigung des Android Emulators

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 visuelle Effekte.

Wie lässt sich der Emulator so schnell wie möglich ausführen? Ich habe mit seinen Parametern gespielt, aber noch keine Konfiguration gefunden, die eine spürbare Verbesserung aufweist.

242
hpique

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 SDK-Stammordner Android 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)

enter image description here

Vergessen Sie auch nicht, dieses zu installieren

enter image description here

P.S. Fügen Sie während der AVD-Erstellung Emulationsspeicher hinzu: Hardware/Neu/Geräte-RAM-Größe/Einrichtungswert 512 oder mehr

Linux:

  • Installiere KVM: öffne GOOGLE, schreibe "kvm installation"
  • Erstellen Sie eine AVD mit "Intel atom x86" -CPU/ABI
  • Führen Sie in der Befehlszeile Folgendes aus: Emulator -avd avd_name -qemu -m 512 -enable-kvm
  • Oder über Eclipse ausführen: Ausführen/Konfigurationen ausführen/Registerkarte "Ziel" -> Intel x86 AVD prüfen und im Fenster "Zusätzliche Emulator-Befehlszeilenoptionen" Folgendes hinzufügen: -qemu -m 512 -enable-kvm (auf Ausführen klicken)

enter image description here

P.S. für Fedora , für Ubunt

OS-X:

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

P.S: Überprüfen Sie dieses Tool, sehr praktisch auch Testversion

221

UPDATE: Nachdem jetzt ein Intel x86-Image verfügbar ist, ist die beste Antwort die obige.

Wie CommonsWare richtig ausgeführt hat, ist der Emulator langsam, da er eine ARM CPU emuliert, die eine Übersetzung in Intel-Opcodes erfordert. Diese Virtualisierung belastet die CPU.

Um den Emulator schneller zu machen, müssen Sie ihm mehr CPU geben. Beginnen Sie mit einer schnellen CPU oder einem Upgrade, 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, wird durch Hyperthreading die Gesamt-CPU-Zeit des Emulators reduziert. Das Deaktivieren von HT verlangsamt Apps, die mehrere CPUs nutzen. Hyperthreading muss in Ihrem BIOS deaktiviert sein.
  2. Lässt den Emulator auf einer anderen CPU als CPU 0 laufen - Dies hat eine viel geringere Auswirkung als das Deaktivieren 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: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac ).

Ich sehe mit diesen beiden Änderungen 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.

enter image description here

34
mcohen75

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

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

Nexus 7 emulator running at 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 ist, dass Google Play und Google Play Services mit den virtuellen Maschinen geliefert werden.

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

16
Paul Lammertsma

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

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

Um die Beschleunigung nur zur Laufzeit zu aktivieren : 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 .

11
John Lehmann

Bearbeiten Obwohl die Verwendung von Intel-Images einige Leistungsverbesserungen 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-Systemimages im Virtualisierungsmodus unter Windows und Mac OS X. Dies hat spürbare Auswirkungen auf die Leistung.

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

Konfigurieren der Beschleunigung der virtuellen Maschine: http://developer.Android.com/guide/developing/devices/emulator.html#accel-vm

9
ThomasW

Ich habe kürzlich von einem Core 2 @ 2.5 mit 3 GB RAM auf einen i7 @ 1.73 mit 8 GB RAM gewechselt (auf beiden Systemen lief Ubuntu 10.10) und der Emulator läuft jetzt mindestens doppelt so schnell. Es hilft auf jeden Fall, mehr Hardware einzusetzen.

7
TripleG

Ich wollte nur sagen, dass der Emulator nach der Installation des Intel HAXM-Beschleunigers und der Verwendung des Intel Atom image 50-mal schneller zu laufen scheint. Der Unterschied ist erstaunlich, probieren Sie es aus!

http://www.developer.com/ws/Android/development-tools/haxm-speeds-up-the-Android-emulator.html

6
sonicboom

Mir ist aufgefallen, dass der Emulator standardmäßig nur Core 0 verwendet, wobei die meisten Windows-Anwendungen standardmäßig "jeden" Core verwenden. Wenn Sie es auf einen anderen Kern legen (wie den letzten Kern), 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 tritt möglicherweise kein großer Unterschied in Bezug auf die Emulatorleistung auf.

Eclipse + der Android Emulator verbraucht zusammen eine Tonne RAM. Ich würde 3 Gigs RAM empfehlen, zumindest weil ich ein System mit 2 Gigs RAM verwendet habe , und es verlangsamte sich, weil das System nicht mehr über RAM) verfügte und die Auslagerungsdatei zu verwenden begann.

Ich bin der Meinung, dass die besten CPUs wahrscheinlich einen hohen Takt haben werden (verwenden Sie den Takt nur als Maß für CPUs in derselben Serie, übrigens), 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. Sehen Sie sich keine Spiele oder Medien an, da diese stark von SIMD betroffen sind. Wenn Sie ein Java eins finden, noch besser.

4
Joe P

In diesem Jahr hat Google I/O (2011) einen schnelleren Emulator demonstriert. Das Problem ist nicht so sehr der Bytecode zwischen ARM und x86, sondern das von QEMU durchgeführte Software-Rendering. Sie umgehen das Rendering von QEMU und senden das Rendering direkt an einen X-Server, glaube ich zeigte ein Auto-Spiel mit wirklich guter Leistung und FPS.

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

3
Cesar

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 .

3
Koc

Vielen Dank, dass Sie @zest! Lief wie am Schnürchen. Einige wichtige Dinge: Sie müssen Intels Hotfix für das HAXM anwenden, um das Problem 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): https://code.google.com/p/Android/issues/detail?id=6674 (entfernen Sie in diesem Fall armeabi-v7a, da Sie das x86 abi möchten.) Abgesehen von den 45 Minuten, die ich gebraucht habe Um diese Probleme zu lösen, war es eine sehr lohnende Aufgabe, die Leistung des Emulators zu steigern.

1
horcle_buzz

Ich denke, es liegt daran, dass clr virtual machine CPU direkt ohne Code-Opcode-Übersetzung verwendet. Es kann sich um eine Optimierung für die CLR-Anwendung handeln oder um Windows Mobile/Windows Phone 7, das auf dem Intel-Prozessor gestartet wurde. Android Plattform basierend 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. Da die Java ihren Bytecode interpretieren oder vor der Ausführung vorkompilieren. Siehe: http: //www.taranfx .com/google-android-in-virtualbox-vmware-on-netbooks

1
assad

Verwenden Sie Genymotion anstelle des Emulators. Genymotion hat eine bessere Leistung https://www.genymotion.com

1

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

1
David Dostal

wähle einen Emulator mit niedriger Auflösung (zB: Nexus S), wenn du keine gute Grafikkarte hast (wie ich)

1
Dan Alboteanu

Eine Alternative zum Emulator ist die virtuelle AndroVM-Maschine, die viel schneller als der Emulator läuft und OpenGL-Beschleunigung unterstützt:

http://androvm.org/

Anekdotisch glaube ich, dass es schneller läuft als tatsächliche Android Geräte.

0
Joel Malone

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. und aktualisieren Sie auch System-Images.

Der Android Studio 2.0-Emulator wird ca. 3-mal schneller ausgeführt als der vorherige Android-Emulator. Mit ADB-Verbesserungen können Sie Apps und Daten jetzt 10-mal schneller auf den Emulator übertragen als auf ein physisches Gerät. Wie ein physisches Gerät enthält auch der offizielle Emulator Android==================================================================================== Sie können Sie können Sie den den den den den dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem dem , Netzwerk, GPS und mehr.

0
Umer