Android-Softwareentwicklung

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Der Android-Stack[1]
Das Nexus 4, Teil der Google Nexus-Serie, eine Reihe von "entwicklerfreundlichen" Geräten[2]

Android-Softwareentwicklung ist der Prozess, durch den Mobile Apps für Geräte mit dem Betriebssystem Android erstellt werden. Unter Verwendung des Android Software Development Kit (SDK) können Android-Apps mit den Programmiersprachen Kotlin, Java und C++ geschrieben werden.[3] Das Android Native Development Kit (NDK) erlaubt darüber hinaus, Teile der Apps in nativem Code mit Sprachen wie C oder C++ zu implementieren.[4] Einige Sprachen bzw. Programmiertools ermöglichen plattformübergreifende App-Unterstützung. Drittanbieter-Tools, Entwicklungsumgebungen und Sprachunterstützung haben sich seit der Veröffentlichung des ersten SDK im Jahr 2008 ebenfalls weiterentwickelt.

Offizielle Entwicklungswerkzeuge[Bearbeiten | Quelltext bearbeiten]

Android SDK[Bearbeiten | Quelltext bearbeiten]

Android SDK
Basisdaten

Entwickler Google
Erscheinungsjahr Oktober 2009
Aktuelle Version 26.1.1 / September 2017[5]
Betriebssystem plattformunabhängig
Programmiersprache Java
Kategorie SDK
Lizenz Android Open Source Project
developer.android.com/sdk

Das Android Software Development Kit (SDK) umfasst zahlreiche Entwicklungswerkzeuge.[6] Dazu gehören ein Debugger, Bibliotheken, ein Smartphone-Emulator auf Basis von QEMU, eine Dokumentation, Beispielcode sowie Tutorials. Derzeit unterstützte Entwicklungsplattformen sind Computer mit einer modernen GNU/Linux-Distribution, macOS (mindestens 10.10), Windows (mindestens 7) und Chrome OS.[7] Seit März 2015 ist das SDK nicht mehr auf Android selbst verfügbar, aber die Softwareentwicklung ist mit speziellen Android-Anwendungen möglich.[8][9][10]

Bis etwa Ende 2014 war die offiziell unterstützte integrierte Entwicklungsumgebung (IDE) Eclipse mit den Android Development Tools (ADT). Seit 2015 ist Googles Android Studio, das auf IntelliJ IDEA Community Edition basiert, die offizielle IDE.[11][12] Entwickler können auch andere IDEs verwenden, wobei ADT seit Ende 2015 offiziell als veraltet gilt und nicht mehr weiterentwickelt wird, um sich auf Android Studio als offizielle Android-IDE zu konzentrieren. So unterstützt beispielsweise NetBeans die Android-Entwicklung über ein Plugin.[13] Darüber hinaus können Entwickler jeden beliebigen Texteditor verwenden, um Java- und XML-Dateien zu bearbeiten. Anschließend können mithilfe von Kommandozeilen-Werkzeugen (Java Development Kit und Apache Ant sind erforderlich) Android-Anwendungen entwickelt, erzeugt und debuggt sowie verbundene Android-Geräte gesteuert (z. B. Auslösen eines Neustarts, Remote-Installation von Softwarepaketen) werden.[14][15]

Verbesserungen des Android SDK gehen Hand in Hand mit der Entwicklung der gesamten Android-Plattform. Das SDK unterstützt auch ältere Versionen der Android-Plattform, falls Entwickler ihre Anwendungen auf ältere Geräte ausrichten möchten. Entwicklungswerkzeuge sind dabei herunterladbare Komponenten, sodass nach dem Herunterladen der neuesten Version und Plattform auch ältere Plattformen und Tools für Kompatibilitätstests heruntergeladen werden können.[16]

Android-Anwendungen sind im .apk-Format verpackt und im Android-Betriebssystem hauptsächlich im Ordner /data/app gespeichert (der Ordner ist aus Sicherheitsgründen nur für den Root-Benutzer zugänglich).[17]

Android SDK Platform Tools[Bearbeiten | Quelltext bearbeiten]

Die Android SDK Platform Tools sind eine separat herunterladbare Teilmenge des vollständigen SDKs, bestehend aus Kommandozeilen-Tools wie ADB und Fastboot.[18]

Android Debug Bridge (ADB)[Bearbeiten | Quelltext bearbeiten]

Die Android Debug Bridge (ADB) ist ein Werkzeug, um Befehle auf einem angeschlossenen Android-Gerät auszuführen. Der adbd-Daemon läuft auf dem Gerät, während der adb-Client einen Hintergrundserver startet, um Befehle, die an Geräte gesendet werden, zu bündeln.[19] Neben der Kommandozeile gibt es zahlreiche grafische Benutzeroberflächen zur Steuerung von ADB.

Das Format für die Ausführung von Befehlen ist typischerweise:[19]

adb [-d|-e|-s <Seriennummer>] <Befehl>
dabei -d zur Weiterleitung des Befehls an das einzige angeschlossene USB-Gerät,
      -e zur Weiterleitung des Befehls an den einzigen laufenden Android-Emulator,
      -s <Seriennummer> zur Angabe des USB-Geräts durch seine eindeutige Seriennummer.
Wenn es nur ein angeschlossenes Gerät oder einen laufenden Emulator gibt, sind diese Optionen nicht erforderlich.

