Lo sviluppo di software Android è il processo mediante il quale vengono create nuove applicazioni per il sistema operativo Android. Le app sono in genere sviluppate in linguaggio Java utilizzando il kit di sviluppo software Android (SDK), nonostante siano disponibili altri ambienti di sviluppo.

Strumenti di sviluppo ufficiali Android SDK

Il kit di sviluppo software Android (SDK) include una serie completa di strumenti di sviluppo. Tra questi sono presenti: un debugger, librerie, un emulatore portatile basato su QEMU, documentazione, codici esemplificativi e tutorial. Le piattaforme di sviluppo attualmente supportate sono i computer che eseguono Linux (qualsiasi moderna distribuzione Linux), macOS 10.5.8 o versioni successive e Windows XP o successivo. A partire da marzo 2015, l'SDK non è disponibile su Android in sé, ma lo sviluppo del software rimane possibile utilizzando applicazioni Android specializzate.

Fino alla fine del 2014 l'ambiente di sviluppo integrato ufficialmente supportato (IDE) è stato Eclipse utilizzando gli Android Development Tools (ADT) Plugin, anche se ad esempio gli ambienti IntelliJ IDEA e NetBeans supportano pienamente lo sviluppo di Android. A partire dal 2015 Android Studio, realizzato da Google e alimentato da IntelliJ, è l'IDE ufficiale di Android. Gli sviluppatori, inoltre, possono utilizzare qualsiasi editor di testo per modificare i file Java o XML e successivamente utilizzare un comando (Java Development Kit e Apache Ant sono indispensabili) per creare, implementare ed eseguire le applicazioni avendone il controllo sui dispositivi Android collegati (ad esempio innescando il riavvio del dispositivo, installando un pacchetto software da remoto, ecc).

I miglioramenti apportati all'SDK vanno di pari passo con lo sviluppo globale della piattaforma Android. L'SDK supporta anche le versioni precedenti di Android nel caso in cui gli sviluppatori desiderassero eseguire le loro applicazioni su dispositivi più vecchi. Gli strumenti di sviluppo sono componenti scaricabili, pertanto dopo aver scaricato l'ultima versione dell'ambiente e della piattaforma, quelle meno recenti possono essere scaricate facilmente per eseguire dei test di compatibilità.

Le applicazioni Android hanno estensione .apk e vengono memorizzate nella cartella /data/app del dispositivo (la cartella è accessibile solo dopo aver effettuato il rooting per motivi di sicurezza ). Il pacchetto APK contiene i file .dex(Dalvik executable), file di risorse, ecc.

Android Debug Bridge (ADB) L'Android Debug Bridge (ADB) è un toolkit incluso nel pacchetto SDK di Android. Si compone di due parti: lato client e lato server che comunicano tra loro. L'ADB è generalmente accessibile attraverso l'interfaccia a linea di comando, anche se esistono numerose interfacce grafiche utente per controllare l'ADB.

Il formato per l'emissione dei comandi attraverso l'ADB è solitamente: adb [-d|-e|-s <serialNumber>] <command>

Ad esempio, le applicazioni Android possono essere salvate dal comando backup come file, a cui viene assegnato backup.ab come nome di default.

In un problema di sicurezza emerso nel marzo 2011, l'ADB stato accusato di agire come vettore per l'installazione di rootkit sui telefoni collegati per sferrare un "attacco alle risorse".

Fastboot

Fastboot è un protocollo diagnostico incluso nel pacchetto SDK utilizzato principalmente per modificare il file system flash di un dispositivo tramite una connessione USB collegata ad un host. È necessario che il dispositivo venga avviato in modalità boot loader o in modalità di avvio secondario, in cui viene eseguita solo l'inizializzazione dei driver indispensabili. Dopo aver abilitato il protocollo sul dispositivo, questo accetterà uno specifico insieme di comandi inviati via USB tramite una riga di comando. Alcuni dei comandi Fastboot più comunemente usati sono: flash - riscrive una partizione usando un'immagine memorizzata nell'host erase - cancella una partizione specifica reboot - riavvia il dispositivo in modalità normale, caricando una partizione di recovery o avviando il boot loader devices - mostra una lista dei dispositivi (con relativo numero di serie) collegati all'host format - formatta una partizione specifica. Il filesystem deve essere riconosciuto dal dispositivo

