Android - nicht nur für apps - Einführung in die Portierung von Android

Die Seite wird erstellt Jasmin Wiedemann
 
WEITER LESEN
Android - nicht nur für apps - Einführung in die Portierung von Android
tablets | portierung

                   Einführung in die Portierung von Android

                   Android –
                   nicht nur für Apps
                   Androids Erfolg wird nicht ausschließlich von der Menge der Applikationen oder Entwickler bestimmt.
                   Schlussendlich ist auch die schiere Anzahl verschiedenster Geräte, die mit Googles Mobilplattform
                   betreibbar sind, ein Erfolgsfaktor. Doch was gibt Google uns Entwicklern an die Hand, um Android auf
                   neue Geräte zu bringen oder es an unsere Wünsche anzupassen?

                   von Robert Schuster und Christian Küster                    Kernel wird stetig weiterentwickelt und läuft auf einer
                                                                               Vielzahl unterschiedlicher Architekturen.
                   Googles Android erfreut sich vor allem auf Mobiltele-          Google selbst ist bemüht, Android auch als Commu-
                   fonen großer Beliebtheit. Doch als Plattform ist es so      nity-Projekt zu sehen. Auf ihrer Entwicklungs-Informa-
                   vielseitig einsetzbar wie ein Schweizer Taschenmesser.      tionsseite [1] stellt die Community einige Informationen
                   Dies macht es auch interessant, für den möglichen Ein-      bereit, die einen offiziellen Startpunkt für die Portierung
                   satz beispielsweise auf mobilen oder eingebetteten Sys-     oder Anpassungen von Android bieten. Besonders in-
                   temen wie eBook-Readern, Multimedia-Tablets oder            teressant ist auch die aktive Community in der Google
                   Automotive-Multimedia-Anlagen (so genannte In-Ve-           Group android-porting [3]. Sie bietet aufgrund vieler
                   hicle-Infotainment-Systeme/IVIs). Etwas Know-how vo-        bereits gelöster Probleme und Schwierigkeiten eine gro-
                   rausgesetzt, kann Android sogar für eine eigene, selbst     ße Hilfestellung.
                   zusammengestellte Hardware genutzt werden, denn                Von herausragendem Interesse ist jedoch auch die
                   die gesamte Plattform ist von Google als Open-Source-       Möglichkeit, nach der erfolgreichen Portierung des Ba-
                   Projekt beziehungsweise -Produkt bereitgestellt worden.     sissystems Benutzerprogramme in einer Hochsprache
                   Der freigegebene Quellcode enthält alle Komponenten         wie Java entwickeln zu können. Die Vorteile sind hier
                   für ein voll funktionsfähiges Betriebssystem und um-        die große Zahl erfahrener Entwickler und die exzellen-
                   fasst den Kernel, hardwarenahe Hintergrunddienste,          te Werkzeugunterstützung. Zu guter Letzt ist Android
                   die grafische Oberfläche sowie eine Auswahl von Stan-       auch deswegen attraktiv, da es mit dem Google-Mar-
                   dard-Smartphone-Applikationen. Dies ermöglicht es           ket-Zugang zu einem stetig wachsenden Applikations-
                   jedem, Android zu modifizieren, auf die eigenen Anfor-      angebot kommt. Das technisch ausgefeilteste Gadget
                   derungen hin zu verändern oder auch auf eine spezielle      ist letztendlich nur dann für die Benutzer (und damit
                   Hardware zu portieren. Möchte man sich mit derartigen       potenzielle Kunden) interessant, wenn es in der Lage ist,
                   Anpassungen beschäftigen, steht man zunächst vor dem        die Lieblings-App abzuspielen.
                   Problem, dass ein Android-Linux mit einem klassischen
                   Linux-System für Server oder Desktops nicht viel ge-        Anforderungen an die Geräte
                   mein hat. Selbst typische Embedded-Distributionen wie       Ein erster Schritt, um den Einsatz von Android auf sei-
                   OpenWrt oder OpenEmbedded orientieren sich stärker          nem Gerät zu evaluieren, besteht darin, die Anforde-
                   an Unix- und Linux-Konzepten als Android.                   rungen der Plattform, auf der es laufen soll, zu prüfen.
                     Dieser Artikel soll helfen, die ersten Schritte als An-   Dabei gibt es einige Besonderheiten zu beachten. Zu-
                   droid-Plattformarchitekt zu machen und sich das Sys-        nächst ist Android stark auf die Bedienung über einen
                   tem zu erschließen.                                         Touchscreen ausgelegt. Die Bildschirmgröße spielt bei
                                                                               der Bedienbarkeit eine bedeutende Rolle. Das offizielle
                   Was macht Android so interessant?                           Portierungsdokument deutet an, dass eine Größe von
                   Auch wenn Android von einer handelsüblichen Linux-          320 x 480 (HVGA) Pixeln das Minimum des Möglichen
                   Distribution sehr weit entfernt ist, schlägt im Innersten   darstellt. Für eine Portierung ist es auch möglich, mit
                   jedoch immer noch der gleiche Betriebssystemkern wie        einer geringeren Auflösung zu beginnen, jedoch ist die
                   auf einem Desktop-PC oder einem Server. Der Linux-          Benutzbarkeit dadurch eingeschränkt (Abb. 1).

