Eclipse_als_Entwicklungsumgebung_für_das_Android Hochschule: Standort: Studiengang: Veranstaltung: Betreuer: Typ: Themengebiet: Autor(en): Studienzeitmodell: Semesterbezeichnung: Studiensemester: Bearbeitungsstatus: Prüfungstermin: Abgabetermin: Fallstudienarbeit Hochschule für Oekonomie & Management Düsseldorf Bachelor Wirtschaftsinformatik Fallstudie / Wissenschaftliches Arbeiten Prof._Dr._Uwe_Kern Fallstudienarbeit Location Based eBusiness Sven Beckmann, Matthias Niehoff Abendstudium 4 begutachtet Inhaltsverzeichnis • 1 Abkürzungsverzeichnis • 2 Abbildungsverzeichnis • 3 Tabellenverzeichnis • 4 Einleitung • 5 Grundlagen ♦ 5.1 Integrierte Entwicklungsumgebung ♦ 5.2 Eclipse IDE ♦ 5.3 Android ◊ 5.3.1 Android OS ◊ 5.3.2 Android SDK • 6 Analysekriterien • 7 Eclipse als Entwicklungsumgebung ♦ 7.1 ADT Plugin für Eclipse ◊ 7.1.1 Wizards ◊ 7.1.2 Editoren ◊ 7.1.3 DDMS Perspective ♦ 7.2 Tools des SDK und deren Integration ◊ 7.2.1 Android Debug Bridge ◊ 7.2.2 Emulator ◊ 7.2.3 Android Virtual Devices ◊ 7.2.4 Android Asset Packaging Tool • 8 ADT Plugin im Einsatz ♦ 8.1 Projektanlage Inhaltsverzeichnis 1 Eclipse_als_Entwicklungsumgebung_für_das_Android ♦ 8.2 Oberflächengestaltung ♦ 8.3 Konfiguration ♦ 8.4 Debugging ♦ 8.5 Signierung ♦ 8.6 Veröffentlichung • 9 Bewertung • 10 Fazit • 11 Literaturverzeichnis • 12 Fußnoten 1 Abkürzungsverzeichnis Abkürzung ADB API APK ARM AVD DDMS DVM GPS GUI IDE OS OSGi SDK USB VM WYSIWYG XML Bedeutung Android Debug Bridge Application Programming Interface Android Package Advanced RISC Machine Android Virtual Device Dalvik Debug Monitor Server Dalvik Virtual Machine Global Positioning System Graphical User Interface Integrated Development Environment Operating System Open Services Gateway initiative Software Development Kit Universal Serial Bus Virtuelle Maschine What You See Is What You Get Extensible Markup Language 2 Abbildungsverzeichnis Abb.-Nr. Abbildung 1 Eclipse Logo 2 Android Logo 3 Android Architektur 4 5 XML File Wizard DDMS Perspective Android Virtual Device im Emulator Layout Editor 6 7 1 Abkürzungsverzeichnis Quelle http://eclipse.org/eclipse.org-common/themes/Nova/images/eclipse.png (09.05.2010 17:31) http://www.android.com/media/android_vector.jpg (12.05.2010 15:34) http://developer.android.com/images/system-architecture.jpg (12.05.2010 15:35) 2 Eclipse_als_Entwicklungsumgebung_für_das_Android 3 Tabellenverzeichnis Tabelle Nr. 1 2 3 4 5 Bezeichnung Übersicht der Eclipsepakete [1] Übersicht der Tools [2] Übersicht der Wizards Übersicht der Editoren Die DDMS Perspektive 4 Einleitung Android gewinnt zunehmend an Bedeutung. Zuletzt sorgte die Meldung für Aufsehen, dass Android das Iphone OS (Operating System) in den USA von Platz 2 der Handybetriebssysteme verdrängt hat und nun hinter Research in Motion liegt[3]. Dies gilt zwar nur für die Verkäufe im ersten Quartal 2010 und nicht für bereits eingesetzte Geräte, dennoch ist es ein klares Anzeichen dafür, dass sich der Ansatz eines freien Betriebssystems durchsetzen kann. Ein weiterer aktueller Trend sind sogenannten Apps für mobile Geräte. Das sind kleine Programme, die häufig nur für eine kleine Aufgabe konzipiert sind. Auch für das Android gibt es eine Vielzahl dieser Apps, die man im Android Market [4] herunterladen kann. Der Kurznachrichtendienst Twitter veröffentlichte seine offizielle App für Android noch vor der für das iPhone[5]. Wie aber kommt es zu dieser Fülle an Anwendungen? Wie schwer ist es, eine Anwendung für Androidgeräte zu entwickeln, insbesondere wenn die Entwicklung mit einer integrierten Entwicklungsumgebung wie Eclipse gestützt wird. Welche Arbeit nimmt Eclipse einem ab und wo stößt es an Grenzen? Welche Prozesse lassen sich durch Eclipse unterstützen und automatisieren und wo muss selbst "Hand angelegt werden"? Welche Vor- und Nachteile bietet Eclipse und wie unterstützt es den Entwickler? Und letztendlich stellt sich auch die Frage, wie die selbst entwickelten Programme verteilt werden und was man dann mit kommerziellen Produkten verdienen kann. Im Rahmen dieser Arbeit sollen die oben genannten Fragen und besonders die Frage der Entwicklung mit Eclipse genauer untersucht und analysiert werden. Um auch einen praktischen Eindruck von der Implementierung zu gewinnen, soll nach einer Analyse der einzelnen Funktionen in Eclipse auch der Einsatz der Tools genauer untersucht werden. Im Verlauf dieser Arbeit soll nur so weit auf die Android-Programmierung eingegangen werden, wie es für die Analyse des Plugins für Eclipse notwendig ist. Weiterhin soll diese Hausarbeit keine Anleitung für die Erstellung einer Androidanwendung darstellen. 5 Grundlagen 5.1 Integrierte Entwicklungsumgebung Unter einer IDE (Integrierten Entwicklungsumgebung, von englisch integrated development environment) versteht man ein Anwendungsprogramm, welches die Entwicklung von Software unterstützt und vereinfacht. Sie umfasst eine Reihe von Kernkomponenten, die zur Softwareentwicklung nötig sind[6]: 3 Tabellenverzeichnis 3 Eclipse_als_Entwicklungsumgebung_für_das_Android Texteditor Diese sind für die Entwicklung von Quellcode angepasst und bieten Erweiterungen wie Zeilennummerierung, Syntaxhighlighting, Code Beautifier, Code Completion und vorgefertigte Programmgerüste, sogenannte Skeletons. Projektverwaltung Refactoring Compiler oder Interpreter, je nach Programmiersprache Linker Debugger Dieser hilft zur Laufzeit beim Aufspüren von Fehler und ermöglicht es häufig Programme Zeile für Zeile abzuarbeiten und Variableninhalte zu überwachen. Viele umfangreiche IDEs bieten weitere Hilfestellungen wie zum Beispiel Versionierung, einfache GUI (Graphical User Interface) Editoren oder Modellierungsfunktionen. Entwicklungsumgebungen sollen dem Entwickler wiederkehrende Aufgaben wie Refactoring und die Anlage neuer Komponenten abnehmen oder vereinfachen, damit sich der Entwickler auf seine eigentliche Arbeit konzentrieren kann. Sie bieten dabei häufig eine grafische Oberfläche, um Kommandozeilenprogramme wie zum Beispiel den Compiler und Linker teilweise automatisiert aufzurufen. Es gibt heute eine Reihe von proprietären und freien IDEs. Die bekanntesten sind Eclipse, Netbeans, Microsoft Visual Studio und KDevelop. 5.2 Eclipse IDE Abb. 1 Eclipse Logo [Quelle: http://eclipse.org/eclipse.org-common/themes/Nova/images/eclipse.png (09.05.2010 17:31)] Die Eclipse IDE ist eine freie Entwicklungsumgebung. Die Plattform wurde bis 2001 von IBM entwickelt und dann dem Eclipse Consortium als Open Source Projekt zur Verfügung gestellt. 2004 ging aus dem Eclipse Consortium die gemeinnützige Organisation Eclipse Foundation hervor[7]. Eclipse selbst ist eine kleine Sammlung von Plugins, welche die Grundfunktionalitäten des Programms zur Verfügung stellen. Man erhält durch die Plattform in erster Linie GUI Funktionalitäten. Diese eröffnen die Möglichkeit auf Eclipse basierende Rich Client Applications zu entwickeln[8]. Dank der guten Erweiterungsmöglichkeit durch die Implementierung der OSGi Service Plattform gibt es Plugins, die zum Beispiel das Entwickeln mit anderen Sprachen wie C, PHP und Perl ermöglichen. Die Java Development Tools stellen die Plugins dar, die die Java Entwicklung mit Eclipse ermöglichen. Sie bieten unter anderem eine Reihe von Ansichten, sogenannte Views, Assistenten (Wizards), Editoren und 5.1 Integrierte Entwicklungsumgebung 4 Eclipse_als_Entwicklungsumgebung_für_das_Android Refactoring Tools, die die Programmierung mit Java vereinfachen. Außerdem bieten sie erweiterte Debuggingmöglichkeiten für Java Programme. Diese sind auch auch bei der Androidentwicklung hilfreich, da auch hier mit Java entwickelt wird. Die IDE ist eine weit verbreitete Entwicklungsumgebung für Java. Zu den Vorteilen der IDE gehören unter anderem: Open Source Prinzipiell kann jeder mitentwickeln. Beiträge werden, nachdem sie begutachtet wurden, der Allgemeinheit zur Verfügung gestellt. Modularer Aufbau Dank der Nutzung von Equinox als Implementierung der OSGi (Open Services Gateway initiative) Service Plattform ist es unkompliziert eigene Plugins zu entwickeln und bereitzustellen. Große Anzahl an Plugins Zurzeit gibt es im Eclipse Marketplace knapp 1000 Plugins zum kostenfreien Download. Außerdem findet man dort etwa 100 auf der Eclipse Technologie aufbauende Rich Clients[9] Benutzerorientiert Die Foundation geht bei der Entwicklung auch auf Wünsche der Nutzer ein, sodass der Nutzer in den Entwicklungsprozess mit einbezogen wird. Eclipse besteht aus mehreren Perspektiven. Diese fassen funktional zusammenhängende Einheiten wie Ansichten oder Editoren zusammen. Es gibt für unterschiedliche Aufgaben auch unterschiedliche Perspektiven, zum Beispiel eine Debugging Perspektive. Seit der Version 3.2 im Jahr 2006 werden die Veröffentlichungen der wichtigsten Komponenten zu sogenannten Simultaneous Releases zusammengelegt.[10]. Damit sollen Versionskonflikte zwischen den einzelnen Komponenten vermieden werden. Die aktuelle Version 3.5 trägt den Namen Galileo. Weiterhin wird Eclipse in mehreren vorkonfigurierten Paketen angeboten, welche sich in der Zusammenstellung der Komponenten und Plugins unterscheiden. Die wichtigsten davon sind: Tab. 1: Übersicht der Eclipsepakete Paketname Eclipse IDE for Java Developers Eclipse IDE for Java EE Developers Eclipse IDE for C/C++ Developers Eclipse for PHP Developers Pulsar for Mobile Java Developers Beschreibung Besteht aus den Basis Komponenten zum Entwickeln von Java Anwendungen Enthält die Java IDE und zusätzlich Tools für Java EE und Webentwicklung Speziell auf die C/C++ Programmierung abgestimmtes Paket Paket für die Entwicklung von Webseiten mit PHP. Bietet zusätzlich Integrationsmöglichkeiten für die Steuerung eines lokalen Webservers Stellt Tools für die Erstellung von Applikationen für Handys bereit. Die klassische Eclipse IDE mit den Java Development Tools, allerdings mit weniger Funktionen als die IDE for Java Developers Grundlage diese Arbeit ist die Eclipse IDE for Java EE Developers in der Version 3.5. Eclipse Classic 5.2 Eclipse IDE 5 Eclipse_als_Entwicklungsumgebung_für_das_Android 5.3 Android Abb. 2 Android Logo [Quelle: http://www.android.com/media/android_vector.jpg (12.05.2010 15:34)] Android ist ein freies und quelloffenes Betriebssystem für mobile Geräte. Es basiert auf einem Linux Kernel und wird von der Open Handset Alliance, welche aus einer großen Anzahl von Netzbetreibern, Software Firmen und Geräteherstellern besteht, entwickelt. Federführend ist Google. Android wurde am 21 Oktober 2008 veröffentlicht und hat seitdem enorm an Popularität gewonnen. Die zurzeit aktuellste Version 2.2 ist bislang nur als SDK (Software Development Kit) verfügbar und hört auf den Codename "Froyo"[11]. In unserer Arbeit arbeiten wir mit der Version 2.1 (Eclair). Das "Android Open Source" Projekt besteht nicht nur aus einem Betriebssystem für mobile Endgeräte, sondern außerdem aus Entwicklungskomponenten, Middleware und wichtigen Programmen für ein mobiles Endgerät (z.B. Kalender, Browser). 5.3.1 Android OS Das Betriebssystem Android OS basiert auf dem Linux Kernel in Version 2.6, der speziell auf die Verwendung auf mobilen Geräten zugeschnitten wurde. Im Kernel von Android OS sind z.B. die Hardwaretreiber für das Display oder die Kamera enthalten. Der Kernel ist für die typischen Aufgaben eines Betriebssystems verantwortlich. Wie bei anderen Betriebssystemen auch, dient der Kernel bei Android OS ebenfalls als Kommunikationsschicht zwischen Hardware und der restlichen Software[12]. Abb. 3 Android Architektur [Quelle: http://developer.android.com/images/system-architecture.jpg (12.05.2010 15:35)] Die Android Runtime stellt die Laufzeitumgebung für alle Programme zur Verfügung, die auf dem Betriebssystem laufen und greift hierbei auf Kernelfunktionalitäten zurück. Des Weiteren werden in der Android Runtime grundlegende Java Bibliotheken mitgeliefert, um die Entwicklung von Anwendungen zu erleichtern. 5.3 Android 6 Eclipse_als_Entwicklungsumgebung_für_das_Android Anwendungen für Android OS können ausschließlich mit der Programmiersprache Java entwickelt werden. Dies liegt unter anderem daran, dass alle Anwendungen in der sog. "Dalvik Virtual Machine" laufen, einer angepassten Laufzeitumgebung für Java Programme, die besonders ressourcenschonend arbeitet. So wurden z.B. Reflections weggelassen, um die DVM (Dalvik Virtual Machine) performanter zu gestalten[13]. Eine weitere Besonderheit der Dalvik VM ist die Tatsache, dass jede Anwendung in einer eigenen VM gestartet wird. Dies bietet unter anderem Vorteile bei der Sicherheit und Fehlerbehandlung von Prozessen bzw. Anwendungen. Die DVM wurde speziell für ARM-Prozessoren optimiert, da diese im mobilen Bereich stark verbreitet sind. Android OS liefert auch weitere Standardbibliotheken z.B. für die Persistenz von Daten, das Darstellen von Grafiken und das Abspielen von Videos. Da diese Bibliotheken für uns im Rahmen dieser Arbeit nicht relevant sind, verweisen wir auf die Android Dokumentation für weiterführende Information zu diesem Thema. Besonders interessant für die Entwicklung von Anwendungen für das Android OS ist das mitgelieferte Application Framework. Es vereinfacht eine große Anzahl von häufig auftretenden Problemen bei der Entwicklung. Das Application Framework bietet simplen Zugriff auf gerätspezifische Funktionalitäten, z.B. die Vibration oder der Alarm, aber auch Möglichkeiten zur schnellen Gestaltung von Benutzeroberflächen und Zugriff auf die Benutzeroberfläche des Betriebssystems, z.B. für die Darstellungen von Warnungen oder eines Tray-Icons[14]. Wie oben bereits erwähnt, enthält Android OS von Anfang an wichtige Programme für die tägliche Arbeit mit dem Betriebssystem. Hierzu zählen unter anderem Browser, Kontaktverwaltung und die Geräteeinstellungen. 5.3.2 Android SDK Das Android SDK bietet neben einer umfangreichen Dokumentation der gesamten API (Application Programming Interface) einige Tools zum Erstellen von Anwendungen für Android OS. Es beinhaltet weiterhin auch das Development Plugin für Eclipse und den Emulator[2]. Tab. 2: Übersicht der SDK - Tools Name des Tools Android Asset Packaging Tool Beschreibung (kurz aapt) Ermöglicht das Erzeugen von APK (Android Package) Dateien (kurz adb) Verwaltet und manipuliert den Gerätestatus von virtuellen oder physikalischen Endgeräten Ist das größte und wichtigste Tool des SDK. Mit Hilfe von android ist das Erzeugen von android virtuellen Maschinen und von Projekten möglich. Außerdem kann hierüber das SDK aktualisiert und erweitert werden Android Interface Ist eine Sprache, die den Austausch von Objekten zwischen verschiedenen Anwendungen Definition Language ermöglicht Android Virtual (kurz AVD) Stellt eine Konfiguration des Emulators da, wodurch sich verschiedene Devices Endgeräte besser nachbilden lassen Backup Manager (kurz bmgr) Ermöglicht einfache Sicherungs- und Wiederherstellungsfunktionen Dalvik Debug Monitor (kurz DDMS) Bietet u.a. Thread und Heap Informationen, als auch Emulatorsteuerung dx Erzeugt Android Bytecode mittels normaler .class Dateien Draw 9-patch Erlaubt das einfache Erzeugen von sog. Nine-Patch Grafiken Emulator Ermöglicht das Testen und Entwickeln von Anwendungen ohne physikalisches Endgerät Android Debug Bridge 5.3.1 Android OS 7 Eclipse_als_Entwicklungsumgebung_für_das_Android Hierarchy Viewer Hilft dem Entwickler beim Optimieren seiner grafischen Benutzeroberfläche layoutopt Optimiert Layouts und Layout-Hierarchien mksdcard Erzeugt Speicherabbilder, die im Emulator als Speicherkarte erkannt werden UI/Application Generiert zufällig Nutzereingaben und Systemereignisse um Anwendungen zu testen Exerciser Monkey sqlite3 Wird zur Speicherung von Daten genutzt Traceview Stellt Systemlogs grafisch aufbereitet dar zipalign Optimiert Android Application Dateien und passt diese an Im Laufe dieser Arbeit werden ausschließlich Teile des SDK analysiert, die sich in Eclipse integrieren lassen. Kleinere Tools werden dabei bewusst außen vor vorgelassen. 6 Analysekriterien Für die Entwicklung von Anwendungen gibt es die verschiedensten Entwicklungsumgebungen. Eclipse ist besonders stark im Bereich für Java vertreten. Ein Merkmal von Eclipse ist die einfache Erweiterbarkeit durch sog. Plugins. Plugins erleichtern dem Nutzer die Arbeit in einem speziellen Themengebiet. Das Android Plugin bietet keine neuen Funktionalitäten, sondern versucht die Funktionen der Android Tools in eine grafische Oberfläche zu integrieren. Deshalb ist vor allem der Vergleich zwischen dem ADT (Android Developing Tools) Plugin und den Tools von besonderer Bedeutung, wobei die Vereinfachung, die das Plugin mit sich bringt im Mittelpunkt der Betrachtung steht. Da sich das Plugin als Gesamtlösung anbietet und eine ganzheitliche Entwicklung ermöglichen will, stellt sich auch die Frage, wie komplett der Funktionsumfang ist. Wenn essenzielle Funktionen fehlen ist das Plugin an sich überflüssig und würde nur für spezielle, einzelne Aufgaben in Frage kommen. Doch nicht nur der Vergleich mit den Android Tools ist von Bedeutung. Da das Plugin eine grafische Benutzeroberfläche bietet, sind auch die Faktoren von Bedeutung, die für jede andere grafische Oberfläche von Belang sind. Grafische Benutzeroberflächen sollten intuitiv und eingängig sein, also ein hohes Maß an Übersichtlichkeit bieten. Des Weiteren ist Eingängigkeit besonders wichtig, da Programme, für deren Nutzung eine hohe Einarbeitungszeit notwendig ist, häufig vom Anwender ignoriert werden, da durch die Einarbeitung der Zeitvorteil, der eventuell erzielt werden kann, zunichte gemacht wird. Wie von jedem anderem Programm erwartet der Entwickler von einem solchen Plugin auch ein stabiles Laufverhalten. Datenverlust oder das erneute Ausführen von Arbeiten ist für ein solches Plugin inakzeptabel. 7 Eclipse als Entwicklungsumgebung 7.1 ADT Plugin für Eclipse Wie schon unter Android SDK erwähnt stellt das Android SDK mit den Android Developing Tools (ADT) Plugin eine Erweiterung für Eclipse bereit. Im Folgenden soll auf diese Erweiterung genauer eingegangen und die Vorund Nachteile dieser Integration analysiert werden. Das ADT Plugin stellt in Eclipse zusätzliche Wizards, Editoren und Views für ein einfacheres Erstellen von Android Anwendungen bereit. 5.3.2 Android SDK 8 Eclipse_als_Entwicklungsumgebung_für_das_Android 7.1.1 Wizards XML File Wizard Die nachfolgende Tabelle gibt einen Überblick über die zusätzlichen Wizards: Android Project Wizard Android Test Project Wizard Vereinfacht das Anlegen eines Projektes durch automatisches Erstellen der Ordnerstruktur und Anlegen einer ersten Aktivität. Erstellt ein auf JUnit basierendes Testprojekt für ein Android Projekt. Dabei erstellt es ebenfalls die Ordnerstruktur. Mit diesem Wizard lassen sich XML (Extensible Markup Language) Files erstellen, die in Android XML File Android zur Konfiguration der Anwendung genutzt werden. Bei allen Wizards lässt sich zusammenfassen, dass sie die Arbeit des Entwicklers erheblich vereinfachen. Die Assistenten für neue Projekte bieten die von anderen Projekt Wizards in der Eclipse IDE (Java Project etc.) bekannten Einstiegshilfen. Nach dem Durchführen eines Assistenten, der zum Beispiel für ein neues Projekt im einfachsten Fall nur 3 Angaben braucht, steht in Eclipse ein lauffähiges Android Hello World Programm zur Verfügung, mit dem die Entwicklung gestartet werden kann. Ohne Benutzung des Eclipse Plugins müsste die Projektstruktur per Hand oder mit dem Kommandozeilen Tool android aus dem SDK angelegt werden. Der "New Android XML File Wizard" ist eine hilfreiche Unterstützung, um die XML Konfigurationsfiles für Android zu erstellen. Er bietet eine Reihe von Android spezifsche Ressourcen an, die erstellt werden können, und einige dazu passende Qualifier, welche die Werte dafür darstellen. Durch die Generierung bleibt dem Benutzer die Arbeit an XML Source erspart. 7.1.2 Editoren Die durch das ADT Plugin zur Verfügung gestellten Editoren ermöglichen das Editieren der XML Datei anhand von grafischen Oberflächen. Die einzelnen Editoren sind: Android Layout Editor 7.1.1 Wizards Ermöglicht das Erstellen von Layouts im Stile eines WYSIWYG (What You See Is What You Get) Editors. 9 Eclipse_als_Entwicklungsumgebung_für_das_Android Android Manifest Stellt eine grafische Oberfläche zum Editieren der Einstellungen in der Editor AndroidManifest.xml bereit. Android Menu Editor Bietet eine Oberfläche zum Erstellen von Menüs Android Resource Einfache Möglichkeit Elemente in Resource Dateien zu verwalten. Editor Android XML Einfache Möglichkeit Elemente in XML - Resource Dateien zu verwalten. Der Editor ist Resource Editor stark verwandt mit dem einfachen Resource Editor Alle neuen Editoren bilden den kompletten Umfang der XML-Konfigurationen ab. Durch die Möglichkeit auch die XML-Datei als Klartext zu bearbeiten, besteht jederzeit die Gelegenheit, die Konfiguration auch per Hand zu ändern. Änderungen in der XML-Datei werden ohne Umwege im Editor sichtbar. Im Layout Editor hat man weiterhin die Chance, das Design für unterschiedliche Gerätetypen und somit auch unterschiedliche Bildschirmgrößen zu testen und anzupassen. Weiterhin gibt es verschiedene sogenannte Themes, die direkt angeschaut werden können. Dabei handelt es sich um vorgefertigte Farbvorlagen für Android Anwendungen. Es entfällt das Arbeiten im XML-Dokument und der Wechsel zu einer Vorschauseite. Als Gestaltungselemente stehen sowohl verschiedene Layoutelemente als auch vorgefertigte Designelemente, sogenannte Views, wie Button, Textboxen oder komplexe Elemente zum Beispiel Fortschrittsbalken oder Uhren zur Verfügung. Der Manifest Editor ist neben dem Layout Editor der Umfangreichste. Neben allgemeinen Attributen zur Anwendungen lassen sich hier auf verschiedenen Reitern Einstellungen zu Berechtigungen, benutzten Komponenten wie zum Beispiel der Kamera oder dem GPS-Sensor und Bestandteile der Anwendung festlegen. Die grafische Oberfläche bietet dabei eine große Arbeitserleichterung, da eine Manifest Datei schnell eine Größe von mehr als 1000 Zeilen erreicht. Wie bei Layout Editor und bei jedem anderen Editor besteht auch hier die Möglichkeit die XML-Datei direkt zu bearbeiten. Der Menu Editor und die Resourcen Editoren funktionieren alle nach demselben Prinzip. Sie sind nicht so umfangreich wie der Layout und Manifest Editor. Sie bieten lediglich die Möglichkeit, vordefinierte Elemente in den XML-Baum einzufügen. Die Anzahl und Art dieser Elemente ist in den einzelnen Editoren unterschiedlich. Gemeinsam mit den anderen Editoren bieten auch sie die Gelegenheit die Konfiguration in den XML-Dateien zu bearbeiten. Zusammenfassend lässt sich sagen, dass die Editoren dem Entwickler die Arbeit erheblich vereinfachen. Durch die strukturierte und eingängige Oberfläche ist es möglich auch große Konfigurationsdateien übersichtlich zu bearbeiten. Dabei ist es in der Regel nicht notwendig direkt in der XML-Datei zu arbeiten, da alle Funktionalitäten von der Oberfläche abgedeckt werden. Der Layout Editor ist dabei hervorzuheben, da er eine einfache und intuitive Gestaltung der Anwendung erlaubt. 7.1.3 DDMS Perspective 7.1.2 Editoren 10 Eclipse_als_Entwicklungsumgebung_für_das_Android DDMS Perspective DDMS steht für Dalvik Debug Monitor Server. Die DDMS Perspektive ist eine Darstellung des DDMS Tools des SDKs in Eclipse. Sie erlaubt damit weitreichendes Debugging und Monitoring von Anwendungen innerhalb der IDE. Eine Perspektive besteht in Eclipse aus Views und Editoren. Die wichtigsten Views in der DDMS Perspektive sind: Devices File Explorer Eine Übersicht über aktuelle, gestartete, virtuelle Geräte und ihrer Prozesse. Ermöglicht das Browsen durch das Dateisystem des Geräts. Möglichkeit Eigenschaften des durch den Emulator simulierten Handys zu ändern (GPS Emulator Control Koordinaten, Telefonstatus, Telefonaktionen wie Telefonieren) Weiterhin gibt es noch Ansichten (Views) zur Speicherkontrolle (Heap, Allocation Tracker), zum Logging (Log Cat) und zur Threadübersicht (Threads) In der Devices Übersicht findet man alle laufenden Prozesse der Emulation. Hier besteht die Möglichkeit die Thread und Speicheranzeige zu aktivieren. Von hier lassen sich auch Prozesse debuggen - vorausgesetzt der dazugehörige Java Code befindet sich im aktuellen Eclipse Workspace - und stoppen. Um diese Überwachungsund Debuggingfunktionalitäten bereitstellen zu können, greift der DDMS auf die Funktionen der ADB zurück. Der File Explorer ermöglicht das Durchsuchen des Dateisystem und Hoch- und Runterladen von Dateien auf dem Endgerät[15]. Mit der Emulator Control lassen sich externe Einflüsse auf die Emulation simulieren. Zu nennen sind hier insbesondere die Verbindungsgeschwindigkeit des Netzes, die Möglichkeit eingehende SMS und Anrufe zu simulieren und die Position des GPS zu ändern[16]. Durch das ADT Plugin gibt es in Eclipse einen zentralen Punkt, um die Emulation zu überwachen. Durch die grafische Oberfläche ist es einfacher die Anwendung zu steuern und Parameter zu ändern. Besonders vorteilhaft ist, dass dies nicht nur bei virtuellen Endgeräten, sondern auch auf über USB angeschlossenen Android Geräten ermöglicht wird. Weiterhin hat man durch die GUI jederzeit alle wichtigen Parameter im Zugriff. Allerdings bietet die Eclipse Integration nicht denselben Umfang wie das Tool. So bietet das Tool die Möglichkeit Dumps zu erzeugen und Systeminformationen abzufragen. Die Nutzung des ADT Plugins ist aber auf Grund der oben genannten Debuggingmöglichkeit für Prozesse als sinnvoller zu erachten, als das SDK Tool. Generell wirkt nicht nur die Eclipse Perspektive ungeordnet, sondern auch das Tool selbst. Sowohl das Tool als auch die Perspektive vereinen viele hilfreiche Funktionalitäten, die allerdings thematisch kaum zusammen passen (z.B. die Emulator 7.1.3 DDMS Perspective 11 Eclipse_als_Entwicklungsumgebung_für_das_Android Control und die Loggin Funktion). Dies kann den Nutzer anfangs verwirren. 7.2 Tools des SDK und deren Integration 7.2.1 Android Debug Bridge Die Android Debug Bridge, kurz ADB, ermöglicht umfassende Debugging Funktionalitäten. Durch die ADB können Anwendungen auf AVD's wie bei gewöhnlichem Java-Code debuggt werden. Mithilfe des ADT Plugins ist es möglich die Standard Debug Funktion von Eclipse zu nutzen, was für Entwickler sehr nützlich ist. Entwickler, die beginnen mit Android zu arbeiten, ersparen sich dadurch viel Einarbeitungszeit und Konfigurationsaufwand über die Kommandozeile. Ein einfaches Ausführen der geschriebenen Anwendung im Debug-Modus genügt. Das ADT Plugin nimmt automatisch die erforderlichen Konfigurationen der Komponenten der ADB vor. Die Android Debug Bridge besteht aus drei Komponenten[17]: • Client (wird vom ADT Plugin automatisch erzeugt) • Server (steuert Kommunikation von Client und Deamon) • Deamon (läuft in Virtueller Maschine) 7.2.2 Emulator Android Virtual Device im Emulator Mit Hilfe des Emulators können virtuelle mobile Endgeräte auf dem Computer ausgeführt und bedient werden. Damit kann man seine selbst geschriebenen Anwendungen im Betrieb betrachten. Der Emulator stellt alle Funktionen eines gewöhnlichen Endgeräts bereit. Dies ist beim Entwickeln einer Anwendung besonders hilfreich, weil der Zugriff auf z.B. die Internetverbindung simuliert werden kann[18]. Des Weiteren ist der Emulator in der Lage gewöhnliche Anwendungsfälle zu simulieren. So kann man z.B. einen eingehen Anruf simulieren um zu beobachten wie sich die eigene Anwendung verhält. Der Emulator unterstützt den Entwickler also mit einer Reihe von Debug-Funktionalitäten. Eine weitere nützliche Option des Emulators ist die Unterstützung von SD-Karten. Es können Dateipfade eingerichtet werden, die im laufenden System behandelt werden, als wären es in einem Endgerät verwendete 7.2 Tools des SDK und deren Integration 12 Eclipse_als_Entwicklungsumgebung_für_das_Android SD-Karten. Die Funktionalitäten des Emulators sind zwar sehr umfangreich. Allerdings gibt es einige Funktionalitäten, die bei einem echten Gerät vorhanden sind, vom Emulator aber nicht geboten werden. Z.B. ist es nicht möglich Videos und Fotos mithilfe des Emulators in einem AVD aufzunehmen. Der Emulator ist in der Lage verschiedene Betriebssystemversionen darzustellen. Er kann also Android OS 1.5 sowie auch Android OS 2.1 darstellen. Der Emulator kann völlig unabhängig von Eclipse genutzt werden. In Verbindung mit dem ADT Plugin kann jedoch auf die Debug-Funktionalität von Eclipse in vollem Umfang zugegriffen werden. Android Anwendungen lassen sich wie jeder andere Java-Code auch mithilfe des Eclipse Debuggers Schritt für Schritt debuggen. Außerdem können sämtliche Anwendungsfälle (z.B. eingehende Anrufe) direkt über die DDMS Perspektive gestartet werden. D.h. auch hier werden Kommandozeileneingaben durch das ADT Plugin überflüssig gemacht. Auch die Verbindungsgeschwindigkeiten des Emulators oder ortsbezogene Informationen können direkt in Eclipse eingegeben werden. Das ADT Plugin bietet ebenfalls einen Dateibrowser mit dessen Hilfe direkt Inhalte auf die virtuelle Maschine im Emulator geschoben werden können (siehe auch Abschnitt 6.2.3) In Eclipse können dem Emulator auch Parameter übergeben werden, die das Verhalten einzelner AVD's beeinflussen. Ein Nachteil der Integration ist allerdings, dass manche Hardwareinstellungen nach wie vor nur über die Kommandozeile vorgenommen werden können[19]. 7.2.3 Android Virtual Devices Android Virtual Devices, kurz AVD, bestehen aus Konfigurationsinformationen, mit deren Hilfe sich verschiedene Endgeräte nachahmen lassen. So kann z.B. die Größe des Speichers oder des Bildschirms gereglt werden. Doch nicht nur die Hardware Eigenschaften lassen sich festlegen, auch die Version des Betriebssystems ist konfigurierbar. Die ist hilfreich, wenn eine Anwendung versionsübergreifend bereitgestellt werden soll. Durch die Möglichkeit AVD's mit verschiedenen Betriebssystem-Versionen auszustatten, kann ein Entwickler sicherstellen, dass seine Anwendung auf allen Versionen lauffähig ist. Das Erstellen von AVD's ist seit Version 0.9.3 des ADT Plugins mithilfe einer grafischen Benutzeroberfläche möglich. Das Tool, welches diese Funktionalität bietet heißt AVD Manager. Diese Benutzeroberfläche des AVD Managers kann aus Eclipse heraus gestartet werden, ist aber nicht direkt in die Eclipse Benutzeroberfläche integriert. Für ältere Versionen des ADT Plugins wird ein Werkzeug namens "android" bereitgestellt, welches ähnliche Funktionalitäten hat, jedoch keinerlei grafische Benutzeroberfläche anbietet. Das Erstellen eines AVD's wird durch das ADT Plugin stark vereinfacht. Es ist keine Arbeit mit der Kommandozeile notwendig. Um ein AVD zu erzuegen wird lediglich die Angabe eines Namens und einer Zielumgebung benötigt. Die Verwaltung von bereits erzeugten AVD's erfolgt ebenfalls über den AVD Manager. Es ist auch möglich AVD's zu löschen und zu starten. Soll ein Programm auf einer virtuellen Maschine getestet werden, so ist dies ebenfalls direkt aus Eclipse möglich. Wenn man seinen Code ausführen möchte, bietet das ADT Plugin die Möglichkeit den Code als "Android Application" ausführen zu lassen. Wird diese Option gewählt, wird automatisch der Emulator für AVD's gestartet und die geschriebene Anwendung auf dem AVD installiert. 7.2.2 Emulator 13 Eclipse_als_Entwicklungsumgebung_für_das_Android 7.2.4 Android Asset Packaging Tool Das Android Asset Packaging Tool, kurz AAPT, erlaubt dem Nutzer Ziparchive und Ähnliches aus seinem Code erstellen zu lassen. Wichtiger ist jedoch das Kompilieren von Ressourcedateien. Eclipse baut auf AAPT auf um Pakete von Source-Code erstellen zu lassen, die dann auf virtuelle Endgeräte geladen werden. Eclipse nutzt AAPT jedoch nur indirekt. Der Nutzer hat keinen Einfluss auf das Verhalten von AAPT. Hierfür müsste das Tool direkt aufgerufen werden. 8 ADT Plugin im Einsatz 8.1 Projektanlage Die Projektanlage läuft denkbar einfach ab. Hierfür wird unter "File->New" ein "Android Project" ausgewählt, um den entsprechenden Wizard zu starten. Der Wizard unterscheidet sich von einem normalen Java-Projekt insofern, dass z.B. die Endgerätsversion angegeben werden kann oder Mindestanforderungen an das Betriebssystem. Außerdem kann der Wizard auf Wunsch sofort eine Activity für die Anwendung erstellen. Eine Activity stellt die zentrale Komponente einer Android Anwendung dar. Nachdem diese Eingaben gemacht wurden, kann man ein neues Projekt angelegt werden. Alternativ ist es möglich, auch ein Testprojekt anzulegen. Der Wizard nimmt dem Nutzer hier besonders viel Arbeit ab. Die benötigte Ordnerstruktur wird erstellt, ebenso wie benötigte Dateien. Auch werden die benötigten Abhängigkeiten automatisch eingerichtet. Das hat einen ganz entscheidenden Vorteil: Nach Abschluss dieses Wizards kann sofort mit der Entwicklung begonnen werden. 8.2 Oberflächengestaltung Die Oberflächengestaltung für Android erfolgt komplett via XML-Dateien. Wie bereits unter Editoren beschrieben steht auch für das Bearbeiten dieser XML-Dateien ein umfangreicher Editor zur Verfügung. Dieser Editor bietet eine Layoutvorschau. Auf diese Layoutvorschau können per Drag & Drop Elemente hinzugefügt werden. Der XML-Code wird daraufhin automatisch in dem entsprechenden Dokument angepasst. Sobald ein Element hinzugefügt wurde, kann dessen Position nicht nachträglich editiert werden. Dies ist nur in den XML-Dateien realisierbar. Ein späteres Ändern der Position von Elementen ist jedoch ein nützliches Feature. Bei einer Layoutvorschau dieser Art versucht man intuitiv Elemente zu bewegen. Es überrascht, dass dies so nicht möglich ist. 7.2.4 Android Asset Packaging Tool 14 Eclipse_als_Entwicklungsumgebung_für_das_Android Layout Editor In der Layoutvorschau ist eine Auswahl von Geräten vorgesehen. Wird ein bestimmtes Gerät gewählt, wird die Layoutvorschau auf die Displaygröße des Endgeräts angepasst. Dadurch ist der Entwickler in der Lage seine Anwendung für die Bildschirme der verschiedenen Endgeräte zu optimieren. Es lässt sich einfach zwischen verschiedenen Bildschirmlayouts hin- und herschalten. Einige dieser Bildschirmlayouts sind mitgeliefert. Der Editor erlaubt das Erstellen und Speichern von eigenen Bildschirmlayouts. Um sich die Auswirkungen von verschiedenen Bildschirmlayouts auf die Anwendung anzusehen, muss keine zusätzliche virtuelle Maschine installiert werden. Dies spart sehr viel Zeit und ist durch eine reine XML-Konfiguration nicht zu erreichen. Auf ähnliche Art und Weise lässt sich auch zwischen den Neigungen auswählen. Z.B. kann die Layoutvorschau (wie bei einem echten Endgerät auch) in die Horizontale gekippt werden. Das erlaubt dem Entwickler sein Layout sofort für beide Ansichten zu optimieren. Ebenso kann die Layoutvorschau das Aussehen der Anwendung unter Berücksichtigung verschiedener Themes darstellen. Eine weitere Besonderheit ist, dass bei einer falschen Kombination von Elementen sofort eine Fehlermeldung ausgegeben wird. Dadurch können Fehler frühzeitig behoben werden, ohne einen Testlauf im Emulator starten zu müssen. Problematisch ist, dass der Editor ausschließlich in die Ansicht, in der normalweweise der Code abgebildet wird, integriert wird. Dadurch werden die Auswahlbereiche für Elemente sehr klein dargestellt. Trotzdem ist das ADT Plugin besonders bei der Oberflächengestaltung ein unverzichtbarer Helfer. Die Layoutvorschau mit allen Ihren Funktionen nimmt dem Entwickler sehr viel Arbeit ab und erlaubt es Ihm zu sehen, wie seine Arbeit hinterher aussehen könnte. Doch auch verschiedene Displaygrößen, Gerättypen, Themes und Ansichten bleiben hier nicht unberücksichtigt. Die Tatsache, dass Elemente die bereits platziert sind nicht mehr bewegt werden können, hinterlässt einen unfertigen Eindruck des Editors. Ferner fällt eine genaue Positionierung und Einsortierung in z.B. ein Tablelayout in der Layoutvorschau selber sehr schwer. Deswegen erleichtert der Oberflächeneditor die Arbeit zwar ungemein, erlaubt dem Entwickler aber nicht, keinen XML-Code selber schreiben zu müssen. In den XML-Dateien für die Layoutgestaltung bietet das ADT Plugin umfangreiche Codevervollstädigungs- und Fehlererkennungsmechanismen, was die Arbeit in den XML-Dateien stark erleichtert. 8.3 Konfiguration Die Konfigurationstools des ADT Plugins werden, wie die Tools der Oberflächengestaltung nur als View und nicht als Perspektive dargestellt, d.h. sie werden nur dort dargestellt, wo normalerweise der Code zu sehen ist. Die Konfigurationsansicht ist für das Android Manifest und die Ressourcendateien verfügbar. Diese Dateien liegen genau wie die Layout-Dateien im XML-Format vor. Es werden nicht die XML-Dateien angezeigt, sondern die Konfigurationsansicht mit einer Benutzeroberfläche, die dem Benutzer die evtl. unübersichtliche XML 8.2 Oberflächengestaltung 15 Eclipse_als_Entwicklungsumgebung_für_das_Android Konfiguration ersparen soll. Die Datei AndroidManifest.xml stellt die zentrale Konfigurationsdatei einer Anwendung dar. Ohne diese Konfigurationsdatei ist ein Kompilieren und Ausführen der Anwendung unmöglich. Unter anderem werden im Android Manifest alle Activity's deklariert, aus denen die Anwendung besteht. Mithilfe des ADT Plugins wird beim Anlegen eines neuen Projekts die Android Manifest Datei erzeugt, in der auch steht, welche Androidversion nötig ist, um die Anwendung auszuführen, welche im Wizard angegeben wurde. Die Konfigurationsansicht ist in verschiedenen Reitern logisch unterteilt worden. Diese Unterteilung erhöht die Übersichtlichkeit der Konfigurationsansicht stark. Neben einem Übersichtsreiter, welcher Einstellungen zum Android Manifest beinhaltet, erlaubt es auch die XML-Datei zu exportieren und hält weitere nützliche Links unter anderem zu der Online-Dokumentation bereit. Der Reiter "Application", in dem alle Komponenten der Anwendung sowie die Anwendungseinstellungen angelegt werden können, ist der wichtigste Reiter und bietet den größten Funktionsumfang. Um die Übersichtlichkeit bei großen Anwendungen zu verbessern, lassen sich Komponenten je nach Typ filtern. Problematisch ist jedoch, dass jede Komponente, (z.B. ein Filter) sehr viele Eigenschaften hat und selber weitere Attribute enthalten kann. Der Bereich zum Editieren dieser Eigenschaften ist relativ klein gehalten, da nicht die gesamte Fenstergröße genutzt wird. Dadurch muss viel gescrollt werden. Des Weiteren gibt es die Reiter "Permissions" und "Instrumentation". Im Reiter "Permissions" lassen sich Rechte für einzelne Pakete der Anwendung erstellen, wohingegen der Reiter "Instrumentation" das Anlegen von Instrumentations erlaubt. Diese werden genutzt um Tests und Überwachungsmechanismen zu implementieren. Die Konfigurationsansicht insgesamt bietet umfangreiche Hilfsstellungen bei der Konfiguration und Entwicklung einer Anwendung, wobei sie selbst an manchen Stellen ähnlich unübersichtlich ist wie die XML-Datei selber. Besonders aber bei großen Anwendungen spürt man den Vorteil einer grafischen Oberfläche besonders, da es ansonsten lange dauern kann, bis man eine bestimmte Stelle in der Datei gefunden hat. Interessant sind aber auch die umfangreiche Codevervollständigung und die Fehlerhinweise, die mit dem ADT Plugin auch in den XML-Dateien zur Verfügung stehen. Die Dokumentation der AndroidManifest.xml Datei ist sehr umfangreich und übersichtlich dank der hierarchischen Struktur, die der XML-Datei selber nachempfunden ist. 8.4 Debugging Eclipse bietet von Haus aus umfangreiche Debuggingmöglichkeiten. Zusammen mit den Tools des Android SDKs (Android Debug Bridge, DDMS, Traceview und Logcat werden die Möglichkeiten den Ablauf der Anwendung zu verfolgen erheblich erweitert. Das ADT Plugin integriert diese Tools des SDK in Eclipse, sodass man nicht direkt mit ihnen arbeitet, sondern Eclipse sie zum Bereitstellen von Debuggingmöglichkeiten verwendet. Um in Eclipse Android Anwendungen zu debuggen, setzt man an den entsprechenden Stellen im Quellcode Breakpoints. Wenn man die Anwendung nun im Debugmodus startet, wird beim Ausführen der Anwendung an den Breakpoints gestoppt und man kann in der gewohnten Eclipse Debug Perspektive die Anwendung durchgehen. Hier stehen die in Eclipse bekannten Views zu Threads, Variablen, Breakpoints und in zusätzlich der Log Cat aus den ADT Tools zur Verfügung. Diese Perspektive lässt sich mit weiteren Views der DDMS Perspektive aufwerten. Außerdem ist es auch möglich in die DDMS Perspektive zu wechseln. Zusätzlich zu den Debuggingmöglichkeiten in Eclipse werden auf allen Betriebssystemimages des SDKs, welche im Emulator verwendet werden, die Dev Tools installiert. Dies ist eine Android Anwendung, die das Debuggen auf dem Gerät vereinfacht. Interessant sind hier unter anderem die Option eine Anwendung zum Debuggen zu 8.3 Konfiguration 16 Eclipse_als_Entwicklungsumgebung_für_das_Android markieren. Dadurch wird unter anderem verhindert, dass Android Fehlermeldungen ausgibt, wenn zu lange an einem Breakpoint gewartet wird. Durch die vollständige Integration des Debugging in Eclipse ergeben sich für alle Java Entwickler, die in Eclipse arbeiten, keine weiteren Umstellungen für das Debugging. Durch das ADT Plugin ist dieses sehr gut in Eclipse integriert. 8.5 Signierung Android unterscheidet zwischen signierten und unsignierten Anwendungen. Unsignierte Programme können in keinem Android System ausgeführt werden, weder auf einem physischen Gerät noch in einem Emulator. Aus diesem Grund wird zwischen zwei verschiedenen Signierungsmodi unterschieden, dem debug mode und dem release mode[20]. Der Debug Mode wird vom ADT Plugin automatisch verwendet, wenn aus Eclipse Anwendungen im Emulator gestartet werden. Die Build Tools des ADT Plugins erstellen dann einen eigenen Key und signieren die .apk Datei die bei jedem Build erstellt wird. Der Release Mode wird benötigt, um die Anwendungen zu verbreiten. Dafür muss die Anwendung mit dem eigenen Private Key signiert werden. Hier gibt es zwei Möglichkeiten: • Kompilieren des Quellcodes zu einer unsignierten Anwendung, um diese dann mit dem Kommandozeilentools Keytool (zum Erstellen eines Private Keys) und Jarsigner zu signieren. • Exportieren der Anwendung mit dem Export Wizard von Eclipse. Dieser kompiliert und signiert die Anwendung in einem Prozess. Falls noch kein Private Key vorhanden ist, wird auch dieser noch erstellt. Das Zertifikat muss nicht von einer Zertifizierungstelle wie zum Beispiel VeriSign ausgestellt werden. Es ist erlaubt und auch normal, dass selbst generierte Zertifikate genutzt werden.[20] Nach der Signierung sollte das APK noch mit dem SDK Kommandozeilen Tool zipalign optimiert werden. Dies macht Eclipse beim Exportieren der Anwendung ebenfalls automatisch[21]. Ohne die Unterstützung von Eclipse wäre das Signieren von Anwendungen ein langer und umständlicher Prozess. Es müsste manuell ein privater Key erstellt werden, die Anwendung als Release kompiliert und signiert werden und schlussendlich das APK Package optimiert werden. Mit Eclipse geschieht dies als ein durchgängiger Prozess mit dem Export Wizard, der in die üblichen Eclipse Export Möglichkeiten eingebunden ist. 8.6 Veröffentlichung Die Veröffentlichung ist der letzte Schritt bei der Erstellung einer Anwendung. Nachdem die Anwendung ausreichend getestet und letztlich gepackt und signiert wurde, kann sie für Android Mobil Geräte bereitgestellt werden. Neben den in Signierung erwähnten Schritten zum Erstellen der .apk-Datei müssen bzw. sollten zusätzlich noch folgende Schritte erfolgen[22]: 1. Auf einem richtigen Gerät testen 2. EULA (End User License Agreement) hinzufügen 3. Icon und Label für die Anwendung festlegen 4. Logging und Debugging abschalten 8.4 Debugging 17 Eclipse_als_Entwicklungsumgebung_für_das_Android 5. Anwendung Versionieren 6. Kompilieren und Signieren In vielen Punkten wird man dabei von Eclipse unterstützt. Das Festlegen des Icons und Labels geschieht ebenso wie das Versionieren in einer XML Datei und wird so mit den beschriebenen Editoren unterstützt. Versionsnummer und Name werden dabei allerdings nicht automatisch festgelegt, sondern müssen vom Nutzer manuell gesetzt werden. Das Debugging kann ebenfalls in Eclipse deaktiviert werden. Beim Entfernen der Loggingaufrufe in den Quelltexten der Anwendung sind die umfangreichen Refactoring Möglichkeiten von Eclipse hilfreich. Die Unterstützung beim Kompilieren und Signieren wurde im vorhergehenden Abschnitt dargestellt. Zum Veröffentlichen der Anwendung bieten sich 2 Möglichkeiten. Zum einen der Android Market, der von jedem Android Mobilgerät direkt angesteuert werden kann und zum anderen über einen eigenen Web - Server mit einer URL. Der Android Market ist für eine weite Verbreitung sicherlich vorzuziehen, da er für jeden Benutzer einfach zu bedienen ist und das Programm automatisch in den Bestand aufgenommen wird. Eine Installation über eine URL ist für den Benutzer nur mit einer Konfigurationsänderung möglich. Für den Fall, dass es im Android Market eine Anwendung mit einer ähnlichen Funktionalität gibt, muss man natürlich versuchen, sich von diesem Programm abzuheben, da im Android Market Bewertungen durch Nutzer möglich sind. Für die Veröffentlichung im Android Market müssen folgende Vorraussetzungen getroffen werden. • Der Key, der zum Signieren verwendet wird, muss mindestens bis zum 22.10.2033 gültig sein. • Die Anwendung muss korrekt versioniert sein • Icon und Label müssen festgelegt sein Für diese Vorraussetzungen bietet Eclipse die oben genannten Unterstützungen. Für die eigentliche Veröffentlichung kann Eclipse nicht zur Hilfe gezogen werden. Allerdings beschränkt sich die Veröffentlichung auf das Hochladen der apk-Datei und der Eingabe einiger Metainformationen. Für die Registrierung als Developer fallen im Android Market einmalig Kosten von 25$ an. Für das Veröffentlichen der Anwendung entstehen dann keine weiteren Kosten. Da 2 / 3 aller Apps im Market kostenlos sind[23], ist es schwer kostenpflichtige Programme zu verkaufen. Ausgehend von einem Preis von einem 1$ für eine einfache Anwendung, bleiben 0,70$ für den Entwickler. Die anderen 30 % fließen an den Netzbetreiber.[24] So muss ein Entwickler von seinem Programm mindestens 36 Exemplare verkaufen, um den Break Even Punkt zu erreichen. Das ist sicherlich keine große Menge, allerdings ist es schwer 1$ Programme gegen kostenlose Anwendungen zu platzieren. Daher lohnen sich eher umfangreiche Anwendungen, welche einen Preis von 3$ und mehr rechtfertigen. 9 Bewertung Als Einheit betrachtet wird die Arbeit an einem Android Softwareprojekt durch das ADT Plugin fühlbar vereinfacht. Besonders deutlich wird dieser Vorteil bei der Arbeit mit den Wizards, da diese dem Entwickler am meisten Arbeit abnimmt. So bleibt es dem Entwickler z.B. erspart Verzeichnisse und Dateien anlegen zu müssen. Auch die Editoren vereinfachen die Arbeit, allerdings nicht im selben Umfang wie die Wizards. Ihre Stärke ist eher darin zu sehen, dem Entwickler eine verbesserte Ansicht zu bieten und ihm Hilfestellungen zu geben. Dies ist besonders für Neulinge auf dem Gebiet von Vorteil. Ein besonderes Augenmerk gilt dem Layout-Editor. Dieser vereinfacht nicht nur Aufgaben, sondern bietet dem Entwickler völlig neue Möglichkeiten zu entwickeln und schafft einen deutlichen Mehrwert. Wie bereits angemerkt fehlt ihm die Option platzierte Elemente in der Layout-Ansicht zu verschieben. Das Fehlen dieses Features ist besonders auffällig und verwunderlich. So muss 8.6 Veröffentlichung 18 Eclipse_als_Entwicklungsumgebung_für_das_Android der Entwickler vermehrt in die XML-Ansicht wechseln um Elemente zu verschieben. Der Funktionsumfang des ADT Plugins erstreckt sich über alle wichtigen Funktionalitäten. Es muss an einigen Stellen zwar nach wie vor auf die Kommandozeile zurückgegriffen werden, allerdings ist dies nur für spezielle Konfigurationen und nur in Ausnahmefällen nötig. Grundsätzlich ist festzuhalten, dass die grafische Benutzeroberfläche eingängig ist. Es fällt nicht schwer sich einzuarbeiten. Zugleich lässt sich klar erkennen, welche Buttons welche Funktion bieten o.ä. Lediglich die Übersichtlichkeit geht an manchen Stellen verloren. Besonders bei großen Projekten können die in das Hauptfenster integrierten Editoren etwas überfüllt wirken. Dies ist bei der DDMS Perspektive besser gelöst, wobei hier die Übersichtlichkeit auf Kosten der vollen Abdeckung des Funktionsumfangs des Emulators und der Überwachungsfunktionalitäten verloren geht. Dies ist aufgrund der unterschiedlichen Bereiche der Fall, da z.B. die Emulator-Control sachlogisch nichts mit dem Threadüberwachung zu tun hat. Auch die Editoren hätten besser in Eclipse integriert werden können, besonders um den vollen Platz des Bildschirms zu nutzen. An der Stabilität ist nichts auszusetzen. Es waren keinerlei Systemabstürze oder Inkonsistenzen zu beobachten. Die Ladedauer der DDMS-Perspektive o.ä. ist ebenfalls nicht auffällig. Insgesamt lässt sich also von einem sehr reifen und stabilen Plugin sprechen. 10 Fazit Festzuhalten ist, dass Google mit dem ADT Plugin eine gute und stabile Erweiterung für Eclipse bietet. Es vereinfacht in großem Maße die Entwicklung von Android Anwendungen. Besonders hervorzuheben ist, dass sowohl die Entwicklungsumgebung als auch das ganze SDK inklusive aller Tools und dem Plugin kostenfrei zur Verfügung steht, was ein besonderer Vorteil von Android gegenüber den Apple Produkten ist. Die Entwicklungsumgebung von Apple, XCode, ist dagegen propietär. Außerdem kostet im Gegensatz zu Android das iPhone SDK 99 USD jährlich[25]. Dadurch, dass Eclipse sehr verbreitet ist und viel Know How durch eine große Community vorhanden ist, ist eine Einarbeitungszeit für andere Entwickler eher gering. Hinzu kommt, dass Eclipse auf verschiedenen Plattformen lauffähig ist, wohingegen XCode nur auf dem Mac verfügbar ist. Ein weiterer großer Vorteil Androids ist, dass die Entwicklung in Java erfolgt und somit die Grundlagen der Programmiersprache von einer großen Anzahl von Programmierern beherrscht wird. Durch die Verwendung von Java ist Eclipse eine nachvollziehbare Wahl als unterstützte Entwicklungsumgebung. Bei anderen IDEs muss man immer wieder auf die mitgelieferten Kommandozeilenprogramme und Tools des SDK zurückgreifen. Das ADT Plugin wurde zuletzt Ende Mai aktualisiert und liegt nun in der Version 0.9.7 vor[26]. Seitdem wird auch das Testen mittels des Plugins vereinfacht. Auch in Zukunft ist davon auszugehen, dass die Android Plattform und im Zuge dessen auch das ADT Plugin stetig weiterentwickelt wird. Denkbar und hilfreich wäre zum Beispiel eine Unterstützung bei der Datenspeicherung, zum Beispiel in Form eines SQL Lite Explorers oder einfacher Nutzung von häufig gebrauchten Prozessen durch Bereitstellung von Code Templates in Eclipse. Das ADT Plugin und Eclipse schaffen eine wichtige Grundlage für eine wachsende Anzahl an Anwendungen für die Android Plattform und somit auch für eine steigende Verbreitung von Android als Betriebssystem für mobile Endgeräte. 9 Bewertung 19 Eclipse_als_Entwicklungsumgebung_für_das_Android 11 Literaturverzeichnis Monographien Becker et al. (2009) Künneth (2009) Louis (2009) Becker, Arno; Pant, Markus: Android - Grundlagen und Programmierung, 1. Auflage, dpunkt Verlag, Heidelberg 2009. Künneth, Thomas: Einstieg in Eclipse 3.5, 3. Auflage, Galileo Press, Bonn 2009 Louis, Dirk: C++: Programmieren mit einfachen Beispielen, 1. Auflage, Markt+Technik Verlag, München 2009 Internetquellen Androlib Apple Eclipse Foundation A Eclipse Foundation B Eclipse Foundation C Google A Google B Google C Google D Google E Google F Google G Google H Google I Google J Heise A Androlib (Hrsg.): Distribution of free and paid apps in Android Market, Androlib, Android Applications and G http://www.androlib.com/appstatsfreepaid.aspx (25.05.2010 20:12) . Apple Inc. (Hrsg.): Apple Developer Programs - Apple Developer, o. J.,http://developer.apple.com/programs/ 17:14) . Eclipse Foundation (Hrsg.): About the Eclipse Foundation, o. J., http://www.eclipse.org/org (09.05.2010 17:3 Eclipse Foundation (Hrsg.): Eclipse Downloads, o. J., http://www.eclipse.org/downloads/ (30.05.2010 17:56) Eclipse Foundation (Hrsg.): Eclipse Plugins, Bundles and Products - Eclipse Marketplace, o. J., http://marketplace.eclipse.org/ (11.05.2010 17:53) . Google Inc. (Hrsg.): ADT Plugin for Eclipse Android Developers, o. J.,http://developer.android.com/sdk/eclip (27.05.2010 17:16) . Google Inc. (Hrsg.): Android Debug Bridge Android Developers, o. J., http://developer.android.com/guide/developing/tools/adb.html (14.05.2010 12:13) . Google Inc. (Hrsg.): Android Emulator Android Developers, o. J., http://developer.android.com/guide/developing/tools/emulator.html (14.05.2010 10:56) . Google Inc. (Hrsg.): Android Virtual Devices Android Developers, o. J., http://developer.android.com/guide/developing/tools/avd.html (14.05.2010 13:53) . Google Inc. (Hrsg.): Dalvik Debug Monitor Android Developers, o. J., http://developer.android.com/guide/developing/tools/ddms.html (15.05.2010 13:08) . Google Inc. (Hrsg.): Preparing to Publish: A Checklist Android Developers, o. J.,http://developer.android.com/guide/publishing/preparing.html (24.05.2010 13:51) . Google Inc. (Hrsg.): Signing Your Applications Android Developers, o. J.,http://developer.android.com/guide/publishing/app-signing.html (23.05.2010 13:48) . Google Inc. (Hrsg.): Tools Overview Android Developers, o. J., http://developer.android.com/guide/developing/tools/index.html (14.05.2010 09:33) . Google Inc. (Hrsg.): What is Android? Android Developers, o. J., http://developer.android.com/guide/basics/what-is-android.html (12.05.2010 15:33) . Google Inc. (Hrsg.): zipalign Android Developers, o. J.,http://developer.android.com/guide/developing/tools/z (23.05.2010 14:31) . Heise Zeitschriftenverlag (Hrsg.): heise mobil - Google stellt Android 2.2 vor, 20.05.2010 , http://www.heise.de/mobil/meldung/Google-stellt-Android-2-2-vor-1004819.html (24.05.2010 10:24) . 11 Literaturverzeichnis 20 Eclipse_als_Entwicklungsumgebung_für_das_Android Heise Zeitschriftenverlag (Hrsg.): heise mobil - Twitter bringt offizielle Android-App, 02.05.2010 , http://www.heise.de/mobil/meldung/Twitter-bringt-offizielle-Android-App-991420.html (15.05.2010 12:19) . Ralf Kaumanns: iPhone App Store vs. Android Market ? Welchem Ansatz gehört die Zukunft? — google-oek Kaumanns 11.01.2010 , (2010) http://www.google-oekonomie.de/iphone-app-store-vs-android-market-%E2%80%93-welchem-ansatz-gehort (25.05.2010 21:40) . The NPD The NPD Group, Inc. (Hrsg.): Android Shakes Up U.S. Smartphone Market, 10.05.2010, Group http://www.npd.com/press/releases/press_100510.html (16.05.2010 12:18) . Heise B 12 Fußnoten 1. ? vgl. Eclipse Foundation B 2. ? 2,0 2,1 vgl. Google H 3. ? vgl. The NPD Group 4. ? siehe http://www.android.com/market/ 5. ? vgl. Heise B 6. ? vgl. Louis (2009), S. 49 7. ? vgl. Eclipse Foundation A 8. ? siehe http://wiki.eclipse.org/index.php/Rich_Client_Platform 9. ? vgl. Eclipse Foundation C 10. ? vgl. Künneth (2009), S. 14 11. ? vgl. Heise A 12. ? vgl. Google I 13. ? vgl. Becker et al. (2009), S. 34 14. ? vgl. Becker et al. (2009), S. 16 15. ? vgl. Becker et al. (2009), S. 282 ff 16. ? vgl. Google E 17. ? vgl. Google B 18. ? vgl. Google C 19. ? vgl. Google D 20. ? 20,0 20,1 vgl. Google G 21. ? vgl. Google J 22. ? vgl. Google F 23. ? vgl. Androlib 24. ? vgl. Kaumanns (2010) 25. ? vgl. Apple 26. ? vgl. Google A 12 Fußnoten 21