Android-Anwendungen können mit dem Befehl backup in eine Datei gespeichert werden, deren Name standardmäßig backup.ab lautet.[20]

Fastboot[Bearbeiten | Quelltext bearbeiten]

Fastboot ist ein Protokoll, das im SDK-Paket enthalten ist und in erster Linie dazu dient, das Flash-Dateisystem über eine USB-Verbindung vom Host-Computer aus zu modifizieren, um beispielsweise ein Custom-Recovery-System zu installieren.[21] Es erfordert, dass das Gerät in einem Bootloader- oder Secondary-Program-Loader-Modus gestartet wird, in dem nur die grundlegendste Hardware-Initialisierung stattfindet. Nachdem das Protokoll auf dem Gerät selbst aktiviert worden ist, akzeptiert es einen bestimmten Satz von Befehlen, die per USB über eine Befehlszeile an das Gerät gesendet werden. Zu den am häufigsten verwendeten Fastboot-Befehlen zählen:[22][23]

  • flash – beschreibt eine Partition mit einem binären Image, das auf dem Host-Computer gespeichert ist, neu
  • erase – löscht eine bestimmte Partition
  • reboot – startet das Gerät entweder in das Hauptbetriebssystem, die Systemwiederherstellungspartition oder zurück in den Bootloader
  • devices – zeigt eine Liste aller mit dem Hostcomputer verbundenen Geräte (mit der Seriennummer) an
  • format – formatiert eine bestimmte Partition; das Dateisystem der Partition muss vom Gerät erkannt werden

Android NDK[Bearbeiten | Quelltext bearbeiten]

Android NDK
Basisdaten

Entwickler Google
Erscheinungsjahr Juni 2009[24]
Aktuelle Version r20 / Juni 2019[24]
Betriebssystem IA-32 (nur Windows) oder x86-64 (Windows, macOS und Linux)[25]
Programmiersprache C und C++
Kategorie SDK
Lizenz Android Open Source Project
developer.android.com/ndk

In C/C++ geschriebener Code kann mit dem Android Native Development Kit (NDK) in ARM- oder x86-Maschinencode (oder dessen 64-Bit-Varianten) kompiliert werden. Das NDK verwendet dabei den Clang-Compiler, um C/C++ zu kompilieren. GCC war bis zum NDK r17 ebenfalls enthalten, wurde jedoch 2018 im NDK r18 wieder entfernt.[26][27][28]

Native Bibliotheken können mit System.loadLibrary, einem Teil der Standard-Android-Java-Klassen, aus Java-Code, der unter der Android Runtime läuft, aufgerufen werden.[29][30]

Kommandozeilen-Werkzeuge können mit dem NDK kompiliert und mithilfe von ADB installiert werden.[31]

Android verwendet Bionic als C-Standardbibliothek und LLVM libc++ als C++-Standardbibliothek. Das NDK enthält auch eine Vielzahl anderer APIs:[32] Zlib-Komprimierung, OpenGL ES oder Vulkan-Grafik und OpenSL ES-Audio sowie verschiedene Android-spezifische APIs, beispielsweise für Logging, Zugriff auf Kameras oder Beschleunigung neuronaler Netzwerke.

Das NDK bietet Unterstützung für CMake und ein eigenes ndk-build (basierend auf GNU Make). Android Studio unterstützt die Ausführung beider Werkzeuge von Gradle aus. Tools von Drittanbietern ermöglichen die Integration des NDK in Eclipse[33] und Visual Studio.[34]

Für das CPU-Profiling beinhaltet das NDK auch simpleperf, das dem Linux Perf-Tool ähnlich ist, aber eine bessere Unterstützung für Android und speziell für gemischte Java/C++-Stacks bietet.[35]

Android Open Accessory Development Kit[Bearbeiten | Quelltext bearbeiten]

Unter Android 3.1 (ebenfalls rückportiert zu Android 2.3.4) wurde die Android Open Accessory-Unterstützung eingeführt, die es externer USB-Hardware ermöglicht, in einem speziellen „Zubehör“-Modus mit einem Android-Gerät zu interagieren. Wenn sich ein Android-Gerät im Zubehör-Modus befindet, fungiert das angeschlossene Zubehör als USB-Host (versorgt den Bus und registriert Geräte) und das Android-Gerät als USB-Gerät. Android USB-Zubehör ist speziell für den Anschluss an Android-Geräte entwickelt worden und hält sich an ein einfaches Protokoll (Android Accessory Protocol), das es ermöglicht, Android-Geräte zu erkennen, die den Zubehör-Modus unterstützen.[36]

Externe Hardware-Entwicklung[Bearbeiten | Quelltext bearbeiten]

Entwicklungswerkzeuge, die einem Android-Gerät helfen sollen, mit externer Elektronik zu interagieren, sind u. a. IOIO, das Android Open Accessory Development Kit, Microbridge und Triggertrap.

Drittanbieter-Entwicklungswerkzeuge[Bearbeiten | Quelltext bearbeiten]

AIDE[Bearbeiten | Quelltext bearbeiten]

AIDE ist eine Android-App, die die Android-Appentwicklung direkt auf dem Smartphone ermöglicht. Sie kompiliert und installiert die erstellte App auf dem Gerät.[37]

Android::Build[Bearbeiten | Quelltext bearbeiten]