30   2 | 2011   android 360                                                                                             www.android360.de
Android - nicht nur für apps - Einführung in die Portierung von Android
portierung | tablets

  Zu beachten ist vor allem auch, dass normale An-
wendungen hauptsächlich innerhalb der Dalvik Virtual
Machine (VM) ausgeführt werden. Diese VM ist beson-
ders für den Einsatz auf wenig leistungsstarker Embed-
ded-Hardware geeignet. Dalvik ist keine Java Virtual
Ma­chine, da sie nicht den bekannten Java-Bytecode aus-
führt, sondern ihr eigenes Format, den Dalvik-Bytecode.
Trotz allem muss die Hardware mehr Hauptspeicher
oder Prozessorleistung bereitstellen, als wenn die Platt-
form Anwendungen nativ ausführen würde.
  Für Android 1.x sollte man mindestens 64 bis
128 MB Hauptspeicher und 256 MB Langzeitspeicher
einplanen. Für Android-2.x-Geräte sollte man besser
mit der doppelten bis dreifachen Menge an Haupt-
speicher rechnen. Der bei Android 2.2 eingeführte
Just-in-Time-Compiler sorgte zwar für einen enormen
Geschwindigkeitsschub, aber das ging zu Lasten des
Speicherverbrauchs. Android konfiguriert eine harte
                                                            Abb. 1: Bildschirmanzeige des Android Home bei einer Bildschirmgröße
Grenze für die Speicherverwendung einer Applikation.        von 320 x 240 Pixeln
In älteren Versionen darf eine Anwendung nicht mehr
als 16 MB verwenden. In jüngeren Versionen wurde            interessant, denn so lassen sich Änderungen am Basis-
diese Grenze auf 24 MB angehoben.                           system testen, ohne auf echte Hardware angewiesen zu
  Ein kleiner, aber nicht unwichtiger Aspekt der Geräte­    sein. Startet man einen Android-Bauprozess, ohne etwas
anforderung betrifft die Ausstattung mit physischen         konfiguriert zu haben, dann ist die Emulation das Vor-
Tasten. Wer ein Android-Mobiltelefon genauer be-            gabeziel. Um sich also mit der Bauumgebung und den
trachtet, wird die drei bis vier Funktionstasten bemer-     Kernkomponenten von Android vertraut zu machen, ist
ken, die üblicherweise die „Home“-, „Zurück“- oder          der Emulator sehr gut geeignet. Wer stattdessen lieber
„Menü“-Funktion realisieren. Eine für Android gedach-       direkt auf echter Hardware ausprobieren möchte, dem
te Hardware sollte diese Tasten bereitstellen, da sonst     sei eventuell eines der oben genannten Entwicklergeräte
die grafische Oberfläche nicht zu bedienen ist. Stehen      von Google empfohlen.
für diese Tasten noch keine Treiber bereit, kann man           Android besitzt ein relativ flexibles System zur Kon-
zunächst eine USB-Tastatur anschließen. Android unter-      figuration des Builds. Zwar lässt sich die Konfiguration
stützt das USB-Gerät direkt und erlaubt die Bedienung       komplett getrennt von den Quellcodepaketen handha-
über die Funktions- sowie Pos1-Taste.                       ben. Es erfordert jedoch zunächst einiges an Handarbeit
                                                            und Einarbeitung. Es gibt sehr viele Konfigurationsvari-
