Android-Apps selbstgemacht

Top-Tutorial für Android-Einsteiger: Wir bauen uns einen Twitter-Client!

Timo Ohr

Gerade einmal drei Jahre haben die kleinen grünen Roboter aus dem Hause Google gebraucht, um den heiß umkämpften Smartphone-Markt im Sturm zu erobern. Eine Entwicklung, die wohl auch vor Tablets keinen Halt machen wird. Nichts desto trotz bietet der Android Market noch reichlich Nischen, die es mit Apps zu füllen gilt. Unser Einsteigertutorial für das Android-Development-Kit soll dabei helfen.

Nach dem Aufstieg von Web 2.0 schienen native Anwendungen und ihre zugehörigen Oberflächen-Technologien für lange Zeit vom Aussterben bedroht. HTTP und HTML gaben den Ton an. Für Überläufer aus dem Web werden native Apps, wie man sie auf Android oder dem iPhone findet, daher zunächst etwas Eingewöhnungszeit erfordern. So bieten diese zwar in aller Regel mehr Möglichkeiten als man es im Schoß der Browser gewohnt war, jedoch gehen diese auch gerne mit spürbar mehr Aufwand einher. Java-Veteranen werden hier sicher das ein oder andere Muster wieder erkennen, allerdings ist auch hier nicht alles Java, was nach Kaffee riecht.

Android ist keine Insel

Nicht zuletzt von Googles und Oracles Anwälten wird momentan eifrig diskutiert, inwiefern es sich bei Android denn nun eigentlich um Java handelt. Auch wir wollen diese Frage nicht abschließend beantworten, jedoch hilft es, einen kurzen Blick auf die Gemeinsamkeiten und Unterschiede zu werfen, insbesondere da unser Tutorial auch einige grundlegende Java-Kenntnisse voraussetzt.

Zu 100% Java ist zunächst einmal die Programmiersprache, mit der Android-Anwendungen entwickelt werden. Zum Einsatz kommt dabei Version 6 der Sprache. Das hat zunächst einmal den Vorteil, dass Entwicklungsumgebungen wie beispielsweise Eclipse ohne weiteres für Android genutzt werden können. Um dem Tutorial folgen zu können, sollte man zumindest oberflächliche Kenntnisse der Sprache mitbringen. Allerdings sollten auch Entwickler ähnlicher Technologien, wie beispielsweise C#, sich recht schnell zurecht finden können.

Bestenfalls ähnlich sind die von Android eingesetzten Java-Bibliotheken. Diese basieren auf Apache Harmony, einem Nachbau der Oracle-Bibliotheken auf Basis der Apache Licence. Android entfernt hier jedoch eine Reihe der in der Java SE normalerweise enthaltenen Pakete, insbesondere sind unter Android Swing und AWT nicht verfügbar. Im Gegenzug wurden einige für mobile Anwendungen hilfreiche Pakete hinzugefügt, beispielsweise die HttpComponents-Bibliothek von Apache. Insofern sollte man hier beim Einsatz von bestehenden Java-Bibliotheken grundsätzlich darauf achten, ob auch alle Klassen in Android verfügbar sind.

Den größten Unterschied stellt die Laufzeitumgebung dar, bei der Google eine Eigenentwicklung namens Dalvik einsetzt. Diese verhält sich in aller Regel identisch zu Oracles Laufzeitumgebung, allerdings müssen für Java generierte Binärdateien (class oder jar-Dateien) zunächst in das Dalvik-Format konvertiert werden. Dazu liefert Google ein Tool namens dex, das von den Entwicklungsumgebungen jedoch für gewöhnlich automatisch ausgeführt wird.

Entwicklungsumgebung einrichten

Alle für die Entwicklung benötigten Werkzeuge sind grundsätzlich kostenlos und für alle gängigen Betriebssysteme (Windows, OS-X, Linux) verfügbar. Ein Google-Developer-Account [1] wird erst benötigt, sobald man Anwendungen in den Android-Market einstellen möchte. Entwickelt werden kann völlig unverbindlich auch ohne. Eine einsatzbereite Eclipse-Installation vorausgesetzt lässt sich die Entwicklungsumgebung für Android mit folgenden Schritten einrichten:

  1. Um das Eclipse-Plug-in für Android zu installieren, klickt man in Eclipse auf HELP / INSTALL NEW SOFTWARE und im folgenden Dialog in der rechten oberen Ecke auf ADD. Dort gibt man als Quelle https://dl-ssl.google.com/android/eclipse an und installiert anschließend die verfügbar gewordenen Plug-ins.
  2. Anschließend lädt man die Android SDK herunter [2] und entpackt sie an einen beliebigen Ort auf der Festplatte.
  3. In Eclipse unter WINDOW / PREFERENCES in der linken Spalte ANDROID auswählen und als SDK LOCATION den Pfad zur entpackten Android SDK angeben.
  4. Über den AVD Manager, welcher zusammen mit dem Android SDK installiert wurde, kann nun ein Android-Emulator erzeugt werden. Dazu klickt man in Eclipse auf WINDOW / ANDROID SDK UND AVD MANAGER und dort rechts oben auf NEW. In dem sich öffnenden Dialog kann ein beliebiger Name für das Emulator-Abbild und die Android-Version ausgewählt werden. Für das Tutorial empfehlen wir Android 2.2.

