mini|Der Android-Stack mini|Google Pixel 9 und 9 Pro, Teil der Google-Pixel-Serie, eine Reihe von „entwicklerfreundlichen“ Geräten 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. Das Android Native Development Kit (NDK) erlaubt darüber hinaus, Teile der Apps in nativem Code mit Sprachen wie C oder C++ zu implementieren. 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
Android SDK
Das Android Software Development Kit (SDK) umfasst zahlreiche Entwicklungswerkzeuge. 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 ChromeOS. Seit März 2015 ist das SDK nicht mehr auf Android selbst verfügbar, aber die Softwareentwicklung ist mit speziellen Android-Anwendungen möglich.
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. 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. 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 (zum Beispiel Auslösen eines Neustarts, Remote-Installation von Softwarepaketen) werden.
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.
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).
Android SDK Platform Tools Die Android SDK Platform Tools sind eine separat herunterladbare Teilmenge des vollständigen SDKs, bestehend aus Kommandozeilen-Tools wie ADB und Fastboot.
Android Debug Bridge (ADB) 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. Neben der Kommandozeile gibt es grafische Benutzeroberflächen (GUI) zur Steuerung von ADB, auch als Webseite.
Das Format für die Ausführung von Befehlen ist typischerweise: 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.
Fastboot 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. 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: 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
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.
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.
Kommandozeilenwerkzeuge können mit dem NDK kompiliert und mithilfe von ADB installiert werden.
Android verwendet Bionic als C-Standardbibliothek und LLVM libc++ als C++-Standardbibliothek. Das NDK enthält auch eine Vielzahl anderer APIs: 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 und Visual Studio.
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.
Android Open Accessory Development Kit 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.
Externe Hardware-Entwicklung 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 AIDE 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.
Android::Build 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.
App Inventor for Android
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. Laut Hal Abelson, dem Projektleiter am MIT, konnte diese App nur aufgrund der Offenheit der Android-Architektur entwickelt werden. 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.
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. 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 veröffentlicht und im Dezember 2013 auf den App Inventor 2 aktualisiert. Seit 2014 wird der App Inventor vom MIT weiterentwickelt.
B4A B4A ist eine kostenlose Entwicklungsumgebung aus der B4X-Familie, welche von Microsoft Visual Basic 6 und Microsoft Visual Studio inspiriert ist. Sie macht die Android-Entwicklung für Visual-Basic-Programmierer, die die Programmierung in Java schwierig finden, einfacher.
Coreliu Coreliu ermöglicht es Laien, immersive Lernanwendungen zu schreiben, die nativ auf Android-Geräten laufen. 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 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.
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 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. 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