In dieser Lektion werden wir den Android Emulator-Beschleuniger Intel HAXM mit Hilfe des SDK Managers herunterladen und installieren lassen. Der Emulator-Beschleuniger ist eine weitere Komponente des Android SDK mit der wir über den Verlauf des gesamten Kurses arbeiten werden.
Er ist, wie der Name schon erahnen lässt, für das Beschleunigen des Android Emulators zuständig. Durch die Nutzung des Intel HAXM wird die Ausführungsgeschwindigkeit von Android Apps auf dem Emulator erheblich verbessert.
Im theoretischen Teil dieser Lektion werden wir untersuchen, mit welchen Werkzeugen die Ausführung von Anwendungen im Android Emulator beschleunigt werden kann und warum dies überhaupt erstrebenswert ist. Dabei werden wir erfahren, was ein Hypervisor ist und welche Aufgabe er für Hardware-Beschleunigung von Virtuellen Maschinen übernimmt.
Anschließend werden wir den Intel Hardware Accelerated Execution Manager (Intel HAXM), einen solchen Hypervisor, mit Hilfe des SDK Managers von Android Studio herunterladen und installieren lassen. Nach erfolgter Installation werden wir überprüfen, ob der Android Emulator-Beschleuniger Intel HAXM korrekt auf dem Entwicklungssystem installiert wurde und bereits ausgeführt wird.
Hinweis: Der Android Emulator-Beschleuniger Intel HAXM kann nur verwendet werden, wenn der eigene Prozessor die Intel Virtualization-Technology (Intel VT-x) unterstützt. Dies ist bei vielen Prozessoren der Intel Core i-Serie der Fall. Mit folgendem Link kann überprüft werden, ob der eigene Prozessor die Intel VT-x unterstützt: Unterstützt mein Prozessor die Intel Virtualization-Technik?
Wichtiger Hinweis: Unterstützt der eigene Prozessor die Intel Virtualization-Technology nicht, kann diese Lektion nicht absolviert werden. Dies ist der Fall, wenn ein AMD-Prozessor (bspw. AMD Ryzen) verwendet wird. Diese Lektion und auch Lektion 3 sollten dann zu Informationszwecken gelesen werden, jedoch ohne die Arbeitsschritte dabei auszuführen. Später muss die eigene Android App dann auf einem physikalischen Android Gerät (Handy oder Tablet) anstatt auf dem Android Emulator ausgeführt werden. Der Android Kurs kann aber vollständig absolviert werden, auch ohne Intel HAXM.
1. Die Ausführung von Apps im Android Emulator beschleunigen
Viele moderne Prozessoren bieten Erweiterungen, um Virtuelle Maschinen, wie sie vom Android Emulator ausgeführt werden, effizienter zu betreiben. Durch Nutzung dieser Erweiterungen mit dem Android Emulator kann die Ausführungsgeschwindigkeit der Android Apps erheblich verbessern.
Um die Hardware-Beschleunigung für den Android Emulator nutzen zu können, muss der Prozessor (CPU) des Entwicklungssystem über eine der folgenden Virtualisierungstechnologien verfügen:
- Intel Virtualization Technology (VT, VT-x, vmx)
- AMD Virtualization (AMD-V, SVM)
Bei den meisten modernen Prozessoren ist dies der Fall. Wird ein älterer Prozessor verwendet, der die oben aufgeführten Virtualisierungstechnologien nicht unterstützt, kann die Virtuelle Maschinen-Beschleunigung nicht verwenden werden.
Hinweis: Die Virtualisierungstechnologien werden normalerweise über den BIOS des Computers aktiviert und sind häufig standardmäßig deaktiviert. Um sie manuell zu aktivieren, ist das Lesen der Dokumentation des Motherboards und Ausführen der darin beschriebenen Schritte erforderlich.
1.1 Über das Beschleunigen von Virtuellen Maschinen mittels Hypervisor
Wird eine Virtuellen Maschine vom Android Emulator ausgeführt, muss dieser den Maschinencode (nativen Code) der Virtuelle Maschine blockweise übersetzen, so dass er zu der Architektur des Host-Rechners passt, auf dem die Virtuelle Maschine ausgeführt wird. Dieser Prozess ist sehr rechenintensiv und kann sehr langsam sein. Er kann jedoch mit Hilfe eines Hypervisors beschleunigt werden.
Wenn die Virtuelle Maschine und die Architektur des Host-Rechners identisch sind, sie bspw. beide die x86-Befehlssatzarchitektur besitzen, kann das Übersetzen des Maschinencodes übersprungen werden und dieser direkt auf dem Prozessor des Host-Rechners mit Hilfe eines Hypervisors ausgeführt werden. Die Ausführungszeit des Android Emulators wird dadurch deutlich beschleunigt und nähert sich der Geschwindigkeit des Host-Rechners an.
Es sind einige dieser Hypervisor auf modernen Systemen verfügbar. Für die Entwicklung von Android Apps auf Mac– und Windows-Computern wird der Intel Hardware Accelerated Execution Manager (Intel HAXM) als Hypervisor empfohlen. Für die Entwicklung auf Linux-Rechnern wird die Kernel-based Virtual Machine (KVM) als Hypervisor empfohlen.
Es ist auch möglich die Windows Hypervisor Platform (WHPX) auf Windows-Rechnern zu verwenden. Dies ist bspw. erforderlich, wenn das Entwicklungssystem über einen AMD-Prozessor verfügt oder falls Hyper-V für mehrere Anwendungen (Android Emulator und Docker) gleichzeitig verwendet werden soll. WHPX kann jedoch in seltenen Fällen zu schwerwiegenden Problemen führen, weshalb der Intel HAXM auf Intel-Rechnern zu bevorzugen ist.
Hinweis: Einige Entwicklungssystemen sind nicht mit WHPX oder Hyper-V kompatibel und die Aktivierung dieser Funktionen kann dazu führen, dass Windows nicht vollständig startet und stattdessen einen schwarzen Bildschirm anzeigt. In diesem Fall muss die Virtualisierung im BIOS deaktiviert und Windows neu gestartet werden, um WHPX oder Hyper-V manuell zu deaktivieren. Es ist daher besondere Vorsicht geboten.
1.2 Was ist der Intel Hardware Accelerated Execution Manager?
Der Intel Hardware Accelerated Execution Manager (Intel HAXM) ist eine Hardware-unterstützte Virtuelle-Engine (Hypervisor), welche die Emulation von Android Apps auf Windows oder macOS Host-Rechnern beschleunigt und damit den Entwicklungsprozess von Android Anwendungen verbessert.
Für diesen Entwicklungsprozess besitzt der Android Emulator eine große Bedeutung, da er ideal für das Testen der selbst programmierten Android App auf unterschiedlichen Android Versionen geeignet ist. Jedoch ist das Ausführen der eigenen App im Android Emulator sehr rechenintensiv.
Dies kann dazu führen, dass der Emulator und somit auch die in ihm ausgeführte Android App sehr träge auf Benutzereingaben reagieren. Dieses Problem kann man beheben, indem man die Emulation mit Hilfe des Intel HAXM hardware-beschleunigt (hardware accelerated) ausführen lässt. Durch die Hardware-Beschleunigung läuft der Emulator flüssiger und startet schneller.
Jedoch kann der Intel HAXM nicht auf jedem Entwicklungssystem verwendet werden. Um ihn für die Android Emulation nutzen zu können, müssen bestimmte Systemvoraussetzungen erfüllt sein.
Systemvoraussetzungen Intel HAXM:
- Als CPU muss ein Intel Prozessor verwendet werden
- Der verwendete Intel Prozessor muss Intel Virtualization Technology VT-x unterstützen
- Es werden mindestens 4 GB Arbeitsspeicher benötigt (empfohlen sind 8 GB)
- Nur Android x86 Emulator Images von Intel können hardware-beschleunigt werden
Erfüllt der Entwicklungsrechner diese Anforderungen, ist der Intel HAXM eine hervorragende Möglichkeit den Android Emulator zu beschleunigen und darauf virtuelle Android Geräte auf Basis von Android x86 System Images auszuführen.
1.3 Kann der Android Emulators auch ohne Intel HAXM verwendet werden?
Falls die oben aufgeführten Systemvoraussetzungen vom eigenen Entwicklungssystem nicht erfüllt werden, muss bei der Entwicklung von Android Apps nicht auf den Android Emulator verzichtet werden.
Der Emulator kann auch ohne Intel HAXM verwendet werden, jedoch müssen alle Berechnungen dann ohne Hardware-Beschleunigung ausgeführt werden, was zu einer deutlichen Verlangsamung der Android Emulation führt.
Folgende zwei Punkte müssen bei der Emulation ohne Intel HAXM beachtet werden:
-
Nur ARM-basierte System Images verwenden – Es können keine x86 System Images für das Android Virtual Device (AVD) genutzt werden, sondern nur ARM-basierte System Images. Dies kann bedeuten, dass nur auf ältere System Images zurückgegriffen werden kann und somit Funktionen neuerer Android Versionen nicht getestet werden können.
-
Keine Hardware-Beschleunigung möglich – Da nur ARM-basierte System Images für das AVD verwendet werden können, kann der Emulator nicht hardware-beschleunigt werden. Dadurch startet der Emulator langsamer und reagiert sehr viel träger auf Benutzereingaben.
Wir zeigen in einer späteren Lektion dieses Android Kurses, welche Schritte ausgeführt werden müssen, damit die eigene App im Android Emulator ohne Intel HAXM ausgeführt werden kann. Dies hat aber einen deutlichen Nachteil, da die Ausführung der Android App dann wirklich sehr langsam und träge erfolgt.
Es ist daher sehr empfehlenswert für das Testen der eigenen Android App ein Entwicklungssystem zu verwenden, auf dem der Intel HAXM ausgeführt werden kann und somit der Android Emulator von diesem hardware-beschleunigt wird.
2. Herunterladen und Installieren des Intel HAXM
Wichtiger Hinweis: Unterstützt der eigene Prozessor die Intel Virtualization-Technology nicht, kann diese Lektion nicht absolviert werden. Dies ist der Fall, wenn ein AMD-Prozessor (bspw. AMD Ryzen) verwendet wird. Diese Lektion und auch Lektion 3 sollten dann zu Informationszwecken gelesen werden, jedoch ohne die Arbeitsschritte dabei auszuführen. Später muss die eigene Android App dann auf einem physikalischen Android Gerät (Handy oder Tablet) anstatt auf dem Android Emulator ausgeführt werden. Der Android Kurs kann aber vollständig absolviert werden, auch ohne Intel HAXM.
Wir werden nun die Installationsdatei des Android Emulator-Beschleunigers Intel HAXM mit Hilfe des SDK Managers von Android Studio herunterladen. Dieser Arbeitsschritt ist sehr einfach, da wir bereits in den letzten beiden Lektionen Erfahrungen im Umgang mit dem SDK Manager sammeln konnten.
Wir starten nun den SDK Manager von Android Studio. Dazu öffnen wir Android Studio über das Windows Startmenü. Nach kurzer Zeit sollte sich der Willkommensbildschirm von Android Studio geöffnet haben.
In der unteren rechten Ecke des Willkommensbildschirms befindet sich das Configure-Menü, über das wichtige Einstellungen an der Android IDE vorgenommen werden können.
Wir klicken nun zunächst auf Configure und anschließend in dem aufklappenden Drop Down-Menü auf den Eintrag SDK Manager, woraufhin der SDK Manager von Android Studio geöffnet wird.
Da der SDK Manager in Android Studio integriert ist, öffnet sich der Settings for New Projects-Dialog von Android Studio an der Stelle Appearance & Behavior > System Settings > Android SDK. Von hier aus können wir das Herunterladen der Installationsdatei des Intel HAXM veranlassen.
Hinweis: Falls der Intel HAXM nicht mit dem SDK Manager von Android Studio heruntergeladen werden kann, ist es auch möglich dies manuell durchzuführen. Auf der Webseite des Intel HAXM kann die Installationsdatei selbst heruntergeladen und anschließend installiert werden.
Um den Intel HAXM–Installer herunterzuladen führen wir nun die folgenden Schritte durch:
- Wir aktivieren den SDK Tools-Tab des SDK Managers.
- Dann setzen wir ein Häkchen bei dem Intel x86 Emulator Accelerator (HAXM installer) Kästchen.
- Und klicken schließlich auf den Apply Button.
Es beginnt nun der Download- und Installationsprozess des Intel HAXM, zu dessen Beginn sich der Confirm Change-Dialog, der uns über die zu installierende Komponente informiert, öffnet:
Wir bestätigen den Confirm Change-Dialog mit einen Klick auf den OK Button.
Anschließend öffnet sich der License Agreement-Dialog, der uns über die Lizenzvereinbarungen des Intel HAXM informiert:
Wir lesen uns die Lizenzvereinbarungen des License Agreement-Dialogs in Ruhe durch und aktivieren den Accept Radio Button, falls wir mit den Vereinbarungen einverstanden sind. Danach bestätigen wir den Dialog mit einem Klick auf den Next Button.
Nun öffnet sich der Component Installer-Dialog, durch den zuerst der gewählte Intel x86 Emulator Accelerator (HAXM installer) als Zip-Datei heruntergeladen und anschließend im Android SDK Verzeichnis installiert wird. Der Download des Intel x86 Emulator Accelerator (HAXM installer) sollte nur sehr kurz dauern. In dem Component Installer-Dialog sind einige Details über die durchgeführten Installationsschritte aufgeführt, bspw. in welches Verzeichnis der Inhalt der heruntergeladenen Zip-Datei entpackt wurde.
Nach kurzer Zeit öffnet sich nun automatisch der Emulator Settings-Dialog, der sich über den Component Installer-Dialog lagert. Der Emulator Settings-Dialog informiert uns, ob auf unserem Entwicklungssystem der Android Emulator im Accelerated Performance Mode ausgeführt werden kann. Also, ob unser System die Voraussetzungen des Intel HAXM erfüllt.
Zudem müssen wir in dem Emulator Settings-Dialog die Arbeitsspeicher-Obergrenze festlegen, die der Intel HAXM verwenden darf:
Als Wert sollte der empfohlene Wert verwendet werden. Zudem sollte der gewählte Wert nicht zu hoch sein, da sonst die anderen Programme langsamer ausgeführt werden könnten. Wir übernehmen den vorgeschlagenen Wert und bestätigen den Dialog mit einem Klick auf den Next Button.
Kurz nachdem der Next Button gedrückt wurde, öffnet sich der Invoking Installer-Dialog und Windows zeigt unmittelbar danach den Zustimmungs-Dialog der Benutzerkontensteuerung an. Dem Zustimmungs-Dialog müssen wir zustimmen, um die Installation von Intel HAXM auf dem Rechner zu erlauben.
Nachdem wir die Zustimmung erteilt haben, erfolgt die Installation von Intel HAXM im Hintergrund. Sobald dieser Prozess abgeschlossen ist, informiert der Invoking Installer-Dialog über den Installationsfortschritt:
Der Invoking Installer-Dialog informiert, dass die Installation des Intel HAXM erfolgreich verlaufen ist (Markierung A). Wir bestätigen den Invoking Installer-Dialog mit einem Klick auf den Finish Button.
Hinweis: Von dem Invoking Installer-Dialog werden zudem alle auf unserem Entwicklungssystem installieren Android SDK-Komponenten aufgeführt. In dieser Aufstellung ist auch direkt ersichtlich, in welche Verzeichnisse die Komponenten installiert wurden.
Der Component Installer-Dialog rückt nun wieder in den Vordergrund und schließt den Installationsvorgang des Intel HAXM ab:
Wir bestätigen den Component Installer-Dialog mit einem Klick auf den Finish Button und schließen damit die Installation des Intel Hardware Accelerated Execution Manager auf dem Entwicklungssystem ab.
Nun öffnet sich wieder der SDK Manager von Android Studio:
Der Intel x86 Emulator Accelerator (HAXM installer) wird nun als installiert unter den SDK Tools geführt
Im SDK Manager wird der Intel x86 Emulator Accelerator (HAXM installer) jetzt als installiert angezeigt, dies bedeutet aber nur, dass die Installationsdatei in das zugehörige Android SDK-Verzeichnis kopiert wurden. Wir schließen den SDK Manager mit einem Klick auf den OK Button.
Ob der Intel HAXM wirklich installiert ist und bereits auf unserem Entwicklungssystem ausgeführt wird, müssen wir über die Eingabeaufforderung prüfen. Dies werden wir im nächsten Abschnitt durchführen.
3. Überprüfen, ob der Intel HAXM korrekt installiert wurde
Wir werden nun mit Hilfe der Windows 10 Eingabeaufforderung (Kommandozeile) überprüfen, ob der Intel HAXM korrekt auf unserem Entwicklungssystem installiert wurde. Dabei werden wir auch direkt feststellen, ob der Intel HAXM auf dem System gerade ausgeführt oder pausiert wird.
Wir öffnen nun die Eingabeaufforderung als Administrator:
- Zuerst drücken wir die Windows-Taste und geben Eingabeaufforderung als Suchbefehl ein.
- Danach klicken wir mit der rechten Maustaste auf den oberen Eintrag Eingabeaufforderung.
- In dem aufklappenden Kontext-Menü klicken wir auf Als Administrator ausführen.
Es wird nun automatisch der Zustimmungs-Dialog der Benutzerkontensteuerung von Windows eingeblendet. Dieser müssen wir zustimmen, um die Eingabeaufforderung als Administrator ausführen zu können.
Anschließend öffnet sich die Eingabeaufforderung in einem kleinen Fenster:
Wir geben nun den Konsolenbefehl sc query intelhaxm (Markierung D) in die Eingabeaufforderung ein und drücken die Enter-Taste.
Als Ergebnis werden uns nun einige Informationen über den Windows-Service intelhaxm in der Eingabeaufforderung angezeigt. Für uns ist der zweite Punkt von besonderem Interesse. Dieser Punkt gibt an, in welchem Zustand sich der Intel HAXM befindet. Wenn STATE den Wert 4 RUNNING besitzt, ist alles in Ordnung und der Intel HAXM wird auf dem Entwicklungssystem ausgeführt.
Hinweis: Der Intel HAXM kann manuell über die Eingabeaufforderung gestartet und gestoppt werden. Mit dem Befehl sc start intelhaxm
wird der Intel HAXM gestartet und mit sc stop intelhaxm
wird der Android Emulator-Beschleuniger wieder gestoppt.
Zusammenfassung
In dieser Lektion haben wir den Android Emulator-Beschleuniger Intel HAXM mit Hilfe des SDK Managers heruntergeladen und auf unserem Entwicklungssystem installieren lassen.
Im theoretischen Teil haben die Werkzeuge kennengelernt, durch welche die Ausführung von Anwendung im Android Emulator beschleunigt werden kann und warum dies für das Entwickeln von Android Apps so wichtig ist. Dabei haben wir erfahren, was ein Hypervisor ist und welche Aufgabe er für Hardware-Beschleunigung von Virtuellen Maschinen übernimmt.
Anschließend haben wir den Intel Hardware Accelerated Execution Manager mit Hilfe des SDK Managers von Android Studio herunterladen und installieren lassen. Danach haben wir mit Hilfe der Windows Eingabeaufforderung überprüft, ob der Android Emulator-Beschleuniger Intel HAXM korrekt auf unserem Entwicklungssystem installiert wurde und bereits ausgeführt wird.
Insgesamt haben wir nun die folgenden Android SDK-Komponenten installiert:
- Android SDK Platform
- Android SDK Build-Tools
- Android Emulator
- Android SDK Platform-Tools
- Intel x86 Emulator Accelerator (HAXM installer)
In der nächsten Lektion werden wir ein System Images der aktuellen Android Platform auf unserem Entwicklungssystem installieren. Ein System Image wird benötigt um ein virtuelles Android Gerät (Android Virtual Device oder kurz AVD) in dem Android Emulator ausführen zu können.
Die virtuellen Android Geräte können später zum Testen der eigenen Android App verwendet werden. Auf diese Weise kann die App auf verschiedenen Android Plattformen getestet werden, ohne das dafür entsprechenden physikalische Android Geräte erforderlich sind.
Mit der nächsten Lektion werden wir auch die Einrichtung unseres Entwicklungssystem abschließen und dann endlich startklar für das Entwickeln unserer eigenen Android App sein.
Weiterführende Literatur
- Developer.android.com: Configure Emulator hardware acceleration
- Software.intel.com: Intel Hardware Accelerated Execution Manager (Intel HAXM)
- Github.com: Intel HAXM
- Github.com: Intel HAXM Releases
- Github.com: Intel HAXM Installation Instructions on Windows
- Wikipedia.org: Hypervisor – Virtual-Machine-Monitor (VMM)