Hello Android

In bester Tradition wollen wir zunächst ein einfaches „Hello World“-Projekt zum Laufen bringen. Hierzu klickt man in Eclipse auf FILE / NEW und wählt im folgenden Dialog ANDROID PROJECT aus. Anschließend geben wir eine Reihe von Informationen über das Projekt an: neben dem zum Emulator analogen Build-Target den Namen des Projekts und der Anwendung sowie dessen Java-Paket, in welchem die Anwendung angesiedelt ist (in unserem Beispiel de.hello.world). Hier lassen sich grundsätzlich auch Beispielprojekte aus dem SDK-Ordner importieren (für eine Übersicht aller Beispielprojekte [3]). Außerdem können wir uns von Eclipse noch direkt eine sogenannte Activity erzeugen lassen, die wir MainActivity taufen. Nach einem Klick auf FINISH wird das Projekt erstellt, welches dank der erstellten Activity bereits als solches lauffähig ist. Durch Betätigen von STRG+F11 können wir den RUN AS-Dialog von Eclipse öffnen. Hier wählen wir ANDROID APPLICATION und klicken auf OK. Anschließend wählt Android einen passenden Emulator aus, startet diesen und öffnet anschließend unsere App, die uns mit einem freundlichen „Hello World!“ begrüßt.

Über Activitys und andere Komponenten

Im Wesentlichen bestehen Apps in Android aus einer Reihe von losen Komponenten, die zwar gebündelt als App installiert werden, danach jedoch weitgehend autark operieren können. Insgesamt gibt es vier Arten von Komponenten:

  • Die wohl wichtigste Art von Komponente sind die sogenannten Activitys. Diese sind in Android für die Nutzeroberfläche zuständig und kümmern sich um alles, was mit Nutzereingaben oder grafischen Ausgaben zu tun hat. In aller Regel ist in Android immer nur eine Activity gleichzeitig sichtbar, weshalb sich der Nutzer von Activity zu Activity hangeln muss, beispielsweise von der Liste aller Emails zu der Detailansicht einer Email. Über den physischen Back-Button können Nutzer zur jeweils letzten Activity zurückkehren.
  • Services laufen wie die übrigen Komponenten primär im Hintergrund ab und sind daher für den Nutzer in aller Regel nicht wahrnehmbar. Einzige Ausnahme bei Services sind dauerhafte Benachrichtigungen, die in der Statusleiste des Gerätes anzeigen, ob ein Service läuft, wie beispielsweise der Music-Player. Hauptaufgabe der Services ist es, externen Anwendungen Funktionalität der eigenen App über eine Interprozessschnittstelle zur Verfügung zu stellen.
  • Content-Provider dienen ebenfalls primär der Kommunikation mit anderen Apps und ermöglichen diesen, auf die eigenen Daten zuzugreifen. Dabei lassen sich Datenbank-Informationen oder Dateien abgreifen, die ansonsten für andere Anwendungen unzugänglich wären. Über die Content-Provider-Schnittstelle lässt sich hierbei genau regeln, auf welche Daten andere Anwendungen Zugriff haben dürfen.
  • Broadcast-Receiver sind vergleichsweise simple Komponenten. Diese definieren Intent-Filter für spezielle Broadcast-Intents, die vom System gesendet werden, um interessierte Anwendungen über diverse Ereignisse zu informieren, beispielsweise wenn die Batterie leer wird oder ein USB-Kabel angeschlossen wurde. Anwendungen können selbst auch Broadcast-Intents verschicken, allerdings keine der System-Intents. Mehr Informationen zu Intents gibt es in dem zugehörigen Kasten.
Twitter-Client

Zur Übung wollen wir an dieser Stelle einen einfachen Twitter-Client zusammenbauen, der uns die Tweets eines einzelnen Tweet-Streams in einer Liste anzeigt. Hierzu benötigen wir die folgenden Bestandteile:

  • Eine TwitterActivity, welche die Liste der Tweets darstellt, die Twitter-API abfrägt und Nutzereingaben entgegen nimmt (in unserem Fall ein Update-Button). Mehr Informationen zum Thema Activitys gibt es im zugehörigen Kasten.
  • Eine Tweet-Klasse, welche die nötigen Informationen eines einzelnen Tweets enthält und die von der Twitter-API zurückgegebenen Daten ausliest.
  • Ein TweetAdapter, der als Bindeglied zwischen unseren Tweets und ListView dient, einer Android-Klasse zur Darstellung beliebiger Daten in Listenform.
  • Ein Layout für unsere TwitterActivity, welches festlegt, wie die Liste dargestellt werden soll
    Zur Vorbereitung legen wir wie zuvor ein neues Android-Projekt namens TwitterClient an und siedeln dieses im Paket de.twitterclient an, in welchem wir auch all unsere Klassen ablegen werden. Eine MainActivity muss nicht erzeugt werden. Ein Screenshot der fertigen App ist in Abbildung 1 dargestellt.

Abb. 1: Unser Twitter-Client
Geschrieben von
Timo Ohr
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.