Android NDK Le librerie scritte in C e C++ possono essere compilate su supporti ARM, MIPS o x86 ed implementate utilizzando l'Android Native Development Kit (NDK). Le classi possono essere chiamate tramite comandi Java (che può essere implementato sulla Dalvik VM) usando il comando System.loadLibrary, il quale rappresenta una parte delle classi standard di Android Java.

Applicazioni complete possono essere create, compilate ed installate utilizzando gli strumenti di sviluppo tradizionali. Tuttavia, in base alla documentazione Android, NDK non dovrebbe essere utilizzato esclusivamente per lo sviluppo solo perché lo sviluppatore preferisce programmare in C o C ++, infatti l'uso di NDK aumenta la complessità della programmazione e la maggior parte delle applicazioni non trarrebbe beneficio dal suo assiduo utilizzo.

Il debugger ADB fornisce una shell root tramite l'emulatore Android che permette al codice scritto sui supporti ARM, MIPS o x86 di essere caricato ed eseguito. Il codice può essere compilato con GCC o con il compilatore Intel C++ su un PC standard. L'esecuzione di codice nativo è complicato dal fatto che Android fa uso di una libreria C non standard (libc, nota come Bionic). La libreria grafica che Android utilizza per controllare l'accesso a questo dispositivo si chiama Skia Graphics Library (SGL) ed è stata rilasciata sotto una licenza open source. Skia dispone di front-end e back-end sia per Win32 sia per Unix, consentendo lo sviluppo di applicazioni multipiattaforma, ed è il motore grafico alla base del browser web Google Chrome.

A differenza dello sviluppo in Java, basato su un IDE come Eclipse, l'NDK si basa su strumenti da riga di comando e necessita che questi vengano richiamati manualmente per costruire, implementare ed eseguire le applicazioni. Alcuni strumenti consentono di integrare l'NDK in Eclipse e in Visual Studio.

Android Open Accessory Development Kit La piattaforma Android 3.1 (anche dopo aver effettuato un backport ad Android 2.3.4) introduce il supporto Android Open Accessory, che consente ad un hardware USB esterno (un accessorio USB Android) di interagire con un dispositivo Android in una speciale "modalità accessorio". Quando un dispositivo Android è in modalità accessorio, il supporto collegato si comporta da host USB mentre il dispositivo Android agisce come dispositivo USB. Gli accessori USB Android sono specificamente progettati per collegarsi ai dispositivi Android e per aderire ad un semplice protocollo (Android accessory protocol) che consente loro di rilevare i dispositivi Android che supportano la modalità accessorio.

Supporto Native Go Dalla versione 1.4 del linguaggio di programmazione Go, la scrittura di applicazioni per Android è supportata senza la necessità di alcun codice Java, benché presenti un ristretto insieme di API.

Strumenti di sviluppo non ufficiali App Inventor

Il 12 luglio 2010 Google ha annunciato la disponibilità di App Inventor, un ambiente di sviluppo online per i programmatori alle prime armi, basato sulla Libreria a Blocchi di Java del MIT e che fornisce l'accesso al GPS del dispositivo, ai dati dell'accelerometro, alle funzioni del telefono, ai messaggi di testo, ai contatti, alla memoria e ai servizi Web, inizialmente compresi Amazon e Twitter. "Abbiamo potuto fare tutto questo perché l'architettura di Android è molto aperta", ha detto il direttore del progetto del MIT Hal Abelson. In fase di sviluppo per oltre un anno, lo strumento di editing a blocchi è stato insegnato al corso di informatica ad Harvard, al MIT, a Wellesley, al Trinity college (Hartford) e all'Università di San Francisco, dove il professor David Wolber sviluppò un corso introduttivo di informatica e un libro-tutorial basati su App Inventor destinati agli studenti non frequentanti i corsi di informatica.

