Knapp 7000 Kilometer, immer Richtung Nordwesten, sind es von der Google-Zentrale in Mountain View, Kalifornien, bis zu dem kleinen Fischerort Dalvik in der Gemeinde Dalvíkurbyggð auf Island. Dan Bornstein stammt aus dieser entlegenen Region und ehrte seine Vorfahren, indem er die in weiten Teilen von ihm in einem Java-Dialekt geschriebene Runtime Engine für Android nach dem kleinen Dorf benannte.
Google lässt Linux eiskalt links liegen
Doch leider beschränkt sich die Ehre für die Ahnen bei Android ausschließlich auf die pietätvolle Seite: Linux-Anwender profitieren derzeit nur wenig von den Errungenschaften des Android-Ökosystems. Obwohl Dalvik auf einem Linux-Kernel aufsetzt, gibt es immer noch kaum Möglichkeiten, Android-Apps auf dem freien Betriebssystem zum Laufen zu bekommen. Auch Ice Cream Sandwich ändert nichts daran.
Das verwundert, wo doch gerade für Linux das Ziel eigentlich recht einfach scheint: Die Android-Apps laufen in der Dalvik-VM, hinzu kommen noch ein paar spezielle Bibliotheken, über die sich beispielsweise mit dem eingebauten GPS-Chip die geografische Position des Smartphones bestimmen lässt. Wer Apps unter Linux starten will, müsste nur diese Umgebung nachbilden. Da sie durch ihre Arbeitsweise prinzipiell plattformunabhängig ausgelegt und zudem noch gut dokumentiert ist, sollte das doch eigentlich kein Problem sein.
Aber die Realität sieht leider ganz anders aus. Immerhin: Gleich mehrere Projekte arbeiten daran, Android-Apps auch auf anderen Plattformen zu starten. Gerade Desktoprechner böten reichlich Speicher und Rechenleistung, Administratoren wie Hersteller müssten nur die eine App pflegen und auf dem aktuellen Stand halten, während die Mitarbeiter stets ihre gewohnte Benutzeroberfläche zur Verfügung hätten – auf dem Smartphone und auf dem Rechner. Eigentlich eine Marktlücke, denkt man.
Android-SDK
Wer nach einer Möglichkeit sucht, Android-Apps auf dem PC auszuführen, stolpert als Erstes über das Android-SDK. Das gibt es auch für Linux und es enthält nicht nur alles, was man zum Programmieren einer App braucht, sondern auch gleich noch einen Emulator (Abbildung 1). Der bildet ein komplettes Smartphone beziehungsweise einen Tablet-PC nach. Vielleicht ist er gerade deshalb recht umständlich zu bedienen, langsam wie eine Schnecke und unterstützt obendrein nicht alle Funktionen eines mobilen Geräts.

Abbildung 1: Das Android-SDK mit einem laufenden Ice Cream Sandwich in Version 4.0.2 – kurioserweise mit einem vergleichsweise alten Kernel.
Um mit ihm eine App auszuführen, installiert der Anwender zuerst über den Paketmanager ein komplettes Java Development Kit in der Version 6, ein Java Runtime Environment (JRE) genügt nicht. Anschließend lädt er das Android-SDK für Linux herunter [1], entpackt es auf der Festplatte und startet dann im Unterverzeichnis »android-sdk-linux/tools« das Hilfswerkzeug »android« (Abbildung 2).

Abbildung 2: Bevor er den Emulator aus dem Android-SDK starten kann, muss der Administrator erst dessen Bestandteile herunterladen.
Nachdem der Fortschrittsbalken fertig ist, klickt er auf »New« gefolgt von »Install packages« und markiert »Accept all« . Per »Install« holt das Programm alle weiteren für den Betrieb benötigten Dateien aus dem Internet. Sobald die ungefähr 4 GByte auf der Festplatte gelandet sind, bemüht man den Menüpunkt »Tools **| Manage AVDs« und legt im neuen Fenster via »New« ein erstes virtuelles Smartphone an. Es reicht aus, ihm einen eindeutigen Namen zu geben, die für die App notwendige Android-Version zu wählen und dann der virtuellen SD-Karte die gewünschte Größe zu verpassen.
Reine Emulation
Per »Create AVD« landet der Anwender wieder in der Verwaltungszentrale, wo er das gerade erstellte Gerät markiert und über die entsprechende Schaltfläche startet. Den folgenden Dialog nickt er mit »Launch« ab. Das Android-SDK startet jetzt die Emulation, was ein paar Minuten dauern kann. Das Ergebnis aus Abbildung 3 funktioniert wie ein handelsübliches Android-Smartphone – nur dass die Bedienung über die Maus statt über Gesten erfolgt.