Android::Build ist ein Perl-Modul, das es ermöglicht, eine Android APK-Datei nur mit den grundlegenden Kommandozeilenwerkzeugen zu erstellen: aapt, dx, javac, jarsigner und zipalign, ohne sich auf Apache Ant oder Gradle zu stützen. Diese reduzierte Menge an Abhängigkeiten vereinfacht Rolling-Release-Systeme, die auf vollautomatische Generierung und Testing von Remote-Anwendungen angewiesen sind.[38]

App Inventor for Android[Bearbeiten | Quelltext bearbeiten]

Am 12. Juli 2010 gab Google die Verfügbarkeit des App Inventors für Android bekannt, einer webbasierten visuellen Entwicklungsumgebung für Programmieranfänger, die auf der Open-Blocks-Java-Bibliothek des MIT basiert und Zugriff auf GPS-, Beschleunigungs- und Orientierungsdaten, Telefonfunktionen, Textnachrichten, Sprache-zu-Text-Konvertierung, Kontaktdaten, Speicher und Webdienste, zunächst auch Amazon und Twitter, bietet.[39] Laut Hal Abelson, dem Projektleiter am MIT, konnte diese App nur aufgrund der Offenheit der Android-Architektur entwickelt werden.[40] Das Tool wurde Nicht-Master-Studenten in Informatik in den Universitäten Harvard, MIT, Wellesley, Trinity College (Hartford) und an der University of San Francisco unterrichtet, wo Professor David Wolber einen einführenden Informatikkurs und ein Tutorialbuch für Nicht-Informatikstudenten auf Basis des App Inventors für Android entwickelt hat.[41][42]

In der zweiten Jahreshälfte von 2011 veröffentlichte Google den Quellcode, beendete seinen Webservice und finanzierte die Einrichtung des MIT Center for Mobile Learning unter der Leitung des App-Inventor-Schöpfers Hal Abelson sowie seiner MIT-Kollegen Eric Klopfer und Mitchel Resnick.[43] Die aktuelle Version, die aus Googles Zusammenarbeit mit dem MIT hervorgegangen ist, wurde im Februar 2012 veröffentlicht. Die erste Version, die ausschließlich vom MIT erstellt wurde, wurde im März 2012[44] veröffentlicht und im Dezember 2013 auf den App Inventor 2 aktualisiert.[45] Seit 2014 wird der App Inventor vom MIT weiterentwickelt.

B4X[Bearbeiten | Quelltext bearbeiten]

B4X ist ein kommerzielles Tool, welches von Microsoft Visual Basic 6 und Microsoft Visual Studio inspiriert ist. Es macht die Android-Entwicklung für Visual-Basic-Programmierer, die die Programmierung in Java schwierig finden, einfacher.[46]

Coreliu[Bearbeiten | Quelltext bearbeiten]

Coreliu ermöglicht es Laien, immersive Lernanwendungen zu schreiben, die nativ auf Android-Geräten laufen.[47] App-Autoren verwenden eine Datei in einem GitHub-Repository, um die Bilder und Texte zu beschreiben, die in der App verwendet werden sollen. Die Sprachausgabe wird aus dem Text über Amazon Web Services Polly generiert. Coreliu verpackt die Fotos und die generierte Sprachausgabe in eine Android APK-Datei, die der Autor mit einer Creative-Commons-Lizenz frei verteilen kann.

Solar2D[Bearbeiten | Quelltext bearbeiten]

Solar2D (bis 2020 Corona SDK) ist ein Software Development Kit (SDK), das von Walter Luh, dem Gründer von Corona Labs Inc., entwickelt wurde. Solar2D ermöglicht es Softwareentwicklern, mobile Anwendungen für iPhones, iPads und Android-Geräte zu erstellen.[48]

Das SDK ermöglicht, grafische Anwendungen mithilfe der integrierten Lua-Sprache zu erstellen, die auf C++/OpenGL aufgesetzt ist. Seit 2020 wird die Software unter der MIT-Lizenz vertrieben.

Delphi[Bearbeiten | Quelltext bearbeiten]

Delphi kann auch für die Erstellung von Android-Anwendungen in der Sprache Object Pascal verwendet werden. Die aktuelle Version ist Delphi 10.3.2 Rio, entwickelt von Embarcadero.[49] Die Benutzeroberflächen werden mit dem plattformunabhängigen GUI-Framework Firemonkey entwickelt. Zusätzlich stehen nicht-visuelle Komponenten zur Interaktion mit den verschiedenen Sensoren (Kamera, Gyroskop, GPS, Bluetooth etc.) zur Verfügung. Auch andere Dienste wie der Zugriff auf bestimmte Tastaturereignisse sind plattformunabhängig über Schnittstellen verfügbar. Der Compiler basiert auf der LLVM-Architektur und Debugging aus der IDE ist möglich. Die generierten Apps basieren auf dem NDK, aber im Gegensatz zu Xamarin wird die Runtime in die Anwendung selbst kompiliert. Über eine Java Bridge lassen sich auch fast beliebige Android APIs einbinden und jar-Dateien mit Java-Code können auch eingebunden werden.

DroidScript[Bearbeiten | Quelltext bearbeiten]