Aller Anfang ist schwer                                     ablen, die sich nach Belieben anpassen lassen. Was fehlt,
Der komplette Quellcode von Android wird auf an­droid.      ist eine eindeutige Beschreibung derselben. Von daher
git.kernel.org mittels des git-Repositories angeboten. Im   muss sich ein Android-Plattformentwickler immer auch
Hinblick auf die Verwaltung der einzelnen Android-          gut mit dem Stück Software auskennen, in dem die Va-
Komponenten mittels git geht das Projekt ganz eigene        riable definiert wird, um aus ihrer Verwendung auf den
Wege: Anstelle eines einzelnen Repositories gibt es einen   Sinn zu schließen. Es ist davon auszugehen, dass für Mit-
ganzen Strauß einzelner git-Ablagen. Bei dem Gedan-         glieder der Open Handset Alliance, dem Industriekon-
ken, dass man diese alles einzeln herunterladen müss-       sortium hinter Android, sehr wohl eine umfangreiche
te, kann man zunächst erschrecken. Jedoch gibt Google       Dokumentation bereitsteht beziehungsweise Support
dem Entwickler ein Werkzeug namens „repo“ an die            eingekauft werden kann.
Hand. Mit dessen Hilfe ist es möglich, die vielen einzel-      Konfigurationen für spezielle Geräte werden im De-
nen Repositories als ein Ganzes zu betrachten. Befehle,     vice-Verzeichnis des Quellbaums abgelegt. Das Bausys-
die als Argumente an das Werkzeug übergeben werden,         tem erkennt die Verzeichnisse beziehungsweise die darin
wirken sich einfach auf alle Repositories aus. repo ist     enthaltenen Konfigurationsdateien mehr oder weniger
ein relativ einfach zu bedienendes Python-Werkzeug, das     automatisch. Der Entwickler sollte es immer vermei-
dem Entwickler die lästige Aufzählung der einzelnen An­     den, Weichen für bestimmte Geräte oder Hardware im
droid-git-Repositories abnimmt. Lädt man den Code mit       Quellcode zu verdrahten und dort eine Abhängigkeit
dessen Hilfe herunter, liegen alle zu einem kompletten      des Quellcodes zu einem spezifischen Gerät einzufügen.
Build benötigten Quellcodes und Hilfswerkzeuge vor.         Der Build sollte immer durch die Device-Konfiguration
   Unter Android-Entwicklern besonders beliebt ist die      eingestellt werden. Mit den gelieferten Hilfsmitteln, die
im Android-Software-Development-Kit enthaltene und          das Werkzeug „make“ steuern, wird die richtige Konfi-
auf QEMU beruhende Emulation des Betriebssystems.           guration ausgewählt und die darin enthaltenen Schalter,
Für die Plattformentwicklung ist der Emulator ebenfalls     Optionen, Konfigurationen oder binären Hardwaretrei-

