Android-Programmierung: Kurz & Gut

Jörg Staudemeyer

Vorwort

Android ist eine Plattform für die Erstellung und den Betrieb von Anwendungen auf (mehr oder weniger) mobilen Geräten wie Smartphones, Tablet-Computern, E-Book-Readern, Fernsehern und vielen anderen Dingen, von denen wir heute vielleicht noch gar keine Vorstellung besitzen. Android wird als Open Source-Projekt von der Open Handset Alliance (http://www.openhandsetalliance.com/) betrieben, der neben dem Suchmaschinenbetreiber Google als treibender Kraft auch zahlreiche Mobilnetzbetreiber und Marketingfirmen sowie Software-, Chip- und Gerätehersteller angehören. Aufgrund des boomenden Marktes für die typischen Geräte, auf die Android zugeschnitten ist, bekommt diese Plattform eine immer größere Bedeutung, und dadurch wendet sich auch eine immer größer werdende Zahl von Entwicklern diesem spannenden und zukunftsträchtigen Thema zu.

Android-Programmierung – kurz & gut wendet sich an Programmierer, die sich das für die Entwicklung von Android-Apps erforderliche Grundlagenwissen schnell aneignen möchten, ohne Lehrbücher durchzuarbeiten, die Hunderte von Seiten stark sind. Das Büchlein führt Sie kurz und knapp in die wichtigsten technischen Zusammenhänge und Vorgehensweisen ein und bietet eine Kurzreferenz für die wichtigsten zur Android-Entwicklungsumgebung gehörenden Begriffe, Definitionen, APIs usw. Dünn, wie es ist, kann es keine umfassende Entwicklerdokumentation sein – um Einzelheiten und fortgeschrittene Anwendungsmöglichkeiten nachzuschlagen, werden Sie auch weiterhin auf die ausführliche Dokumentation auf der Android-Website (http://developer.android.com) zurückgreifen müssen. Aber dieses Buch kann Ihnen einen schnellen Einstieg in das Thema sowie einen Überblick über die Möglichkeiten bieten, die Ihnen beim Erstellen von Anwendungen für diese Plattform zur Verfügung stehen.

Darüber hinaus kann dieses Buch auch keine Einführung in elementare Grundlagen sein. Um es erfolgreich nutzen zu können, sollten Sie daher über gewisse Vorkenntnisse verfügen (die Sie sich natürlich anhand umfangreicher verfügbarer Literatur aneignen können). In erster Linie gehört dazu ein solides Grundwissen über die Java-Programmierung (Java SE) im Speziellen und die moderne Rechner-, Netzwerk- und Datenbanktechnik im Allgemeinen. Daneben sollten Sie sich aber auch schon etwas in der Benutzung von Android-Geräten auskennen (so ist beispielsweise der Besitz eines einfachen, aber halbwegs aktuellen Android-Telefons zum Ausprobieren durchaus zu empfehlen). Und schließlich können einige Erfahrungen mit der Java-Entwicklungsumgebung Eclipse nicht schaden.

Die Aktualität des Themas mobile computing bringt es mit sich, dass Android permanent um neue Fähigkeiten erweitert wird, was sich im regelmäßigen Erscheinen neuer Versionen des Betriebssystems äußert. Beim Verfassen der zweiten Auflage dieses Buchs ist die Android-Version 4.3 (»Jelly Bean«) aktuell, und auf diesen Stand beziehen wir uns auch. Dabei weisen wir aber auch auf Änderungen und Erweiterungen der Bibliotheken hin, die seit der relativ weit verbreiteten Version 2.2 (»Froyo«) eingeführt worden sind, damit Sie auch auf die Benutzer älterer Geräte Rücksicht nehmen können (siehe auch den Abschnitt „Versionsgeschichte“ in Kapitel 1).

Das Buch gliedert sich in drei Teile. Der erste Teil umfasst eine Einführung in die grundlegenden Techniken von Android: die Architektur, die zugehörige Entwicklungsumgebung, die prinzipielle Funktionsweise von Android-basierten Anwendungen und den Entwicklungsprozess. Im zweiten Teil beschäftigen wir uns mit dem Android-Framework, den Möglichkeiten, die es uns zur Verfügung stellt, und damit, wie man mit diesen umgeht. Der dritte Teil enthält schließlich eine Reihe von Übersichten zu weiterführenden Möglichkeiten und zum Nachschlagen bei der täglichen Arbeit.

Wenn das Thema Android-Programmierung für Sie noch neu ist, lesen Sie am besten die beiden ersten Teile komplett, um sich das nötige Hintergrundwissen für die Arbeit mit Android zu erarbeiten. Andernfalls können Sie auf den gesamten Inhalt des Buchs entsprechend Ihren Vorkenntnissen und den Anforderungen Ihres aktuellen Projekts zugreifen.

Wenn man beginnt, sich mit der Anwendungsentwicklung unter Android zu beschäftigen, trifft man auf eine Menge Begriffe, die entweder Android-spezifisch sind oder die im Android-Umfeld abweichend von anderen Zusammenhängen verwendet werden. Um Ihnen den Einstieg zu erleichtern, finden Sie unter http://www.oreilly.de/catalog/androidprogpr2ger/chapter ein Glossar, in dem die wichtigsten Begriffe aufgelistet und kurz erläutert werden.

Teil I. Android-Grundlagen

Kapitel 1. Die Plattform

Android ist eine Kombination aus Betriebssystem und Anwendungs-Framework, ausgerichtet auf die besonderen Anforderungen und Möglichkeiten von mobilen Geräten wie Tablets und Smartphones. In diesem Kapitel zeigen wir, aus welchen Schichten die Architektur dieser Plattform aufgebaut ist und wie auf ihrer Basis Anwendungen betrieben werden.

Architektur

Die Android-Plattform besteht aus eine Fülle unterschiedlicher Bestandteile, die man sich am besten als eine Reihe von Schichten mit unterschiedlichen Aufgaben vorstellt. Die meisten dieser Komponenten bestehen aus Open Source-Produkten, die zum großen Teil unabhängig von Android entstanden sind. Einige sind allerdings auch eigens für Android entwickelt worden – sei es, weil sie spezifisch für die Geräte sind, auf denen Android verwendet wird, oder weil vorhandene Open Source-Lösungen aus lizenzrechtlichen Gründen nicht eingesetzt werden können.

Abbildung 1.1 zeigt eine Übersicht der verschiedenen Schichten der Plattform.

Ebene 1: Linux-Kernel

Die unterste Schicht des Betriebssystems bildet ein Linux-Kernel. Er stellt elementare Systemfunktionen wie die Prozessverwaltung, die Benutzer- und Rechteverwaltung, den Dateizugriff usw. zur Verfügung. Diese Schicht dient auch der Hardware-Abstraktion, hier befinden sich also die gerätespezifischen Treiber der Hardware-Hersteller, die einen einheitlichen Zugriff auf divergierende Hardware-Plattfomen ermöglichen.

Abbildung 1.1 Schichten der Android-Plattform

Eine Besonderheit des in Android eingesetzten Linux-Kernels besteht darin, dass sich dort anstelle der standardmäßig verwendeten GNU-C-Systembibliothek eine eigene Bibliothek befindet, die besser auf die Erfordernisse mobiler Geräte und das Android-Lizenzmodell abgestimmt ist.

Ebene 2: Native Bibliotheken

Die nächste Schicht besteht aus einer Reihe von C- bzw. C++-Bibliotheken. Sie bieten Basisfunktionen, die über die Funktionen des Linux-Kernels hinausgehen und von den darüberliegenden Schichten verwendet werden. Dazu gehören die folgenden Bibliotheken:

SQLite ist ein kompaktes, aber leistungsfähiges relationales Datenbanksystem, dessen Datenbanken jeweils aus einer einzigen Datei bestehen.

LibWebCore ist eine sehr schnelle HTML-Rendering-Engine, die beispielsweise auch im Webbrowser Google Chrome eingesetzt wird.

Das Media Framework umfasst Bibliotheken auf der Basis von OpenCORE, mit deren Hilfe zahlreiche Bild-, Video- und Audioformate wiedergegeben und aufgenommen werden können.

SGL und OpenGL sind Engines für die Darstellung von 2-D- und 3-D-Grafiken.

FreeType ist eine Bibliothek für die Darstellung von Bitmap- und Vektorzeichensätzen.

Ebene 3: Dalvik-Laufzeitumgebung

Die Laufzeitumgebung für die in Java geschriebenen Programme der oberen Systemschichten besteht aus einer speziellen virtuellen Maschine und den zugehörigen Plattformbibliotheken.

Die virtuelle Maschine Dalvik läuft ebenfalls auf der Basis des Linux-Kernels und dient dazu, die in einer speziellen Bytecode-Variante kodierten Java-Programme der Android-Apps auszuführen.

Die Dalvik-VM unterscheidet sich in technischer Hinsicht von der standardmäßigen Java-VM und verarbeitet nur eine spezielle Form von Maschinenprogrammen, die sich von normalem Java-Bytecode grundsätzlich unterscheiden. Das Dalvik Executable Format (DEX) wird nicht mithilfe eines Compilers direkt aus Java-Quellprogrammen erzeugt. Vielmehr übersetzt man die Java-Programme zunächst in normalen Java-Bytecode, aus dem dann vom Hilfsprogramm des Android-Toolkits der DEX-Code generiert wird.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!