DroidScript ist ein Tool zum Rapid Application Development nativer Android-Anwendungen mit JavaScript. Dieses Tool kann direkt auf dem mobilen Gerät oder über eine browserbasierte IDE verwendet werden, die über WLAN mit dem Gerät verbunden ist. Es verwendet Googles V8-JavaScript-Engine.[50]

Golang[Bearbeiten | Quelltext bearbeiten]

Seit Version 1.4 der Programmiersprache Go wird das Schreiben von Anwendungen für Android unterstützt. Mit Version 1.7 und mithilfe des gomobile-Tools (d. h. gomobile build) wird die Kompilierung zu Android -APKs und iOS-Apps von der gleichen Go-Codebasis unterstützt. Streng genommen wird Java/JVM-Code (Objective-C-Code im Falle von iOS) immer benötigt, aber das gomobile-Tool bietet den minimal benötigten JVM-Code. Die Go-Unterstützung ist auf die verwendbaren Go-Typen und (derzeit) auf eine begrenzte Anzahl von Android-APIs beschränkt (z. B. werden OpenAL- und OpenGL ES 2-Bindungen bereitgestellt, die zur Erstellung von 2D/3D-Spielen, beispielsweise eines der angegebenen Beispiele[51] für Android oder iOS oder anderer Grafikanwendungen, verwendet werden können).[52]

HyperNext Android Creator[Bearbeiten | Quelltext bearbeiten]

Der HyperNext Android Creator (HAC) ist ein Softwareentwicklungssystem für Anfänger, das jenen dabei helfen kann, eigene Android-Anwendungen zu erstellen, ohne Java und das Android SDK zu kennen.[53] Es basiert auf HyperCard, welches Software wie einen Kartenstapel behandelt, wobei immer nur eine Karte sichtbar ist. Daher eignet es sich gut für Smartphoneanwendungen, bei denen jeweils nur ein Fenster sichtbar ist. Die Hauptprogrammiersprache des HyperNext Android Creators heißt HyperNext und basiert weitgehend auf der HyperTalk-Sprache von Hypercard. HyperNext ist eine interpretierte englisch-ähnliche Sprache und verfügt über viele Funktionen, die die Erstellung von Android-Anwendungen ermöglichen. Es unterstützt eine wachsende Teilmenge des Android SDK, einschließlich eigener Versionen der GUI-Steuerungstypen, und führt automatisch einen eigenen Hintergrunddienst aus, sodass Apps im Hintergrund weiterhin laufen und Informationen verarbeiten können.

Kivy[Bearbeiten | Quelltext bearbeiten]

Kivy ist eine Open-Source-Python-Bibliothek zur Entwicklung von Multitouch-Anwendungssoftware mit einer natürlichen Benutzeroberfläche (NUI) für eine große Auswahl an Geräten.[54] Kivy bietet die Möglichkeit, eine einzige Anwendung für zahlreiche Betriebssysteme zu pflegen („Code once, run everywhere“). Die Bibliothek verfügt über ein speziell entwickeltes Tool für die Implementierung mobiler Anwendungen namens Bulldozer, das nur für Linux verfügbar ist. Bulldozer ist derzeit Alpha-Software, ist aber weit weniger umständlich als ältere Kivy-Implementierungsmethoden. Mit Kivy programmierte Anwendungen können auf jeder mobilen Android-App-Distributionsplattform eingereicht werden.

Lazarus[Bearbeiten | Quelltext bearbeiten]

Die Lazarus IDE kann verwendet werden, um Android-Anwendungen mit Object Pascal (und anderen Pascal-Dialekten) zu entwickeln, basierend auf dem Free-Pascal-Compiler ab Version 2.7.1.[55]

Processing[Bearbeiten | Quelltext bearbeiten]

Die Processing-Umgebung unterstützt seit der Version 1.5 einen Android-Modus.[56] Die Integration mit Kamera und Sensoren ist über die Ketai-Bibliothek möglich.[57]

Qt for Android[Bearbeiten | Quelltext bearbeiten]

Qt for Android ermöglicht es, Qt 5-Anwendungen auf Geräten mit Android 2.3.3 (API Level 10) oder höher auszuführen.[58] Qt ist ein plattformunabhängiges Anwendungs-Framework, das Plattformen wie Android, Linux, iOS, Sailfish OS und Windows unterstützt. Die Entwicklung von Qt-Anwendungen erfolgt in Standard-C++ und QML, was sowohl das Android NDK als auch das Android SDK voraussetzt.[59] Der Qt Creator ist eine IDE, die mit dem Qt-Framework für die plattformunabhängige Anwendungsentwicklung bereitgestellt wird.

RubyMotion[Bearbeiten | Quelltext bearbeiten]

RubyMotion ist eine Werkzeugkette, um native mobile Anwendungen in Ruby zu schreiben. Ab Version 3.0 unterstützt RubyMotion Android. RubyMotion-Android-Apps können alle Java-Android-APIs von Ruby aus aufrufen, Java-Bibliotheken von Drittanbietern verwenden und werden statisch in Maschinencode kompiliert.[60]

SDL[Bearbeiten | Quelltext bearbeiten]

Die SDL-Bibliothek bietet neben Java auch eine Entwicklungsmöglichkeit, die die Entwicklung mit C und die einfache Portierung bestehender SDL- und nativer C-Anwendungen ermöglicht. Durch die Injektion eines kleinen Java-Shims und JNI ist die Verwendung von nativem SDL-Code möglich[61], der Android-Ports wie z. B. das Jagged Alliance 2-Videospiel ermöglicht.