Abbildung 3: Der Emulator aus dem Android-SDK stellt für alle Android-Versionen die gleichen Funktionen parat, hier mit einem Android 2.3.
Wer die gewünschte App als ».apk« -Datei auf die lokale Festplatte heruntergeladen hat, muss sie nun umständlich im Terminal in die Emulation schieben. Dabei hilft die Android Debug Bridge, kurz »adb« , im Unterverzeichnis »platform-tools« des SDK. Ganz analog wie bei einem über USB angeschlossenen Android-Smartphone findet Adb im ersten Schritt angeschlossene oder emulierte Geräte. Der Anwender sucht mit
./adb devices
alle laufenden Emulationen und merkt sich die in der Ausgabe ausgespuckte Seriennummer. Das Kommando
adb -s emulator-Android-Seriennummer install test.apk
installiert die App »test.apk« auf dem Gerät. Der String »emulator-« enthält die vorher erhaltene Nummer.
Iced Robot
Einen anderen Weg geht das Iced-Robot-Projekt [2]. Anders als die umständliche Emulation versucht es, gleich das komplette Android-API auf den Linux-Desktop zu portieren, und wirbt dafür mit der “GNUlization of Android”. Apps sollen sich dann wie jedes Java-Programm starten und ausführen lassen.
Derzeit reimplementieren die Entwickler die Dalvik Virtual Machine als Java-Programm. Damit müssten Apps auf jedem Rechner laufen, für den es ein JRE gibt. In einem zweiten Schritt wollen die Entwickler die Android-Umgebung auf die Java-Klassenbibliothek aufsetzen und sich so von den Android-Bibliotheken unabhängig machen – vereinfacht ausgedrückt erhielten die Apps dann automatisch das Aussehen einer normalen Java-Anwendung.
Doch steht das ganze Projekt, das auch am Summer of Code der FSFE 2011 teilnahm, noch am Anfang. Auf der reimplementierten Dalvik-VM laufen gerade mal ein paar einfache Testprogramme. Die Dokumentation besteht aus einer Handvoll Links und der Mailingliste. Die scheint zudem in den letzten Monaten etwas eingeschlafen zu sein.
Mit Mercurial und Maven
Wer den aktuellen Stand ausprobieren möchte, installiert als Erstes über seinen Paketmanager ein JDK, die Versionsverwaltung Mercurial (alias »hg« ) und den Projektmanager Apache Maven. Der ist unter Ubuntu im Paket »maven2« zu finden. Anschließend holt er sich den aktuellen Quellcode:
hg clone http://icedtea.classpath.org/icedrobot/hg/daneel/
Das Verzeichnis »daneel« ist übrigens nicht nach einem Entwickler benannt, sondern der Codename der reimplementierten Dalvik VM. Weiter geht’s mit
cd daneel mvn clean installassembly:assembly
was weitere Dateien aus dem Internet saugt. Bei Redaktionsschluss war der dabei angezapfte Server jedoch nicht erreichbar. Sollte er wieder antworten, setzt der Anwender nach dem Download noch die Umgebungsvariable »IKA_HOME« auf das Verzeichnis, in dem die ».jar« -Datei schlummert, und startet mit dem Kommando
java -jar target/daneel-0.0.1-SNAPSHOT-jar-with-dependencies.jar src/test/java/resources/HelloDroid.dex org.icedrobot.test.HelloDroid
die beigelegte Hello-World-App. Iced Robot ist jedoch mit Vorsicht zu genießen. Aufgrund des frühen Status besteht immer die Möglichkeit, dass die Entwickler an dem beschriebenen Verfahren zwischenzeitlich Änderungen vornehmen.
Android x86
Einen gänzlich anderen Ansatz wählte das Android-x86-Projekt [3]. Es portiert das komplette Android-Betriebssystem auf x86-Systeme, wobei sein Fokus eindeutig auf Netbooks liegt. Daher gibt es im Download-Bereich fertige ISO-Images nur für ausgewählte Net- beziehungsweise Notebooks. Die Eee-PC-Fassung funktioniert allerdings auch in einer virtuellen Maschine unter Virtualbox ([4], Abbildung 4).

