Samstag, 30. März 2013

K2.4 - Entwicklungsumgebung zur cross-platform Entwicklung für Android mit Eclipse

Einleitung

Die Entwicklung für mobile Endgeräte, z.B. Smartphones oder Tablets, ist wahrscheinlich der wachstumsstärkste Sektor der letzten 5 Jahre oder sogar länger. Ein Pionier dieser Enwicklung ist ausnahmsweise mal nicht Microsoft®, sondern Apple® mit ihren Produkten iPhone® und iPad®. Für diese Produkte gelten andere Anforderungen für die Entwicklung, als z.B. für die mobilen Plattformen Windows 8®, Blackberry® oder Google's Android®. Es gibt noch einige Plattformen mehr, die aktuell aber keine größere Relevanz im mobilen Markt spielen, z.B. Symbian® von Nokia® oder Bada® von Samsung®.

Für einen Entwickler, und die sind schließlich die Zielgruppe dieses Artikels, ist jede mobile Plattform eine eigenständige Umgebung mit unterschiedlichen Anforderungen. Man muss für jede Plattform einiges an Spezialwissen aufbauen, angefangen von der nativen Programmiersprache (C#, Java, Objective-C) bis hin zu den plattformspezifischen SDKs der Hersteller und den damit verbundenen Unterschiede der einzelnen Betriebssysteme hinsichtlich Workflow, Rechteverwaltung, Ereignissteuerung und vielen anderen Möglichkeiten. Sehr oft sind diese Möglichkeiten an die Version des Betriebssystems, sowie die Hardware, das Endgerät, gebunden.

Neben der nativen Entwicklung von mobilen Apps ist auch die Entwicklung von mobilen Webapps ein zunehmender Markt. Diese mobilen Webapps sind keine mobilen Websites, sondern eine s.g. hybride Lösung. Man nennt diesen Bereich auch cross-platform development. Es gibt auch hier spezielle Anforderungen an die Entwicklungsumgebungen und in allen Fällen benötigt man fast eine identische Umgebung, wie für die native Entwicklung, z.B. das SDK oder eine bestimmte IDE.
Der Grundgedanke der cross-platform Entwicklung ist, dass man als Entwickler 100% native mobile Apps bauen kann ohne Programmierung in der plattformspezifischen Programmiersprache, stattdessen mit den einfacheren Web Technologien HTML/HTML5, CSS und vorallem Javascript. Für diesen Ansatz gibt es ständig neue Frameworks und aktuell haben sich Apache Cordova (ehemals Phonegap), Appcelerator Titanium oder auch Sencha Touch einen Namen gemacht. Eine ebenfalls sehr interessante Lösung ist MoSync mit der man sowohl mit C/C++ als auch mit Javascript cross-platform entwickeln kann. Weitere cross-platform Lösungen kann man hier sehen.

Das Ziel aller cross-platform Technologien ist, dass man mit einer einzigen Code Basis native Applikationen für alle Plattformen entwickeln kann. Native Applikationen und mobile Webapps können im Gegensatz zu mobilen Websites in die jeweiligen App Stores eingetragen werden. Dieser Vertriebsweg ist ebenfalls sehr unterschiedlich gelöst von den jeweiligen Herstellern, ist aber in jedem Fall ein wichtiger Vertriebskanal für die mobile Anwendungen.

In diesem Artikel werde ich eine Entwicklungsumgebung für die Android Plattform aufsetzen. Diese Umgebung ist für die Entwicklung von nativen Apps und mobilen Webapps mit Cordova/Phonegap geeignet. Wer für die cross-platform Entwicklung ein anderes Framework einsetzen möchte wird in diesem Artikel keine Lösung finden. Der Teil für die native Entwicklung für Android ist jedoch für alle cross-platform Technologien relevant.

Motivation

Als Java Entwickler wird man in Zukunft kaum noch um die Android Entwicklung herumkommen. Man erwartet von meinem Java Entwickler, dass er auch Anwendungen für Android entwickeln kann, obwohl das natürlich aus Sicht der Entwicklung totaler Blödsinn ist. Die Java Entwicklung für Desktop oder Web sind ebenfalls komplett unterschiedlich, und dazu kommt nun auch der Bereich Mobile. Dieser Bereich ist nicht so neu wie man meint, denn mit Java ME (Micro Edition) gibt es bereits einen Sektor für die Embedded Entwicklung. Letztlich sind mobile Apps eine Art Embedded System, und gehören damit einer eigenen IT Strategie an.

Die Entwicklung für mobile Endgeräte ist allerdings nicht so kompliziert wie man meinen könnte. Insbesondere für die Android Plattform sind die Voraussetzungen sehr überschaubar und das zusätzlich notwendige Android Fachwissen kann man sich recht schnell aneignen. Wer eine gute Basis als Softwareentwickler mitbringt, egal ob Desktop oder Web, wird eine sehr flache Lernkurve haben. Da der Mobile Bereich jedoch etwas höhere Anforderungen an die Softwareentwicklung stellt, als beispielsweise die Web Entwicklung, sollte man sich als Einsteiger mehr Zeit nehmen, um sich komplexe Themen wie Speicherverwaltung, eingebettete Datenbanken, asynchrone Kommunikation, etc. ins Bewusstsein zu rufen.

Am Ende dieses Artikels hat jedoch jeder, egal ob Profi oder Einsteiger, eine professionelle Entwicklungsumgebung für die Android Entwicklung. Was sie daraus dann machen liegt an ihnen, denn dies ist kein Tutorial, um eine Hello World Anwendung zu programmieren, sondern um die Voraussetzungen dafür zu schaffen.

Voraussetzungen

Folgende Tools werden wir benötigen:
  • JDK - Java Development Kit
  • Eclipse IDE
  • Eclipse Plugins - Android Developer Tools (ADT), MDS AppLaud (Phonegap/Cordova)
  • Android SDK

Umsetzung

Kurzübersicht aller Schritte

  1. Eclipse Plugin ADT installieren (~10min)
  2. Android SDK Installer herunterladen und in ein Wahlverzeichnis installieren (~20min)
  3. Android SDK Manager konfigurieren (~15min)
  4. Eclipse Plugin MDS AppLaud installieren (~5min)
  5. Eclipse Plugin HTML Web Editor installieren (~5min)
  6. Phonegap/Cordova Projekt erstellen (~5min)
  7. Troubleshooting

1. Eclipse Plugin ADT installieren

Installieren Sie folgende Pakete:


2. Android SDK herunterladen und installieren

Laden Sie das Android SDK herunter. Entpacken Sie das Paket in ein lokales Verzeichnis ihrer Wahl, z.B.


3. Android SDK Manager konfigurieren

Starten Sie den SDK Manager über die .exe Datei und aktivieren Sie die Android Plattformversionen, die Sie benötigen bzw. für die Sie entwickeln möchten.

4. Eclipse Plugin MDS AppLaud installieren

Installieren Sie das Eclipse Plugin MDS AppLaud, um Projekte mit Phonegap/Cordova einfacher erstellen zu können. Dieses Plugin liefert einen Project Wizard, der die notwendige Verzeichnisstruktur und die Javascript Dateien erstellt, damit Sie direkt mit einer Beispielanwendung starten können.


5. Eclipse Plugin HTML Web Editor installieren

Damit Eclipse Syntaxhighlighting in HTML Dateien unterstützt, wird das HTML Web Editor Plugin benötigt.



6. Phonegap/Cordova Projekt erstellen

Wir nutzen nun den Project Wizard des MDS AppLaud Plugins, um ein neues Projekt zu erstellen. Dieses Projekt beinhaltet eine lauffähige Phonegap/Cordova Applikation.

Starten Sie den Project Wizard Dialog mit einem Klick auf das "Telefon" Symbol des AppLaud Plugins, hier direkt links neben dem Dialog zu sehen:


Nach Abschluss des Dialogs können Sie die Dateien bearbeiten oder das Projekt z.B. im Emulator testen.


6. Troubleshooting


Fehler:   

Starting emulator for AVD '...' PANIC: Could not open

Lösung:

Dieser Fehler kann auftreten, wenn man das Benutzerverzeichnis auf eine andere Partition eingerichtet hat, also statt unter C: auf D: o.ä. In diesem Fall kann man eine Verknüpfung unter C: einrichten:
  • mklink /J "C:\Users\John Doe\.android" "D:\John Doe\.android"

 

Fehler:

Expired debug.keystore

Lösung:

In diesem Fall kann man die Datei .android/debug.keystore einfach löschen. Sie wird neu erzeugt.

Fehler:

Unknown error: Unable to build: the file dx.jar was not loaded from the SDK folder! SecurityException: Unable to find field for dex.jar

Lösung:

SDK Manager - Options -> Clear Cache
SDK Manager öffnen und Updates installieren.

 

Fehler:

Testgerät per USB angeschlossen, wird aber nicht erkannt.

Lösung:

Im Geräte-Manager prüfen, ob das Gerät richtig erkannt wurde, ansonsten Treiber im Internet herunterladen und installieren.

Zusammenfassung

Sie haben nun alle Installationen die notwendig sind, um eine erste mobile cross-platform Anwendung mit Phonegap/Cordova zu entwickeln. Sie benötigen je Zielplattform das native SDK, in diesem Artikel haben wir das Android SDK installiert. Sie können damit für jede Android Version entwickeln und falls Sie kein Testgerät zur Verfügung haben, können Sie ein s.g. Virtual Device einrichten und damit im Emulator testen.

Außerdem ist diese Infrastruktur auch dazu geeignet, um echte native Android Apps mit Java und dem Android SDK zu programmieren. Auch dazu habe ich einen Blog Post geschrieben.

Hier noch ein Diagramm, welches den Workflow und einige Voraussetzungen für die Mobile Entwicklung der 4 wichtigsten Plattformen (iOS, Android, Windows Phone und Blackberry) darstellt.




Weitere Schritte

Sie sollten sich die Möglichkeiten im Bereich Unit/Integration Testing unter Android klar machen und anfangen erste Tests für ihre Anwendung zu schreiben. Nützliche Links sind:



Keine Kommentare:

Kommentar veröffentlichen