Visual Studio Emulator for Android[Bearbeiten | Quelltext bearbeiten]

Microsoft lieferte 2015 einen kostenlosen eigenständigen Emulator für Android, genannt Visual Studio Emulator for Android.[62] Der Emulator unterstützt die Installation von Google Play über eine Drag-and-Drop-Schnittstelle.[63] Es kann in Verbindung mit Visual Studio verwendet werden, das plattformübergreifende Entwicklung unterstützt, sodass C++-Entwickler Projekte aus Vorlagen für native Android-Activity-Anwendungen oder leistungsstarke dynamische Bibliotheken erstellen können, die in andere Lösungen integriert werden können. Zu den Funktionen gehören plattformspezifisches IntelliSense, Breakpoints, Gerätebereitstellung und Emulation.[64]

Xamarin[Bearbeiten | Quelltext bearbeiten]

Mit einer gemeinsamen C#-Codebasis können Entwickler mit Xamarin native iOS-, Android- und Windows-Anwendungen mit nativen Benutzeroberflächen schreiben und den Code plattformübergreifend austauschen.[65]

Android Developer Challenge[Bearbeiten | Quelltext bearbeiten]

Die Android Developer Challenge (ADC) war ein Wettbewerb in zwei Teilen (ADC I und ADC II), um die innovativste Anwendung für Android zu finden. Google bot Preise in einer Gesamthöhe von 10 Millionen US-Dollar an, die zwischen der ADC I und der ADC II verteilt wurden. Die ADC I akzeptierte Einreichungen vom 2. Januar bis zum 14. April 2008. Die 50 vielversprechendsten Einsendungen, die am 12. Mai 2008 angekündigt wurden, erhielten jeweils eine Auszeichnung in Höhe von 25.000 US-Dollar für die weitere Entwicklung.[66][67] Die ADC I endete Anfang September mit der Ankündigung von zehn Teams, die jeweils 275.000 US-Dollar erhielten, und zehn Teams, die jeweils 100.000 Dollar erhielten.[68]

Die ADC II wurde am 27. Mai 2009 angekündigt.[69] Die erste Runde der ADC II endete am 6. Oktober 2009.[70] Die Gewinner der ersten Runde der ADC II mit den 200 besten Anwendungen wurden am 5. November 2009 bekannt gegeben. Die Abstimmung für die zweite Runde begann ebenfalls am selben Tag und endete am 25. November. Google gab am 30. November die Top-Gewinner der ADC II bekannt, wobei SweetDreams, What the Doodle!? und WaveSecure zu den Gesamtsiegern des Wettbewerbs gekürt wurden.[71]

Community-basierte Distributionen[Bearbeiten | Quelltext bearbeiten]

Es gibt eine Community von Open-Source-Nutzern, die Android-basierte Distributionen (d. h. Firmware) mit einer Reihe von Anpassungen und zusätzlichen Funktionen versehen, z. B. FLAC oder die Möglichkeit einfügen, heruntergeladene Anwendungen auf der SD-Karte zu speichern.[72] Dazu gehört oftmals das Rooten des Geräts. Rooting ermöglicht Benutzern den Root-Zugriff auf das Betriebssystem und somit die volle Kontrolle über das Gerät. Rooting hat auch mehrere Nachteile, darunter die Möglichkeit eines Bricks, Verlust der Garantie, erhöhtes Angriffsrisiko etc.[73] Benutzerdefinierte Firmware ermöglicht es zudem Benutzern älterer Smartphones, neuere Android-Versionen zu verwenden, die vom Hersteller nicht mehr offiziell angeboten werden.

Diese Firmware-Pakete werden häufig aktualisiert, enthalten Elemente der Android-Funktionalität, die noch nicht in der offiziellen Firmware des Herstellers freigegeben wurden und tendenziell weniger Einschränkungen aufweisen. LineageOS ist ein Beispiel für solch eine Custom-ROM.

Am 24. September 2009 gab Google ein Unterlassungsschreiben an den Modder Cyanogen heraus[74], in dem er auf Probleme bei der Weiterverteilung von Googles Closed-Source-Anwendungen innerhalb der Custom-ROM CyanogenMod hingewiesen wurde.[75] Obwohl der Großteil des Android-Systems Open Source ist, werden viele Geräte mit Closed-Source-Google-Anwendungen für Funktionen wie Google Play und GPS-Navigation ausgeliefert. Google hat erklärt, dass diese Anwendungen nur über zugelassene Vertriebskanäle von lizenzierten Händlern bereitgestellt werden können. Cyanogen ist der Forderung Googles nachgekommen und vertreibt die Custom-ROM ohne die proprietäre Software weiter. Gleichzeitig wurde eine Methode bereitgestellt, um Google-Anwendungen während des Installationsprozesses der Mod zu sichern und sie wiederherzustellen, wenn der Prozess abgeschlossen ist.[76]

Java-Standards[Bearbeiten | Quelltext bearbeiten]