www.android360.de                                                                                                   2 | 2011   android 360   31
tablets | portierung

                   Abb. 2: Zu einem frühen Entwicklungszeitpunkt, wie hier bei der Entwicklungshardware Bug 2.0 von Bug Labs,
                   stehen physische Tasten noch nicht zur Verfügung, der Anschluss einer USB-Tastatur hilft.

                   ber respektiert. Der Ausgabedateien eines abgeschlosse-                   Etwas Vorsicht sollte man bei Hardware walten las-
                   nen Bauprozesses liegen für jedes Gerät in einem eigenen               sen, die nicht auf der ARM-Architektur beruht, denn das
                   Verzeichnis, sodass ein Quellbaum problemlos für viele                 AOSP ist an diese Architektur gebunden. Kleinere Hür-
                   verschiedene Geräte genutzt werden kann.                               den sind dabei, einen passenden Cross-Compiler herzu-
                                                                                          stellen. Schwierig wird es, die Dalvik Virtual Machine
                   Die Build-Umgebung                                                     so zu erweitern, dass sie auf der verwendeten Zielarchi-
                   Egal, ob man eine Portierung vornimmt oder die Platt-                  tektur läuft. Googles offizielles Portierungsdokument
                   form für seine Zwecke nur anpassen will, die Build-                    liefert einige Hinweise zu den nötigen Anpassungen, ist
                   Umgebung von Android ist die erste Hürde, die ein                      im Umfang aber eher dünn. Es gibt auch verstreute An-
                   Entwickler meistern muss, denn Google ging hier wie                    passungen für die x86- und MIPS-Architektur. Leider
                   an so vielen Stellen einen eigenen Weg und bediente                    muss man sich diese selber zusammensuchen und pat-
                   sich keines Vorbilds.                                                  chen. Ein guter Startpunkt ist jedoch zum Beispiel das
                      Die komplette Build-Umgebung ist Makefile-basiert,                  Android-x86-Projekt.
                   Voraussetzung ist die GNU-make-Variante. Java-                            Ein kleines Ärgernis ist die Trennung des Builds zwi-
                   Werkzeuge wie Ant oder Maven kommen nicht zum                          schen dem Userland und dem Kernel. Ein Build für ein
                   Einsatz. Eine gute Kenntnis von make ist hilfreich, aber               komplettes Android besteht nach offiziellem Build-
                   nicht zwangsläufig Voraussetzung für die ersten Schrit-                Prozess daher aus zwei Schritten: zunächst dem Bau des
                   te. Drittprojekte, die in Android zum Einsatz kommen,                  Kernels in manueller Form und dann dem Bau des User-
                   werden nie mit ihrem eigenen Build-System gebaut,                      lands mit Bibliotheken, Framework, Virtual Ma­chine
                   sondern erhalten ein neues Makefile, das nach den An-                  und Applikationen. Kernel und Userland-Image hän-
                   droid-Konventionen geschrieben ist. Möchte man eine                    gen aber unter Umständen voneinander ab, wenn man
                   bestehende freie Software in Android integrieren, muss                 möglicherweise Kernel-Module auf das Image spielen
                   man sich intensiv mit dem Bausystem dieser Software                    muss. Dies ist zum Beispiel immer dann der Fall, wenn
                   auseinandersetzen, damit man es für Android spezifisch                 man Wi-Fi unterstützen will. Die Community-Android-
                   neu schreiben kann. Man braucht sich dafür nicht mit                   Distribution 0xdroid integriert beide Schritte in einen
                   Patches zu beschäftigen, die man auf eventuelle Ur-                    automatisierten Prozess, sodass ein Bau von Android
                   sprungsquellen appliziert. Bei Android wird einfach der                direkt auch den zugehörigen Kernel-Bau anstößt. Die
                   gesamte Quellcode der Drittapplikation importiert und                  Hoffnung besteht, dass dies auch bald von Google so
                   Veränderungen werden direkt vorgenommen.                               übernommen wird.

32   2 | 2011   android 360                                                                                                      www.android360.de
portierung | tablets

Das Netz kann helfen                                       vor allem das Bindefr-IPC-Framework dar, welches
Während viele initiale Portierungen hinter geschlosse-     das System V IPC vollkommen ersetzt. Zusätzlich
nen Türen stattfinden und Hersteller natürlich ihre Be-    dazu gibt es u. a. auch ein eigenes internes Logging-
triebsprozesse und Geheimnisse bewahren wollen, gibt       Subsystem, einen speziell gehärteten Netzwerkcode
es allerdings auch offene Initiativen, die Portierungen    und diverse kleinere Anpassungen. Vorsicht ist im Be-
von Android für andere Hardware vornehmen. Diese           sonderen dann geboten, wenn das Gerät selbst nur mit
eignen sich nicht nur als brauchbare Informationsquel-     Kernel-Modifikationen betreibbar ist. Dann müssen
le und für Best Practices, sondern es wurde auch viel      diese Änderungen entweder in den Android-Kernel hi-
neuer wiederverwendbarer Code geschrieben. Projekte,       neingebracht werden oder umgekehrt. An dieser Stelle
bei denen man sich unbedingt umsehen sollte, sind row-     hat man dann einen umfangreichen Kernel-Zweig mit
boat [5], 0xdroid [4], Bug Labs [2] oder Android-x86       Spezialitäten beider Welten zu pflegen.
[6]. rowboat ist interessant, weil es sich für die aktu-      Wie sehr Android auf Mobiltelefone ausgelegt wurde,
elle OMAP3-Prozessorfamilie von Texas Instruments          spiegelt sich vor allem auch in der Hardwareabstrakti-
eignet, die zum Beispiel beim BeagleBoard zum Einsatz      onsschicht wider, die nicht ganz so generisch ausgelegt
kommt. Geräte, die ebenfalls auf OMAP3-Basis laufen,       ist, wie man es gerne hätte. Vorgesehen ist eine Reihe
können durch die Verwendung von rowboat schneller          von Hardwareklassen wie Vibration, Bluetooth, Wi-Fi,
zu einem lauffähigen Ergebnis kommen. Basierend auf        GPS oder auch Accelerometer. Soll die Hardware bei-
beiden Projekten konnte beispielsweise Bug Labs für sei-   spielsweise etwas Spezielleres unterstützen, etwa einen
ne Custom Hardware in kurzer Zeit Android auf seiner       RFID-Leser, dann muss der Entwickler auf verschiede-
Bleeding-Edge-Gerätefamilie Bug 2.0 einsetzen (Abb. 2).­   nen Schichten selbst nachziehen. Schwierig ist das vor
Sogar für die Intel-x86-Architektur gibt es ein Open-      allem in der beigelegten Klassenbibliothek, beziehungs-
Source-Projekt, um Android auf üblichen Heim-PCs           weise dem Android-Framework, für die App-Entwickler
und Netbooks lauffähig zu machen.                          Anwendungen erstellen. Hier muss das API von An­droid
   Bei Besitzern von Android-basierten Smartphones er-     teilweise angepasst werden, da auch Hardware aus-