Abbildung 4: Die Macher von Android x86 portieren das komplette Betriebssystem auf x86-Prozessoren, wodurch Android nicht nur nativ, zum Beispiel auf Netbooks, sondern wie hier auch in virtuellen Maschinen läuft.
Apps laufen in Android x86 genauso flott wie auf einem Smartphone. Allerdings muss der User das System entweder fest auf einem Rechner installieren oder unter Linux in einer Virtualisierung betreiben. Das ermöglicht aber auch die Integration in virtuelle Desktop-Infrastrukturen (VDIs, [5]).
Ein eleganter Parallelbetrieb mit Seamless Apps, so wie ihn das Iced-Robot-Projekt anstrebt, ist aber nicht möglich. Darüber hinaus ersetzen Tastenkombinationen die Wisch-Gesten und Fingertipps, was jedoch die Bedienung umständlich bis umöglich macht.
Ubuntu Android EE
Vor fast drei Jahren kündigte Canonical an, die Anwender würden künftig auch Android-Apps unter Ubuntu wie normale Programme starten können. Möglich machen solle dies das Ubuntu Android Execution Environment, eine Laufzeitumgebung, die API-Aufrufe der Apps in native Linux-Aufrufe übersetzt. Im Mai 2009 stellt Canonical auf dem Ubuntu Developer Summit in Barcelona seiner Entwicklergemeinde sogar schon einen Prototyp vor [6].
Doch seitdem ist es um das Projekt still geworden. Weder weitere Informationen noch der in Aussicht gestellte Quellcode gelangten an die Öffentlichkeit. Bekannt ist lediglich, dass spezielle Android-Funktionen in der Laufzeitumgebung fehlten und der Nachbau des Interprozess-Kommunikationssystems die Installation eines speziell angepassten Linux-Kernel-Treibers voraussetzen würde.
Im Gegenzug sollten Android-Apps dann auf zusätzliche Fähigkeiten des Ubuntu-PC zugreifen können – allerdings wären sie natürlich nicht mehr portabel gewesen. Reste der Spezifikation sind noch im Ubuntu-Wiki [7] zu finden.
Blue Stacks
Dass es auch anders geht, will die kleine Firma Blue Stacks ([8], [9]) beweisen. Ihr App-Player (Abbildung 5) führt Android-Apps wie normale Anwendungen aus – allerdings nur unter Windows 7. Über den eigens eingerichteten Dienst Blue Stacks Cloud Connect schieben Anwender schnell mal Apps zwischen Smartphone und Windows-Desktop hin und her. Auf Letzterem läuft die Anwendung grundsätzlich im Vollbildmodus. Dabei hat der Anwender die Wahl, ob die App in ihrer nativen Auflösung mit Trauerrand oder auf den kompletten Bildschirm aufgeblasen erscheinen soll (Abbildung 6). Entweder wirkt sie dann aber ziemlich klein oder wegen der Blockgrafik altmodisch-hässlich.

Abbildung 6: Blue Stacks läuft immer im Vollbildmodus. Davon profitieren besonders sehr textlastige Apps, wie hier der Bloomberg-Börsenticker.

Abbildung 5: Derzeit allein auf weiter Flur – und leider nur für Windows 7: Blue Stacks App Player bringt Android-Apps auf den Desktop.
Bei Redaktionsschluss gab es von dem App-Player nur eine erste Alphaversion. Die funktionierte aber schon äußerst gut und führte beispielsweise klaglos das Spiel Drag Racing (Abbildung 7) aus. Mit der kostenlosen Variante namens Blue Stacks App Player Free kann der Anwender maximal 26 Apps über Cloud Connect herunterladen. Eine unlimitierte kommerzielle Pro-Version ist geplant, ihr Veröffentlichungstermin aber noch unbekannt.
Alien und Turbo Dalvik
Eine Sonderrolle unter den Android-Tools für fremdartige Plattformen nehmen die der Schweizer Firma Myriad [10] ein. Im Frühjahr 2010 hatte sie erstmals auf dem Mobile World Congress in Barcelona ihre Dalvik-Alternative namens Turbo Dalvik präsentiert, mit der Apps “bis zu dreimal” schneller laufen sollen als mit Googles Original-Engine [11]. Gleichzeitig, so die Ankündigung, solle sie Ressourcen-schonender sein und den Akku deutlich weniger belasten. So wären endlich auch “grafisch deutlich intensivere Spielerlebnisse” möglich. August 2010 meldete der Hersteller, sein Produkt auch an die MIPS-Plattform angepasst zu haben (Kasten: “Interview: Wo bleibt der Turbo-Alien?”). Von Turbo Dalvik steht immerhin schon eine Testversion für registrierte Partner bereit.
Interview: Wo sind die Turbo-Aliens?