Zu den Entwicklungshindernissen zählt unter anderem die Tatsache, dass Android keine etablierten Java-Standards, also Java SE und ME, verwendet. Dies verhindert die Kompatibilität zwischen Java-Anwendungen, die für jene Plattformen geschrieben wurden, und solchen, die für die Android-Plattform geschrieben wurden. Android verwendet die Syntax und Semantik der Java-Sprache, bietet aber nicht die vollständigen Klassenbibliotheken und APIs, die in Java SE oder ME zur Verfügung stehen.[77] Es gibt jedoch mehrere Tools von Unternehmen wie der Myriad Group und UpOnTek, die Konvertierungsdienste von Java ME zu Android anbieten.[78][79]

Android stellt seine eigenen GUI-Klassen zur Verfügung und ermöglicht keine Entwicklung mithilfe von Java AWT, Swing oder JavaFX. Es unterstützt nicht die vollständige Java-Beans-API.

Historie und Marktanteil[Bearbeiten | Quelltext bearbeiten]

Android wurde von der Open Handset Alliance gegründet, die von Google geleitet wird.[80] Das frühe Feedback zur Entwicklung von Anwendungen für die Android-Plattform war gemischt. Zu den genannten Problemen gehörten Fehler, fehlende Dokumentation, eine unzureichende QS-Infrastruktur und kein öffentliches Issue-Tracking-System (Google kündigte am 18. Januar 2008 einen Issue-Tracker an).[81] Im Dezember 2007 erklärte Adam MacBeth, Gründer des Start-up-Unternehmens MergeLab: „Die Funktionalität ist nicht vorhanden, ist schlecht dokumentiert oder funktioniert einfach nicht ...“[82] Dennoch begannen in der Woche nach der Bekanntgabe der Plattform Android-orientierte Anwendungen zu erscheinen. Die erste öffentlich zugängliche Anwendung war das Snake-Spiel.[83][84]

Eine Vorschauversion des Android SDK wurde am 12. November 2007 veröffentlicht. Am 15. Juli 2008 schickte das Android-Developer-Challenge-Team versehentlich eine E-Mail an alle Teilnehmer der Android Developer Challenge, in der es ankündigte, dass eine neue Version des SDK in einem „privaten“ Downloadbereich verfügbar sei. Die E-Mail war für die Gewinner der ersten Runde der Android Developer Challenge bestimmt. Die Offenbarung, dass Google nur einigen Entwicklern neue SDK-Versionen zur Verfügung stellte (und diese Vereinbarung privat hielt), führte zu einer weit verbreiteten Frustration innerhalb der damaligen Android-Entwicklergemeinschaft.[85]

Am 18. August 2008 wurde die Android 0.9 SDK-Beta veröffentlicht. Diese Version bot eine aktualisierte und erweiterte API, verbesserte Entwicklungswerkzeuge und ein aktualisiertes Design für den Startbildschirm. Detaillierte Anweisungen für das Upgrade waren für diejenigen verfügbar, die bereits mit einem früheren Release arbeiteten.[86] Am 23. September 2008 wurde das Android 1.0 SDK (Release 1) veröffentlicht.[87] Laut den Versionshinweisen enthielt es „hauptsächlich Bugfixes, wobei einige kleinere Features hinzugefügt wurden“. Es enthielt auch einige API-Änderungen gegenüber der Version 0.9. Seit der Entwicklung des Android SDKs wurden mehrere Versionen veröffentlicht.

Am 5. Dezember 2008 kündigte Google das erste Android Dev Phone an, ein Gerät ohne SIM-Lock und ohne Hardware-Lock, das für fortgeschrittene Entwickler entwickelt wurde. Es war eine modifizierte Version des HTC Dream-Geräts. Während Entwickler normale Endgeräte zum Testen und Verwenden ihrer Anwendungen verwenden können, können einige Entwickler ein speziell dafür vorgesehenes freigeschaltetes oder vertragsfreies Gerät wählen.[88]

