# Android-Softwareentwicklung

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 Chrome OS. 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:
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

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 Integrierte Entwicklungsumgebung verwendet werden, die über WLAN mit dem Gerät verbunden ist. Es verwendet Googles V8-JavaScript-Engine.

### Golang

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 (das heißt 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 (zum Beispiel werden OpenAL- und OpenGL ES 2-Bindungen bereitgestellt, die zur Erstellung von 2D/3D-Spielen, beispielsweise eines der angegebenen Beispiele für Android oder iOS oder anderer Grafikanwendungen, verwendet werden können).

### HyperNext Android Creator

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. 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

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. 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 Buildozer, das nur für Linux verfügbar ist. Buildozer 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

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.

### Processing

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

### Qt for Android

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. 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. Der Qt Creator ist eine Integrierte Entwicklungsumgebung, die mit dem Qt-Framework für die plattformunabhängige Anwendungsentwicklung bereitgestellt wird.

### RubyMotion

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.

### SDL

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, der Android-Ports wie zum Beispiel das Jagged-Alliance-2-Videospiel ermöglicht.

### Visual Studio Emulator for Android

Microsoft lieferte 2015 einen kostenlosen eigenständigen Emulator für Android, genannt Visual Studio Emulator for Android. Der Emulator unterstützt die Installation von Google Play über eine Drag-and-Drop-Schnittstelle. 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.

### Xamarin

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.

## Android Developer Challenge

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. 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.
Die ADC II wurde am 27. Mai 2009 angekündigt. Die erste Runde der ADC II endete am 6. Oktober 2009. Die Gewinner der ersten Runde der ADC II mit den 200 besten Anwendungen wurden am 5. November 2009 bekanntgegeben. 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.

## Community-basierte Distributionen

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. 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. 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, in dem er auf Probleme bei der Weiterverteilung von Googles Closed-Source-Anwendungen innerhalb der Custom-ROM CyanogenMod hingewiesen wurde. 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.

## Java-Standards

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. Es gibt jedoch mehrere Tools von Unternehmen wie der Myriad Group und UpOnTek, die Konvertierungsdienste von Java ME zu Android anbieten.
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

Android wurde von der Open Handset Alliance gegründet, die von Google geleitet wird. 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). 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 ...“ 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.
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.
Am 18. August 2008 wurde die Android 0.9 SDK-Beta-Version 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. Am 23. September 2008 wurde das Android 1.0 SDK (Release 1) veröffentlicht. Laut der Versionshinweise 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.
Bis Juli 2013 wurden mehr als eine Million Android-Anwendungen mit über 25 Milliarden Downloads entwickelt. Eine Studie vom Juni 2011 ergab, dass zum Zeitpunkt der Veröffentlichung über 67 Prozent der mobilen Entwickler die Plattform nutzten. Im Jahr 2018 erreichten Android-Smartphones mit mehr als 1,2 Milliarden Geräten einen Marktanteil von mehr als 85 Prozent.