Android hat mich ;-). Ich möc…

(2010-10-15)

Android hat mich ;-). Ich möchte kurz darauf eingehen, warum ich gewechselt habe.

Mein altes (erstes) Smartphone, das Nokia N900, habe ich mir gekauft, weil ich damit viele Aufgaben erledigen kann, für die ich sonst verschiedene Geräte brauchte: SIP-Telefon, MP3-Player (man kann sich auch in der Bahn mal einen Film anschauen, das funktioniert ziemlich gut), Telefon, mobiler IRC- und Webclient, Navigationssystem. Am wichtigsten allerdings war, dass ich darauf eigene Anwendungen entwickeln konnte. Ich suchte zu der Zeit eine mobile Lösung mit Tastatur und Touchscreen, auf der ich selbst Code für einfache TODO-Listen-Programme, Tagesplaner, etc. schreiben konnte. Das N900 schien mir dafür eine gute Wahl.

Die Maemo-Platform, mit der das N900 betrieben wird, ist eine Debian-basierte Linux-Distribution (was mir natürlich sehr sympathisch ist), die in Sachen Hardware-Zugriff ziemlich viel Spielraum bietet. Die verfügbaren Entwicklungswerkzeuge sind die Sprachen C, C++, Python (andere Sprachen sind möglich, werden aber nicht wirklich unterstützt, das ergibt also wenig Sinn) sowie eine komplette Changeroot-Umgebung, die auf einem Xephyr-X-Server die Software des Gerätes entweder nativ (x86) oder emuliert (qemu-arm) laufen lässt. Später (nachdem Qt 4.6 im Firmware-Upgrade PR1.2 mitgeliefert wurde) stieß dann noch der QtCreator hinzu. Die Verfügbarkeit von C/C++ war einer der Gründe, weswegen ich mich damals für das N900 entschied (ich mag Java nicht sonderlich, man kommt bei Android, der einzigen Alternative, um Java aber nicht drumrum).

Nach ca. 5 Monaten, in denen ich mich ausgiebig mit der Entwicklung für Maemo beschäftigt habe (auf vielen Ebenen), habe ich die Bilanz gezogen, dass ich Android als Alternative nochmal evaluieren muss. Die Gründe (stichpunktartig), die mich dazu bewegten:

  • Das Maemo-SDK hat einige Probleme. Es läuft z.B. nur auf 32-Bit-Systemen, die Installation ist viel zu kompliziert und einige Software läuft anders als auf dem Gerät (man hat nicht wirklich eine 1:1-Umgebung). Das Kompilieren via qemu-arm ist sehr langsam.
  • Die Libraries und APIs sind in einem Umbruch durch die Umstellung auf Qt, beispielsweise zieht liblocation einen Rattenschwanz an shared libraries nach sich, die (in Kombination mit Qt für die GUI) eine Anwendung schnell in den zweistelligen Sekundenbereich (!) bei der Ladezeit rutschen lassen.
  • Qt (in der auf Maemo angepassten Version) fehlt viel Funktionalität, die man auf mobilen Geräten erwarten würde (Location-Integration, Bearer-Management, Gestenerkennung, …)
  • Das N900 an sich reagiert oftmals nicht flüssig genug. Das hat mehrere Gründe: Zum Einen ist das User Interface oftmals einfach schlecht designed (beispielsweise die Settings-Anwendung, die Menüpunkte schon anzeigt, obwohl sie noch ca. 3 Sekunden zum Laden braucht) und langsam, zum anderen ist das Gerät mit so wenig Arbeitsspeicher ausgestattet, dass es zum Swappen kommt. Wie man sich leicht ausmalen kann, hat man total verloren, sobald man auf den Flashspeicher swappen muss. Durch das nicht auf wenig Arbeitsspeicher ausgelegte OS sowie einigen Memory Leaks (hier ist der integrierte Browser hervorzuheben) führt das dazu, dass man alle paar Tage rebooten sollte.
    Eine ganz besonders ärgerliche Stelle für diese Art von Problemen ist die Telefonie-Anwendung, die natürlich auch für eingehende Telefonate gestartet wird. Diese braucht zunächst mal relativ lange zum Starten. Man bemerkt also bei einem neuen Anruf zunächst, dass sich das Display einschaltet, dann die Vibration, dann den Klingelton und danach das Starten der Anwendung, was ca. 2 Sekunden dauert. Anschließend rotiert das Fenster ein- bis zweimal, wobei sich alle Bedienelemente einmal wild durch die Gegend verschieben. Das macht es zum Glücksfall, ein Telefonat innerhalb von 5 Sekunden (!) anzunehmen. Dieselbe Situation hat man auch beim Auflegen – da drückt man drei- bis viermal wild aufs Display, bis das reagiert.
  • Es gibt einige Probleme mit dem Nokia-Management, was die Entscheidungen bezüglich Maemo angeht. Dazu gehören beispielsweise die Entscheidung, viele Komponenten im Basissystem nicht frei/offen zu machen (das Austauschen des Lockscreens ist dadurch beispielsweise viel zu schwierig oder das Implementieren von Gruppen für das Adressbuch schlicht nicht möglich), aber auch mangelnde Responsivität auf Bugreports (Bugreport als Beispiel) oder die ganze Meego-Geschichte (Nachfolgebetriebssystem, was auf dem N900 nicht offiziell unterstützt wird).