Bis Juli 2013 wurden mehr als eine Million Android-Anwendungen mit über 25 Milliarden Downloads entwickelt.[89][90][91] Eine Studie vom Juni 2011 ergab, dass zum Zeitpunkt der Veröffentlichung über 67 % der mobilen Entwickler die Plattform nutzten.[92] Im Jahr 2018 erreichten Android-Smartphones mit mehr als 1,2 Milliarden Geräten einen Marktanteil von mehr als 85 %.[93]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Literatur[Bearbeiten | Quelltext bearbeiten]


 Wikibooks: Android (englisch) – Lern- und Lehrmaterialien

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Set up for Android Development. Abgerufen am 11. Juli 2019 (englisch).
  2. Syed H: Editorial: Why You Should Go Nexus. In: Droid Lessons. 24. September 2012, abgerufen am 11. Juli 2019 (amerikanisches Englisch).
  3. Application Fundamentals. Abgerufen am 11. Juli 2019 (englisch).
  4. Android NDK. Abgerufen am 3. Juli 2019 (englisch).
  5. SDK Tools release notes. Abgerufen am 3. Juli 2019 (englisch).
  6. Command line tools | Android Developers. Abgerufen am 11. Juli 2019 (englisch).
  7. Download Android Studio and SDK tools. Abgerufen am 3. Juli 2019 (englisch).
  8. AIDE- IDE for Android Java C++ – Apps bei Google Play. Abgerufen am 3. Juli 2019.
  9. Java Editor – Apps bei Google Play. Abgerufen am 3. Juli 2019.
  10. Tanapro JavaIDEdroid – Apps bei Google Play. Abgerufen am 3. Juli 2019.
  11. heise online: Android Studio ist nun offizielle Android-Entwicklungsumgebung. Abgerufen am 11. Juli 2019.
  12. An update on Eclipse Android Developer Tools. In: Android Developers Blog. Abgerufen am 11. Juli 2019 (englisch).
  13. NBAndroid - NetBeans Plugin detail. Abgerufen am 11. Juli 2019 (englisch).
  14. Backup & Restore Android Apps Using ADB. In: JonWestfall.com. 25. August 2009, abgerufen am 3. Juli 2019 (amerikanisches Englisch).
  15. AIDE- IDE for Android Java C++ – Apps bei Google Play. Abgerufen am 3. Juli 2019.
  16. SDK Tools release notes | Android Developers. Abgerufen am 3. Juli 2019 (englisch).
  17. Where does Android store apps on my device? Abgerufen am 11. Juli 2019 (englisch).
  18. SDK Platform Tools release notes. Abgerufen am 11. Juli 2019 (englisch).
  19. a b Android Debug Bridge (adb). Abgerufen am 11. Juli 2019 (englisch).
  20. Jack Wallen in Mobility on March 6, 2015, 4:51 Am Pst: How to create a full backup of your Android device without root. Abgerufen am 11. Juli 2019 (englisch).
  21. fastboot/README.md. Abgerufen am 11. Juli 2019.
  22. Eric Ravenscraft: The Most Useful Things You Can Do with ADB and Fastboot on Android. Abgerufen am 11. Juli 2019 (amerikanisches Englisch).
  23. fastboot › Wiki › ubuntuusers.de. Abgerufen am 11. Juli 2019.
  24. a b NDK Revision History | Android NDK. Abgerufen am 4. Juli 2019 (englisch).
  25. NDK Downloads | Android NDK. Abgerufen am 4. Juli 2019 (englisch).
  26. Using the NDK with other build systems | Android NDK. Abgerufen am 11. Juli 2019 (englisch).
  27. The Android Native Development Kit. Contribute to android-ndk/ndk development by creating an account on GitHub. android-ndk, 11. Juli 2019, abgerufen am 11. Juli 2019 (englisch).
  28. Google: Android verzichtet auf GCC für native Apps - Golem.de. Abgerufen am 11. Juli 2019 (deutsch).
  29. Android - Invoke JNI based methods (Bridging C/C++ and Java) « Show me the code! - By Davanum Srinivas. 16. Dezember 2008, abgerufen am 11. Juli 2019 (englisch).
  30. System. Abgerufen am 11. Juli 2019 (englisch).
  31. Android Debug Bridge (adb). Abgerufen am 11. Juli 2019 (englisch).
  32. Android NDK Native APIs | Android NDK. Abgerufen am 11. Juli 2019 (englisch).
  33. MartinH: Using Eclipse for Android C/C++ Development. In: Android blog. 23. Januar 2011, abgerufen am 11. Juli 2019 (englisch).
  34. Using Visual Studio to Develop Native Android Code – VisualGDB Tutorials. Abgerufen am 11. Juli 2019 (kanadisches Englisch).
  35. Simpleperf | Android NDK. Abgerufen am 11. Juli 2019 (englisch).
  36. Accessory Development Kit | Android Developers. Abgerufen am 11. Juli 2019 (englisch).
  37. AIDE- IDE for Android Java C++ – Apps bei Google Play. Abgerufen am 11. Juli 2019.
  38. Android::Build - Lint, compile, install, run an Android app using the command line tools minus Ant and Gradle thus freeing development effort from the strictures imposed by Android Studio. - metacpan.org. Abgerufen am 11. Juli 2019 (englisch).
  39. Google App Inventor Simplifies Android Programming -- InformationWeek. 15. Juli 2010, abgerufen am 11. Juli 2019 (englisch).
  40. Google’s Do-It-Yourself App Tool - NYTimes.com. 15. Juli 2010, abgerufen am 11. Juli 2019 (englisch).
  41. Google brings app-making to the masses - SFGate. 17. Juli 2010, abgerufen am 12. Juli 2019 (englisch).
  42. Programming Android. 15. Juli 2010, abgerufen am 12. Juli 2019 (englisch).
  43. The MIT roots of Google’s new software. Abgerufen am 12. Juli 2019 (englisch).
  44. App Inventor launches second iteration. Abgerufen am 12. Juli 2019 (englisch).
  45. App Inventor Classic | Explore MIT App Inventor. Abgerufen am 12. Juli 2019.
  46. B4X – Develop Android, iOS and IoT applications. Abgerufen am 12. Juli 2019 (englisch).
  47. Create a Coreliu Photo App! Beta test site. Abgerufen am 12. Juli 2019 (englisch).
  48. Corona: Free Cross-Platform 2D Game Engine. Abgerufen am 12. Juli 2019 (amerikanisches Englisch).
  49. Delphi is the fastest way to write, compile, package and deploy cross-platform native applications on Windows, macOS, iOS, Android and Linux. See more. Abgerufen am 12. Juli 2019 (britisches Englisch).
  50. DroidScript | JavaScript IDE. Abgerufen am 12. Juli 2019 (britisches Englisch).
  51. Command flappy. Abgerufen am 12. Juli 2019 (englisch).
  52. Package app. Abgerufen am 12. Juli 2019 (englisch).
  53. Create Your Own Apps for Android Kindle with HAC. Abgerufen am 12. Juli 2019 (englisch).
  54. Kivy: Cross-platform Python Framework for NUI. Abgerufen am 12. Juli 2019 (englisch).
  55. Portal:Android - Lazarus wiki. Abgerufen am 12. Juli 2019 (englisch).
  56. Processing for Android. Abgerufen am 12. Juli 2019 (englisch).
  57. Ketai Library - Home. Abgerufen am 12. Juli 2019 (englisch).
  58. Qt for Android | Qt 5.13. Abgerufen am 12. Juli 2019 (englisch).
  59. Android - Qt Wiki. Abgerufen am 12. Juli 2019.
  60. Announcing RubyMotion 3.0: Android Platform, WatchKit Apps, and More. Abgerufen am 12. Juli 2019 (englisch).
  61. Wayback Machine. 4. Juni 2012, abgerufen am 12. Juli 2019 (englisch).
  62. Microsoft ships stand-alone Android Emulator. 21. Juli 2015, abgerufen am 12. Juli 2019 (englisch).
  63. Installing Google Play on Visual Studio Android Emulators. In: Alteridem. 2. Februar 2017, abgerufen am 12. Juli 2019 (kanadisches Englisch).
  64. Visual C++ Cross-Platform Mobile. Abgerufen am 12. Juli 2019 (amerikanisches Englisch).
  65. Xamarin-App-Entwicklung mit Visual Studio. Abgerufen am 12. Juli 2019 (deutsch).
  66. Android Developers Blog: The Top 50 Applications. 25. September 2009, abgerufen am 12. Juli 2019 (englisch).
  67. Android Developer Challenge announces first-round winners. 14. Mai 2008, abgerufen am 12. Juli 2019 (englisch).
  68. ADC I Top 50 Gallery - Android Developer Challenge. 16. Juli 2009, abgerufen am 12. Juli 2019 (englisch).
  69. Android Developer Challenge. 22. Juli 2009, abgerufen am 12. Juli 2019 (englisch).
  70. Android Developers Blog: ADC 2 Round 1 Scoring Complete. 1. November 2009, abgerufen am 12. Juli 2019 (englisch).
  71. Android Developer Challenge. 4. Januar 2011, abgerufen am 12. Juli 2019 (englisch).
  72. G1 Android Development. Abgerufen am 12. Juli 2019 (englisch).
  73. Rooting: Advantages and Disadvantages. In: ITCSE forum. Abgerufen am 21. September 2013.
  74. CyanogenMod in trouble? – Android and Me. 3. Oktober 2009, abgerufen am 12. Juli 2019 (englisch).
  75. Android Developers Blog: A Note on Google Apps for Android. 25. Oktober 2009, abgerufen am 12. Juli 2019 (englisch).
  76. The current state.. | CyanogenMod. 3. November 2009, abgerufen am 12. Juli 2019 (englisch).
  77. Javalobby News - 2007/11/13. Abgerufen am 12. Juli 2019 (englisch).
  78. Myriad's New J2Android Converter Fuels Android Applications Gold Rush. 4. Juli 2011, abgerufen am 12. Juli 2019 (englisch).
  79. Josh Fruhlinger: J2Android hopes you don't know that Android is Java-based. 22. März 2010, abgerufen am 12. Juli 2019 (englisch).
  80. Developing apps for Google Android: it's a mixed bag. 20. Dezember 2007, abgerufen am 12. Juli 2019 (englisch).
  81. You can't rush perfection, but now you can file bugs against it. In: Android Developers Blog. Abgerufen am 12. Juli 2019 (englisch).
  82. Scott Morrison: Glitches Bug Google's Android Software. In: Wall Street Journal. 19. Dezember 2007, ISSN 0099-9660 (wsj.com [abgerufen am 12. Juli 2019]).
  83. Snake | Android Freeware Directory. 9. Mai 2008, abgerufen am 12. Juli 2019 (englisch).
  84. First Android Application - Snake | Mobiles2day - Mobile Industry News. 5. Juni 2008, abgerufen am 12. Juli 2019 (englisch).
  85. Google plays Hide and Seek with Android SDK • The Register. 6. Oktober 2008, abgerufen am 12. Juli 2019 (englisch).
  86. Upgrading the SDK - Android. 13. September 2008, abgerufen am 12. Juli 2019 (englisch).
  87. SDK Archives. Abgerufen am 12. Juli 2019 (englisch).
  88. Developing on a Device | Guide | Android Developers. 13. Februar 2009, abgerufen am 12. Juli 2019 (englisch).
  89. Christina Warren: Google Play Hits 1 Million Apps. Abgerufen am 12. Juli 2019 (englisch).
  90. Android Market statistics from AndroLib, Androlib, Android Applications and Games directory. 2. Januar 2011, abgerufen am 12. Juli 2019 (englisch).
  91. Google: 3 Billion Android Apps Installed; Downloads Up 50 Percent From Last Quarter. 25. April 2011, abgerufen am 12. Juli 2019 (englisch).
  92. (Report) Developer Economics 2011 - Winners and losers in the platform race. 12. Juni 2018, abgerufen am 12. Juli 2019 (englisch).
  93. Mobile OS market share 2018. Abgerufen am 6. Juli 2019 (englisch).