freuen sich so genannte Custom-ROMs großer Beliebt-        schließlich durch Abstraktion in der Laufzeitumgebung
heit. Ähnlich wie in den Anfangstagen von OpenWrt          angesteuert wird. Eine Änderung des Android-API kann
pflegen hier Open-Source-Entwickler eine eigene Vari-      die Kompatibilität zu bestehenden Android-Versionen
ante von Android, die alle Features unterstützt, die man   brechen und so das Verwenden von bestehenden An-
in den Communities schätzt. Wurde beispielsweise vom       wendungen erschweren.
Netzbetreiber die in Android integrierte Unterstützung        Aber nicht nur bei der Software wurde ein eigener
von WLAN-Tethering entfernt, so ist sie im bekannten       Weg gegangen, eigenwillig ist nämlich auch die Partiti-
CyanogenMod [7] enthalten. Auch bietet das genannte        onierung des internen Telefonspeichers, dessen Entwurf
Projekt aktuelle Android-Versionen (derzeit 2.3.3 – Gin-   wohl vor allem aus Sicherheitsgesichtspunkten durchge-
gerbread) und ist damit oft den Entwicklern der Herstel-   führt wurde. Alle relevanten Programme und Bibliothe-
ler- und Netzbetreiber voraus. Somit bleibt die Software   ken des Android-Betriebssystems liegen unterhalb von­
auf dem eigenen Smartphone am Puls der Zeit. Voraus-       /system auf dem Dateisystem, was im laufenden Betrieb
setzung für die Installation von CyanogenMod ist jedoch    nicht beschreibbar ist.
nicht nur die Existenz einer Portierung, sondern es muss      Werden Fremdapplikationen installiert, wie bei-
auch eine Sicherheitslücke in der Betriebssystemversion    spielsweise aus dem Android Market, werden diese
des Herstellers gefunden werden. Einige Geräteherstel-     unterhalb des /data-Verzeichnisses abgelegt. Dieses ist
ler fahren hierbei mit jeder Hardwaregeneration stärkere   neben einer eventuellen SD-Karte der einzige Platz, um
Sicherheitsgeschütze auf, während andere dieses Thema      überhaupt auf das Dateisystem zu schreiben. Plant man
eher liberal behandeln und den Nutzern im Gegenzug         den Einsatz neuer portierter Bibliotheken, müssen diese
zum Gewährleistungsverlust ihren Willen lassen.            ein solches Dateisystem respektieren. Beispielsweise ist
                                                           in einem üblichen Linux-System /tmp der übliche Platz