Weiterhin sprechen folgende Punkte für Android:

  • Die schiere Anzahl an Entwicklern und Anwendungen ist sicherlich ein Pluspunkt. Natürlich kann man anmerken, dass bei soviel Masse die Qualität auf der Strecke bleibt und dass es auf Maemo mehr Open-Source-Anwendungen als auf Android gibt (ich habe das nicht verifiziert, ist nur eine Vermutung). Nichtsdestotrotz bringt eine große Anzahl an Entwicklern natürlich einen regen Austausch mit, was zu einer großen Anzahl an Tutorials, bereits gestellen Fragen und Codebeispielen führt.
  • Das SDK ist deutlich einfacher aufzusetzen und zu benutzen. Die starke Integration in Eclipse mag zunächst als Nachteil erscheinen (wenn man Eclipse nicht mag), ist aber doch ganz angenehm (ein Plugin installieren, die Developer Tools entpacken und dann geht in Eclipse wenigstens schonmal alles).
  • Die Zeit von der Idee zu einer Anwendung bis sie tatsächlich läuft ist deutlich kürzer als bei Maemo. Man muss sich nicht mit so vielen Kleinigkeiten aufhalten, da alles aus einer Hand kommt (zumindest solange man bei den mitgelieferten Klassen bleibt). Insgesamt hat es mich (ohne vorherige Erfahrung mit Androidentwicklung und mit minimalen Java-Kentnissen) ca. 48h gekostet, bis meine Anwendung zufriedenstellend lief (eine einfache TODO-Liste mit CouchDB als Backend).
  • Das User-Interface ist deutlich flüssiger als bei Maemo. Um mal ein paar konkrete Beispiele zu nennen: Androids Media Gallery ist deutlich schneller als der Bildbetrachter unter Maemo, das Scrollen auf Websites funktioniert flüssiger und das Wechseln der Orientierung geht deutlich schneller von statten.
    Außerdem ist die Bedienung angenehmer, was mehrere Ursachen hat. Beispielsweise befindet sich bei Maemo der Button um zwischen offenen Fenstern zu wechseln und neue Programme zu starten links oben in der Ecke – ausgerechnet dort, wo der Touchscreen am schlechtesten zu bedienen ist. Bei Android hingegen gibt es für einige Aktionen, wie beispielsweise das Aufklappen der Notification Area oder des Programmstarters, einen gewissen Spielraum, damit man auch bei schnellen und unpräzisen Bewegungen ans Ziel kommt.
  • Die Verzahnung von Anwendungen über Intents gefällt mir sehr gut. Dadurch kann auf bestehende Funktionalität anderer Software zurückgegriffen werden und man hat insgesamt deutlich mehr Konsistenz und Integration (beispielsweise kann man selektierten Text als neuen Eintrag in meine TODO-Anwendung laden).

Mein derzeitiges Android-Telefon ist das Motorola Milestone (vergleichsweise günstig, Hardware-Tastatur, sofort verfügbar). Sofern das HTC Desire Z seine Nutzer nicht auch so sehr gängelt wie dessen Branding-Version T-Mobile G2 (in den USA), werde ich vermutlich darauf umsteigen, sobald es auf dem Markt ist.