Android - nicht nur für apps - Einführung in die Portierung von Android
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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
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 Machine, 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 android. 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 Machine 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 Android 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