Nella seconda metà del 2011 Google ha rilasciato il codice sorgente, terminato il suo servizio Web e ha fornito finanziamenti per la creazione del MIT Center for Mobile Learning, guidato dal creatore dell'App Inventor Hal Abelson e dai suoi colleghi del MIT Eric Klopfer e Mitchel Resnick. L'ultima versione distribuita come il risultato della collaborazione fra Google e il MIT è stata rilasciata nel febbraio 2012, mentre la prima versione creata esclusivamente dal MIT è stata lanciata nel marzo 2012 ed è stata aggiornata ad App Inventor 2 nel dicembre 2013. Come dal 2014, App Inventor è ora gestito interamente dal MIT.

Basic4android Basic4android è un prodotto commerciale simile a Simple. È ispirato a Visual Basic 6 e Visual Studio, entrambi della Microsoft. Esso rende la programmazione Android molto più semplice per i programmatori abituati a Visual Basic che trovano difficoltà nel linguaggio Java. Basic4android è molto attiva e vi è un'ampia comunità online di sviluppatori.

Corona SDK Corona SDK è un kit di sviluppo software (SD) creato da Walter Luh, fondatore di Corona Labs Inc.. Corona SDK permette ai programmatori di creare applicazioni grafiche, per dispositivi iOS e Android, utilizzando il suo linguaggio integrato Lua, che viene sovrapposto al C++ e all'OpenGL. L'SDK utilizza un modello di acquisto basato su abbonamento, senza richiedere alcuna royalty per le app sviluppate, ma imponendo requisiti di branding.

Delphi Delphi può essere utilizzato per creare applicazioni utilizzando il linguaggio Object Pascal. L'ultima versione è Delphi 10 Seattle, sviluppato da Embarcadero. Le interfacce utente sono sviluppate utilizzando il framework GUI FireMonkey. Inoltre è disponibile un numero crescente di componenti non visivi per l'interazione con i vari sensori (e.g. fotocamera, giroscopio, GPS, Bluetooth, ecc). Altri servizi, ad esempio l'accesso a determinati eventi di tastiera, sono resi disponibili in maniera indipendente dalla piattaforma. Il compilatore è basata sull'architettura LLVM ed è possibile il debug tramite l'IDE. Le applicazioni generate sono basate sull'NDK ma, a differenza di Xamarin, il runtime viene compilato all'interno dell'applicazione stessa.

HyperNext Android Creator HyperNext Android Creator (HAC) è un sistema di sviluppo software rivolto a programmatori principianti che può aiutarli a creare le proprie applicazioni Android senza conoscere Java e l'SDK di Android. Si basa su HyperCard, che considera il software come una pila di carte con una sola carta visibile alla volta, risultando quindi adatto per applicazioni di telefonia mobile che presentano solo una finestra visibile alla volta. Il linguaggio di programmazione principale di HAC è chiamato HyperNext ed è vagamente basato sul linguaggio HyperTalk di Hypercard. Esso supporta un numero crescente di sottoinsiemi dell'SDK Android, comprese le sue versioni dei tipi di controllo GUI, e viene eseguito automaticamente in background.

Kivy Kivy è una libreria open source di Python per lo sviluppo di applicazioni multi-touch con un'interfaccia utente naturale (NUI) supportate da una vasta gamma di dispositivi. Kivy offre la possibilità di mantenere una singola applicazione per numerosi sistemi operativi ("code once, run everywhere"). Kivy dispone di uno strumento apposito per la distribuzione di applicazioni mobili chiamato Buildozer, disponibile solo per Linux. Buildozer è attualmente il software alpha, ma è molto meno ingombrante rispetto ai vecchi metodi di distribuzione Kivy. Le applicazioni programmate con Kivy possono essere eseguite su qualsiasi dispositivo Android.

Lazarus Lazarus può essere utilizzato per sviluppare applicazioni Android utilizzando Object Pascal (e altri linguaggi Pascal), basato sul compilatore Free Pascal a partire dalla versione 2.7.1.

Processing