Die Untiefen der Plattform                                 für die Ablage temporärer Dateien. Eine gründliche
Eine gute Grundlage, Android auf ein neues Gerät zu        Prüfung vor dem Einsatz neuer Bibliotheken auf deren
portieren, ist zu wissen, ob ein Linux-Kernel grundsätz-   Abhängigkeit zur üblichen Unix-Dateisystemstruktur
lich auf diesem Gerät bootet. Eine korrekte Konfigura-     ist daher unabdingbar.
tion des Linux-Kernels ist die Mindestvoraussetzung,          Zu guter Letzt ist ein Blick auf den Bibliotheksteil
sodass der Kernel die Hardware in Betrieb nehmen           von Android ein Muss, denn hier verstecken sich einige
kann. Als schwierig erweist sich an dieser Stelle, dass    Fallstricke. Will man beispielsweise Android für einen
Android seine Kernels selbst herausgibt und man even-      Spezialeinsatz verändern und muss dazu bestehende
tuell in die Bedrängnis gerät, Treiber oder Bugfixes von   Software oder Bibliotheken unter Android zum Einsatz
neueren Linux-Kernels in den Android-spezifischen          bringen, sollte man sich bewusst sein, dass Androids Bi-
Kernel herunterzuportieren. Ohne die Android-spezi-        bliothekslandschaft sehr beschränkt ist. Besonders die
fischen Treiber und Änderungen wird Android nicht          von Android ausgelieferte Standard-C-Bibliothek ist mit
auf dem Gerät starten. Eine wichtige Änderung stellt       Absicht auf das Nötigste heruntergebrochen. Sie basiert

www.android360.de                                                                                        2 | 2011   android 360   33
tablets | portierung

                             d:
            y E a r l y B i r zum
        Ver          ich bis
             n Sie s       tis-
      Sicher 11 eine Gra
              0              Day
        17.8.2 e am Agile
             hm             is
      Teilna sparen Sie b
           un d         €!
                 zu 850

                       7. bis 11. November 2011
                       The Westin Grand München Arabellapark
                       Anmeldung und Informationen:           www.jax.de

                                     2-IN-1-KONFERENZPAKET!
34   2 | 2011   android 360                                                                           www.android360.de
                                     W-JAX buchen und die Business Technology Days gleichzeitig mitbesuchen!
portierung | tablets

ebenfalls nicht auf der in der Linux-Landschaft verbrei-      Ist das Display noch nicht vollständig in Betrieb ge-
teten GNU-Standard-C-Bibliothek und ist auch nicht auf      nommen oder will man herausfinden, ob Android be-
Kompatibilität ausgelegt. Ebenfalls sind Funktionen, die    reits in den grafischen Modus gebootet ist und nur das
in Android keinen Nutzen haben, einfach herausgestri-       Display selbst nichts anzeigt, können mehrere Hinweise
chen beziehungsweise ohne Funktion. Ein Beispiel sind       auf einen korrekten Boot kontrolliert werden. Einerseits
sämtliche Funktionen, die den Umgang mit Benutzern          lohnt ein Blick in das Android-Logging-System mittels
oder deren Passwörtern ermöglichen. Ein solches Vorge-      logcat, jedoch sind nicht alle Fehler, die dort erscheinen,
hen liegt an dieser Stelle natürlich nahe, denn auf einem   gleich kritisch. Für das Display lohnt ein Blick in das
Mobiltelefon läuft kein Multibenutzersystem.                Device /dev/fb0. Mittels cat /dev/fb0 > /data/dateiname
                                                            kann ein Abzug des aktuellen Framebuffer-Bildes gezo-
Tipps und Tricks                                            gen werden. Eine Kopie auf den Entwicklungsrechner
Android wird durch einen modifizierten Linux-Kernel         und eine Umwandlung des rohen Formats mit einem
betrieben. Die eingangs beschriebenen Quellcodeände-        Werkzeug wie ImageMagick in ein JPEG oder PNG
rungen sind allerdings nicht das Einzige, was Android       kann den Bildschirminhalt des Geräts sichtbar machen.
ein wenig anders macht. Linux hat üblicherweise ein         Eine weitere Möglichkeit ist die Kontrolle der aktuell
sehr flexibles Modulsystem, bei dem Treiber und andere      laufenden Prozesse auf dem Gerät. Ein ps aux auf der
Kernel-Module zur Laufzeit hinzugefügt und entfernt         Android-Shell lässt zum Beispiel erkennen, ob bereits
werden können. Dies ist zwar bei Android auch mög-          GUI-Prozesse wie android.home gestartet sind. Ist dies
lich, als Best Practice hat es sich jedoch erwiesen, auf    der Fall, wurde Android bereits in den grafischen Mo-
dieses Feature zu verzichten und sämtliche Treiber fest     dus hochgefahren!
in den Kernel einzukompilieren. Muss man dennoch den
anderen Weg gehen, beispielsweise wenn dem Entwick-         Android – nicht nur für App-Entwickler
ler nur ein Modul im Binärformat zur Verfügung steht,       Dank Virtualisierung und dem Open-Source-Charak-
sollte man das Modul während des init-Vorgangs in der       ter von Android ist die Portabilität der Plattform höher
entsprechenden init.rc laden.                               als bei vergleichbaren anderen. Dennoch kann es ein
   Die Möglichkeit, die Plattform als solche zu verän-      langer Weg sein, bis ein neues Gerät produktiven Cha-