Olivier Bartholot ist Vizepräsident fürs Business Development der Schweizer Myriadgroup und beantwortete die Fragen des Linux-Magazins.
Linux-Magazin: Herr Bartholot, warum gibt es keine Testversionen von Myriads Software?
Bartholot: Wir beliefern ausschließlich Hersteller, keine Endkunden, sondern zum Beispiel die Branchen für Mobiltelefone, Consumerelektronik, Automobilbau und Flugzeugbau.
Firmen wie MIPS Computer Systems Inc., unser erster Dalvik-Turbo-Kunde, arbeiten mit unserer Software. Wir haben den MIPS-Support Anfang 2011 bekannt gegeben, jetzt rollen die das bei ihren Kunden in Asien aus.
Android-Apps auf I-OS
Linux-Magazin: Was genau haben sie auf der Convention der International Association for Wireless Telecommunication CTIA [13] im Oktober präsentiert?
Bartholot: Auf der CTIA 2011 zeigten wir unsere aktuelle Version von Alien Dalvik 2.0, also Android-Apps, die auf I-OS laufen, ein Video davon gibt es auf [14]. Aber das ist nur ein Beispiel dafür, dass wir Alien Dalvik auf jedem Betriebssystem und vielen Hardwareplattformen betreiben können.
Alle Hard- und Software-Plattformen
Linux-Magazin: Welche Plattformen wird Alien Dalvik unterstützen? Gibt es Einschränkungen bezüglich der darunter liegenden Hardware (zum Beispiel nur MIPS und ARM oder auch x86) oder des Betriebssystems?
Bartholot: Da gibt es keine Einschränkung, weder bei Hardware noch bei Software. Wir entwickeln heute auf ARM, auf x86 und auf MIPS sowie diversen Linux-Varianten. Und es gibt noch einige weitere Plattformen, über die ich hier noch nichts verraten darf.
“10 bis 500 Prozent schneller”
Linux-Magazin: Gibt es denn öffentlich einsehbare Benchmarkergebnisse für Turbo Dalvik und Alien Dalvik?
Bartholot: Ja, die gibt es. Auf dem N 900 (Abbildung 8) erreicht Caffeine mit Turbo Dalvik 3536 Punkte gegenüber 2349 Punkten (Google Jit, N 900) oder 1776 Punkten auf einem HTC Legend mit Google Jit und Android. Aber der Performancegewinn mit Turbo Dalvik hängt stark von der verwendeten Plattform ab. In manchen Fällen beträgt er nur 10 Prozent, in anderen schwankt er zwischen 300 und 500 Prozent, das variiert stark je nach Benchmark, den die Tester heranziehen.
Patente spielen keine Rolle
Linux-Magazin: Wie sehen Sie die Patentproblematik? Gibt es bereits diesbezüglich Kontakte zu Apple und Oracle und anderen Patenteigentümern?
Bartholot: Das sehen wir gelassen. Wir haben lange Erfahrung im Java-Universum und daher auch diverse Patente in unserem Portfolio. Über potenzielle Kooperationen oder Allianzen darf ich leider nichts öffentlich sagen.
Q1/2012: Alien-Dalvik auf Basis von ICS
Linux-Magazin: Wie sieht ihre Roadmap bezüglich Ice Cream Sandwich aus?
Bartholot: Alien Dalvik unterstützt Froyo, also Android 2.2. Version 2.3 hatte nicht genug Verbreitungsgrad für uns. Alien Dalvik verwendet den Android-Code, der der Apache-Lizenz untersteht, und weil Google keine Quelltexte veröffentlichte, schied auch Android 3 für uns aus.Das bedeutet aber, dass wir uns frühzeitig ganz auf Android 4 konzentrieren konnten. Unsere nächste Version von Alien Dalvik (2.0), die Ende des ersten Quartals 2012 erscheint, basiert auf Ice Cream Sandwich. Aber die meisten Apps laufen ja auch auf allen Releases.
Ende 2011 legte Myriad nach und brachte mit Alien Dalvik (Abbildung 8, [12]) eine Android-Laufzeitumgebung für alternative Plattformen heraus. Erstmals präsentierte der Hersteller sein Werk für Apple-Geräte auf der CTIA Enterprise Show im October 2011 [13]. Eine Testversion von Alien Dalvik gibt es derzeit nicht, man konzentriert sich auf die Industrie, nicht auf die Endkunden.

