FAQ: Eigene Android-Apps

In Pocket speichern vorlesen Druckansicht
Lesezeit: 6 Min.
Von
  • Oliver Lau
Inhaltsverzeichnis

Welche Software brauche ich zur Android-Programmierung?

Da Android auf Java beruht, benötigt man zuallererst ein möglichst aktuelles Java SDK von Sun/Oracle; die Standard Edition genügt. Hinzu kommt Googles ebenfalls frei erhältliches Android SDK mit den Android-Programmierschnittstellen, einem Emulator und diversen weiteren Entwicklungswerkzeugen. Alle Downloads bekommen Sie über den c’t-Link unten.

Wer den Komfort einer integrierten Entwicklungsumgebung mit Syntax-Hervorhebung, automatischer Code-Ergänzung, Debugging und so weiter nicht benötigt, hat damit bereits alles Erforderliche.

Alle anderen sollten sich das Entwicklungs-Framework Eclipse installieren. Die Android Development Tools (ADT) binden die APIs und Werkzeuge aus dem Android SDK sowie einen Projektassistenten, einen GUI-Editor und eine spezielle Perspektive für Android-Projekte in Eclipse ein. Dazu wählt man „Help/Install New Software/Add“, schreibt „ADT Plugin“ und „https://dl-ssl.google.com/android/eclipse/“ in die Felder „Name“ und „URL“ und bejaht so lange alle weiteren Nachfragen, bis Eclipse neustartet.

Kann ich Android-Handys nur in Java programmieren?

Jein. Die Basis einer jeden Android-App ist Java. Der daraus entstehende Zwischencode wird auf dem Android-Handy in der Java-Laufzeitumgebung „Dalvik“ ausgeführt, was naturgemäß nicht sonderlich effizient ist. Besser geht es mit dem Native Development Kit (NDK). Damit lassen sich zum Beispiel zeitkritische Routinen in C programmieren – eingeschränkt auch in C++ – und über das Java Native Interface (JNI) von Java aus aufrufen. Das Licht besserer Performance bringt jedoch den Schatten höherer Komplexität und Plattformabhängigkeit mit sich. Das Kompilat unterstützt derzeit nur die Befehlssätze ARMv5TE und ARMv7-A. Zum Glück lassen sich die Binaries für beide Plattformen in einer App unterbringen, sodass sie auf modernen Handys die in die ARMv7-A-Architektur eingebauten Gleitkommaoperationen sowie einige weitere Befehlssätze direkt nutzen kann und auf ARMv5TE-kompatiblen Handys den Umweg über eine weniger effiziente Emulation geht.

Google warnt ausdrücklich davor, das NDK einzusetzen, nur weil man mit C/C++ besser zu Fuß ist als mit Java. Der Einsatz des NDK müsse sich spürbar lohnen, etwa weil sich eine bestehende C-Code-Basis wiederverwenden lässt oder dadurch eine deutliche Performance-Steigerung zu erwarten ist.

Java und C/C++ sind mir zu kompliziert. Gibt es nicht einen einfacheren Weg, Apps für Android zu basteln?

Mit Googles App Inventor kann man eine App aus Puzzlestücken zusammenklicken, etwa für Variablen, Schleifen, Fallunterscheidungen, Ereignisbehandlungen oder Funktionsaufrufe [2]. Er präsentiert sich als Kombination aus Web-Oberfläche und Desktop-Anwendung (für Windows, Linux und Mac OS X) nebst Emulator. Sein Funktionsumfang ist allerdings so stark eingeschränkt, dass sich Googles Anspruch, damit beliebige Apps programmieren zu können, nicht in die Tat umsetzen lässt. Zudem ist die Bedienoberfläche sehr unübersichtlich und klickintensiv. Ein Debugger fehlt. Weil im App Inventor kein Java-Code entsteht, sondern ein Programm in einem Scheme-Dialekt, lässt sich ein einmal damit begonnenes Projekt nicht mit den Android Development Tools weiterpflegen. Für ein paar Gehversuche und Experimente eignet er sich trotzdem.

Welche Möglichkeiten habe ich zum Gestalten von Bedienoberflächen?

Android-GUIs kann man deklarativ in XML definieren und als Programm-Code in Java implementieren. Das ist zwar sehr flexibel hinsichtlich verschiedener Bildschirmauflösungen und Layouts, aber auch recht umständlich. Entwickelt man Apps mit Eclipse und den Android Development Tools, hilft ein WYSIWYG-Designer bei der Zusammenstellung der GUIs und Konfiguration der Steuerelemente. Der GUI-Editor ist mitunter nicht auf den ersten Blick zu finden: Wenn man in der Java-Perspektive von Eclipse mit „File/New/Other/Android/Android Project“ ein neues Android-Projekt angelegt hat, dann sollte ihn ein Doppelklick auf die automatisch entstandene Datei res/layout/main.xml öffnen. Falls nur der XML-Code des GUI erscheint, klickt man unterhalb des Editor-Fensters auf den Reiter „Layout“.

Wo kann ich meine selbst programmierte App veröffentlichen?

Der „offizielle“ Marktplatz ist der Android Market, der als App auf jedem Android-Handy vorinstalliert ist. Dort sollte man seine App vor allem einstellen, wenn man dafür Geld verlangen will. Zuvor muss man sich bei Google für einmalig 25 US-Dollar einen sogenannten Merchant Account einrichten. Von den Verkäufen behält Google 30 Prozent ein.

Android wurde als offene Plattform konzipiert, weshalb sich Apps nicht nur wie etwa bei Apple üblich von einer zentralen Quelle installieren lassen, sondern auch direkt via USB vom PC oder Mac. Eine App kann man also auch auf der eigenen Website veröffentlichen oder – mit mehr Reichweite – in einem der Online-App-Kataloge (siehe c’t-Link).

Die Android-Dokumentation, speziell die API-Referenz, ist ziemlich dürftig. Wo finde ich mehr Infos?

Die wohl empfehlenswerteste Anlaufstelle bei Programmierproblemen aller Art ist http://stackoverflow.com, speziell für Android-Entwickler wurde http://anddev.org eingerichtet. Weitere Einstiegspunkte finden Sie in der Literaturliste.

[1] Oliver Lau, Beep Beep, Einführung in die Programmierung des Google-Handys, c’t 12/09, S. 172

[2] Oliver Lau, App Inventor, Android-Apps aus Puzzleteilen zusammenklicken, c’t 19/10, S. 136

[3] Andreas Linke, Appéritif, Einführung in die Entwicklung von Android-Apps, Teil 1, c’t 22/10, S. 188

[4] Andreas Linke, A la carte, Einführung in die Entwicklung von Android-Apps, Teil 2, c’t 24/10, S. 194

[5] Andreas Linke, Gut geschüttelt, Einführung in die Entwicklung von Android-Apps, Teil 3, c’t 1/11, S. 172

www.ct.de/1102143 (ola)