dern, kann dazu verführen, auch Anpassungen an API          rakter besitzt, denn Android verlangt viel Einarbeitung
oder Android-Framework vorzunehmen. Hier soll-              in seine Eigenheiten. Auf der anderen Seite hat Google
te jedoch darauf geachtet werden, dass Veränderun-          es geschafft, eine Community entstehen zu lassen, die
gen immer abwärtskompatibel bleiben, sodass bereits         nicht nur aus Applikationsentwicklern besteht, son-
existierende Anwendungen weiter laufen. Das An-             dern weltweit Android auf neue Systeme bringt und
droid-Open-Source-Projekt stellt zu diesem Zweck die        Verbesserungen einfügt. So startet man mit aller Wahr-
Compatiblity-Test-Suite bereit. Deren Einsatz sollte        scheinlichkeit nie bei null, denn es gibt genug Informa-
nicht nur bei tiefgreifenden Änderungen erwogen wer-        tionen und aktive Entwickler, die erste Schritte bereits
den, denn die Suite ist auch dazu geeignet, Fehler in der   einmal gegangen sind.
Entwicklung frühzeitig und kontinuierlich zu erkennen.
Eine elegante Möglichkeit, diese in ein Continuous-
Integration-System wie Hudson zu integrieren, besteht
zurzeit jedoch nicht.
   Bevor das Gerät das erste Mal wirklich läuft, ste-                 Robert Schuster ist Softwareentwickler bei der tarent GmbH und
hen möglicherweise einige Tage und Wochen harter                      beschäftigt sich sowohl beruflich als auch privat mit mobilen und
                                                                      eingebetteten Systemen auf Linux-Basis wie Android, OpenEm-
Logfile-Analyse ins Haus. Aber was tun, wenn An-                      bedded und Maemo.
droid keinen üblichen Systemlogger wie syslog oder
syslog-ng ausliefert? Hier ist man mit Android wieder
                                                                      Christian Küster ist Softwareentwickler bei der tarent GmbH und
einen eigenen Weg gegangen: Alle Komponenten von                      findet sein berufliches Glück in den Themen Sicherheit, mobilen
Android, selbst die aus dem Open-Source-Bereich por-                  Plattformen und deren Kombination.
tierten, nutzen das interne Logging von Android, das
der App-Entwickler auch aus seiner IDE kennt: logcat.
Hier werden sämtliche Informationen, auch die des           Links & Literatur
Android-Kernsystems, geloggt.
   Es macht daher Sinn, das Gesamtsystem mit dem            [1] http://source.android.com/porting/index.html
Debug-Flag zu übersetzen. Umso mehr Informationen           [2] http://buglabs.github.com/android/
kann man dem Logging-Subsystem entlocken. Dies lässt
                                                            [3] https://groups.google.com/group/android-porting
sich ebenfalls in eine gute Maßnahme für eigene portier-
                                                            [4] http://code.google.com/p/0xdroid/
te Software umsetzen: Der Entwickler sollte als Erstes
sämtliche Log-Statements Android-kompatibel machen.         [5] http://code.google.com/p/rowboat/wiki/BeagleBoard
Die entsprechende Bibliothek findet sich im /system/        [6] http://www.android-x86.org/
core/liblog-Zweig des Build-Baums.                          [7] http://www.cyanogenmod.com/

www.android360.de                                                                                                          2 | 2011   android 360   35
Sie können auch lesen