Abbildung 8: Derzeit das einzige Gerät, auf dem Alien und Turbo Dalvik aus dem Hause Myriad laufen: das N 900 mit Meego. Aber auf Messen präsentiert der Hersteller bereits I-OS-Varianten. Seine Kunden seien nicht Konsumenten, sondern die Industrie, die die “um bis zu 500 Prozent schnellere” Software verwendet.
Fazit
Eine Reise ins isländische Dalvik ist einfacher bewerkstelligt, als eine Android-App unter Linux zu starten. Aus den vollmundigen Ankündigungen der einzelnen Projekte ist bislang noch nichts geworden.
Die GPL-Softwarae Iced Robot bietet einen interessanten Ansatz, steckt aber noch in einem sehr frühen Entwicklungsstadium, und Googles Emulator aus dem Android-SDK (unterliegt einer eigenen freien Lizenz) läuft nur im Schneckentempo. Da bleibt nur noch Android x86 (APL), das man jedoch unter Linux in einer virtuellen Maschine laufen lassen muss und dessen umständliche Bedienung schnell auf die Nerven geht.
Dazu kommt: Bei keiner der vorgestellten Lösungen hat der Anwender Zugriff auf den Android-Market. Er muss sich folglich die benötigten Apps erst irgendwo anders besorgen, beispielsweise indem er einen Konkurrenzshop besucht oder sie über Umwege mit speziellen Apps aus einem Smartphone herauszaubert.
Schade ist auch, dass mit Linux genau das System, das Android erst möglich machte, bei den Apps außen vor bleibt. Bei genauerem Blick ist auch das proprietär lizenzierte Windows-Programm Blue Stacks nichts anderes als ein Emulator, und Canonical wollte mit seiner Laufzeitumgebung offenbar dem damals noch existierenden Ubuntu-Netbook-Remix mehr Auftrieb verschaffen. Vielleicht kehrt der ja einmal zurück, sollte Ubuntu vielleicht doch Smartphones und Tablets erobern.
DELUG-DVD
Auf der DELUG-DVD liegt ein virtuelles Android-4.0-Image, das direkt von der DVD starten kann. Neben dieser VMware-Instanz liegt in dem Verzeichnis auch das aktuelle Android-SDK von Google.
Infos
- Googles Android-SDK: http://developer.android.com/sdk/index.html
- Iced Robot: http://www.icedrobot.org
- Android x86: http://www.android-x86.org
- Android x86 unter Virtualbox: http://www.android-x86.org/documents/virtualboxhowto
- Titelthema “SImplify your Desks”: Linux-Magazin 03/11, S. 25 bis 53
- Android-Apps auf Ubuntu: http://arstechnica.com/open-source/news/2009/05/canonical-developers-aim-to-make-android-apps-run-on-ubuntu.ars
- Eintrag zum Android Execution Environment im Ubuntu-Wiki: https://wiki.ubuntu.com/Specs/AndroidExecutionEnvironment
- Blue Stacks: http://bluestacks.com
- Arnold Zimprich, “Apps für Windows”: Android User 01/12, S. 82
- Myriad: http://www.myriadgroup.com
- Dreimal schneller mit Turbo Dalvik: http://www.myriadgroup.com/Media-Centre/News/MYRIAD-BRINGS-3x-FASTER-APPLICATIONS-RICHER-GAME-GRAPHICS-AND-BETTER-BATTERY-LIFE-TO-ANDROID.aspx
- Alien Dalvik: http://www.madteam.co/2011/10/12/alien-dalvik-2-0-no-barriers/
- CTIA Conference 2011: http://www.ctia.org/conventions_events
- Video “Alien Dalvik bringt Android Apps auf I-OS”: http://www.youtube.com/watch?=rtVVWhgMAyc






