Tracking-Info
Blog

+49 - 511 - 270 416 0

info@aldebaran.de

Ingo Bartels

Android Device Emulator (3): Genymotion

von Ingo Bartels, 29.10.2014 Tags: Eclipse, Genymotion, Android, Emulator App-Entwicklung, Tests

Android Device Emulator (3): Genymotion ...

Simulator, Emulator, Kompatibilitätsschicht, Betriebssystem Virtualisierung, Paravirtualisierung. Was brauche ich eigentlich?

In der letzten Folge haben wir bereits gesehen, dass auf unserer Suche nach einer Lösung eine Menge Fachbegriffen auf uns einprasseln. Wir sind zu folgendem Zwischenergebnis gekommen:

Ein Emulator implementiert ein Hardwarebetriebssystem komplett und enthält sogar die Bugs des emulierten Betriebssystems. Dies ist die langsamste Art, Apps auf dem PC auszuführen und zu testen. Damit disqualifiziert er sich für das Testen.

Bei einer Kompatibilitätsschicht hingegen steht die schnelle Ausführung der Apps auf einem PC im Vordergrund. Das Verhalten (und z.B. die Formfaktoren, Api Level, etc.) der Android-Hardware interessiert nicht. Und deswegen entpuppt sich auch dieser Lösungsansatz schnell als untauglich für unsere Zwecke, da er zum Testen nicht geeignet ist.

Moderne Betriebssysteme bieten die Möglichkeit der "Selbstvirtualisierung". Sie unterstützen den Zugriff auf die Hardware und die Ausnutzung von mehreren Prozessor-Kernen. Darauf setzen Produkte von Oracle oder VmWare auf, um isolierte Umgebungen zu schaffen, innerhalb derer dann "Emulatoren" schneller ausgeführt werden können. Genaugenommen schließen sich die Begriffe "Emulator" und "Virtual Machine" aus. Korrekt müsste es heißen "virtueller Simulator". Für unsere Zwecke brauchen wir auch nicht die bitgenaue Emulation des Armprozessors und der Dalvik machine sondern Folgendes:

  • Unterstützung unterschiedlicher Bildschirmauflösungen und Formfaktoren.
  • Unterstützung unterschiedlicher Android Versionen (Api Level) und ihrer Feature.
  • Nice to have: Unterstützung / Simulation von möglichst vielen Sensoren
  • Möglichkeit zur Testautomatisierung

Mit diesem Ziel wurde das Open Source Projekt AndroVM ins Leben gerufen (Ableger eines weiteren Projektes: Projekt Android-x86). Es ist ein komplettes Android-System in Form einer virtuellen Maschine. Ziel der Software ist es, ein Android-System zu simulieren, das in einer virtuellen Maschine so gut wie möglich arbeitet. Dieses Projekt wurde im letzten Jahr von einer französischen Firma in ein kommerzielles Produkt überführt: GENYMOTION. Riecht erst mal nach einer teuren Anschaffung, aber: Für unsere Zwecke reicht die kostenlose Version vollkommen aus! Die Software läuft für Windows, Linux und Mac. Am einfachsten ist die Installation unter Windows, die nötige Virtual Box von Oracle wird automatisch mit installiert. (Es soll ja immer noch Leute geben, die meinen, Oracle stelle nur Datenbanksoftware her ;-) ).

Wie funktioniert nun das Ganze? Das Android-Betriebssystem-Image wird in die Oracle Virtual Box importiert und anschließend durch Genymotion in der gewünschten Auflösung gebootet und bereitgestellt. Es funktionieren dann diverse Schnittstellen wie WiFi, Bluetooth, Kamera (nutzt die Webcam des Laptops!), Batteriestand (simuliert) , Netzwerk, etc.

Die Installation ist recht einfach (hat bei mir 30 Minuten gedauert), auf der Herstellerseite stehen alle nötigen Hilfen und Dateien bereit - Offizielle Seite :

www.genymotion.com

Hier ist ein Hilfsvideo zur Installation:

www.learn2crack.com/2013/08/setup-genymotion-windows.html

Man startet Genymotion mit einem Doppelklick und kann aus einer Liste eine Vielzahl tatsächlich vorhandener Geräte als auch generische Geräte auswählen. Unterstützt werden mittlerweile alle Api Level von 10 bis zur aktuellsten Version.

Die Google Play Services können nachinstalliert werden:

stackoverflow.com/questions/20121883/how-to-install-google-play-services-in-a-genymotion-vm-with-no-drag-and-drop-su.

Die Arbeit mit dem Genymon ist sehr flüssig, die Darstellung der GUI entspricht sehr schön der Oberfläche der simulierten Geräte. Eclipse erkennt Genymon ähnlich wie ein über USB angeschlossenes Gerät. Es gibt aber auch ein Plugin, mit dem Genymon aus Eclipse heraus gestartet werden kann.

In der mit knapp 100 Euro pro Jahr nicht sehr kostspieligen "Indie" Version gibt es folgende zusätzliche Features:

  • jedes Pixel, das dargestellt wird, entspricht einem Pixel auf dem Monitor
  • leichtes Clonen und Wiederherstellen von Devices (wichtig für automatisches Testen)
  • automatische Videoaufzeichnung einer Session
  • Simulation und Test von Bewegungssensoren
  • Unterstützung von Multi-Touch Events (wie auch immer das gehen soll, Touchscreen?)
  • Java Api, um automatisierte Tests basierend auf Sensordaten zu schreiben
  • Netzwerksimulation (also langsames oder flackerndes Netzwerk =>Wie toll ist das denn!)

Ich hatte zwar mit einem Kollegen wieder die Diskussion, man solle nur nicht kommerzielle Software verwenden, aber hey, wir verdienen auch mit Software unsere Mieten.

Ich kann nur sagen: Genial, dieses Genymotion!

Ach ja, irgendwann werde ich dann auch mal über meine Erfahrungen mit diesem Projekt bloggen:

Genymotion und Jenkins zum Android testen...

blog.genymobile.com/genymotion-jenkins-android-testing/

An dieser Stelle gebe ich gerne an den Genymon Blog weiter.

Denn in einer der nächsten Folgen werden wir dann auf die "dunkle" Seite der Macht (aus Sicht eines Androiden) wechseln: App Programmierung für Apples IOS ...

 

Genymotion Screenshot
Genymotion GUI