Programmare Android: creare applicazioni partendo da zero con Android SDK ed Eclipse

I telefonini si sono trasformati, da tempo, in dispositivi evoluti capaci di mettere a disposizione dell'utente una nutrita schiera di applicazioni per l'assolvimento dei compiti più disparati.
Programmare Android: creare applicazioni partendo da zero con Android SDK ed Eclipse

I telefonini si sono trasformati, da tempo, in dispositivi evoluti capaci di mettere a disposizione dell’utente una nutrita schiera di applicazioni per l’assolvimento dei compiti più disparati. Android è uno dei sistemi operativi per device mobili oggi più diffuso ed utilizzato: numerosi produttori (tra i tanti nomi ci sono, per esempio, Acer, HTC, LG, Motorola, Samsung e Sony Ericsson) hanno deciso di installarlo sui propri dispositivi via a via presentati sul mercato, sia che si tratti di smartphone che di tablet. Android si propone come una piattaforma “aperta” basata sul kernel Linux ed in grado di eseguire applicazioni attraverso la cosiddetta Dalvik virtual machine, una macchina virtuale Java adattata per l’impiego sui dispositivi mobili.
Appannaggio dei programmatori, Google provvede a rilasciare un pacchetto SDK aggiornato che intregra gli strumenti di sviluppo, le librerie, un emulatore, la documentazione ed alcuni progetti d’esempio. Grazie al pacchetto SDK, disponibile nelle versioni per le piattaforme Windows, Linux e Mac OS X, è possibile quindi interagire con un “dispositivo virtuale” che si comporterà come uno dei device Android disponibili sul mercato.

Per iniziare a programmare applicazioni Android, quindi, due sono i requisiti software indispensabili:

1) Il pacchetto Java Development Kit (JDK), prelevabile da questa pagina (sito web di Oracle).

2) L’Android SDK, il prodotto che consente di realizzare applicazioni per il sistema operativo mobile targato Google contenente il debugger, le librerie, un emulatore, il codice d’esempio e la documentazione. Il pacchetto SDK è scaricabile gratuitamente da questa pagina.

L’utilizzo della virtual machine è necessario per fare in modo che il codice generato possa garantire delle prestazioni comparabili a linguaggi compilati quali C e C++. La macchina virtuale che, su ciascun dispositivo Android, si occupa di eseguire il bytecode si chiama appunto Dalvik VM. L’uomo chiave che ne ha curato lo sviluppo si chiama Dan Bornstein ed il nome della macchina virtuale deriva da quello di un villaggio di pescatori islandese, nel quale vivano alcuni suoi parenti. La virtual machine Dalvik si occupa di recuperare tutte le varie classi Java necessarie per il funzionamento di un’applicazione e di combinarle in uno o più file con estensione .dex (Dalvik Executables). Durante la generazione di tali elementi, le informazioni duplicate vengono riunite assieme in modo da ridurre drasticamente lo spazio necessario rispetto ai comuni file Java in formato .jar.

“Cuore” di Android è il kernel Linux che è responsabile della gestione dei driver di periferica, dell’accesso alle risorse, della gestione energetica e di altre funzionalità. La maggioranza delle applicazioni sviluppate per Android sono comunque realizzata in Java e vengono tutte eseguite ricorrendo alla virtual machine Dalvik.
Al livello successivo della “pila”, sopra al kernel Linux, vi sono un certo numero di librerie C/C++ quali OpenGL, WebKit, FreeType, SSL, SQLite e Media. Le librerie Media sono basate su OpenCore e sono responsabili della registrazione e della riproduzioni di flussi audio e video. Un’ulteriore libreria, denominata Surface Manager si occupa di controllare l’accesso al sottosistema grafico e supporta la modellazione 2D e 3D.
La nota libreria WebKit, in comune con Apple Safari e Google Chrome, gestisce il motore per la navigazione sul web mntre SQLite è il conosciuto database relazionale opensource.

Dopo l’installazione del pacchetto Java JDK

Quando si installa Java è bene tenere presenti alcuni punti fondamentali. In primo luogo, la piattaforma Java deve essere mantenuta sempre aggiornata per evitare che eventuali vulnerabilità possano essere sfruttate, da parte di aggressori, per causare danni. In seconda battuta, se non si fosse interessati ad eseguire le applet Java dal browser web, sarebbe opportuno disattivare questa possibilità.
A tal proposito, suggeriamo di documentarvi facendo riferimento all’articolo Java è sicuro? Come difendersi dalle minacce più recenti.

Installazione di Android SDK

Dopo aver prelevato il pacchetto SDK di Android da questa pagina, è necessario estrarne il contenuto in una cartella di propria scelta, sul disco fisso (ad esempio, C:\Android SDK).
Si otterranno così due sottocartelle: eclipse e sdk. La prima directory contiene l’ambiente di sviluppo (IDE) Eclipse (fino a qualche tempo fa doveva essere scaricato ed installato separatamente) mentre la seconda il pacchetto di sviluppo Android vero e proprio.

È possibile programmare per Android utilizzando anche, semplicemente, un editor di testo (i.e. Notepad++) ma la procedura apparirà sicuramente più macchinosa. Per evitare di complicarsi la vita, quindi, è possibile fruire dell’Android Development Tools (ADT), un plugin per Eclipse IDE che consente di “aprire” l’ambiente di sviluppo integrato multilinguaggio e multipiattaforma alla realizzazione di applicazioni per il sistema operativo di Google. Tutto è già integrato nel pacchetto “ADT bundle” di Android.

L’SDK di Android contiene tutta una serie di strumenti e di pacchetti. Per impostazione predefinita, al primo utilizzo dell’SDK risultano abilitati solamente gli strumenti ossia gli eseguibili e i file di supporto indispensabili per l’avvio dei programmi. I pacchetti sono invece i file che si riferiscono ad una specifica versione di Android (dalla 1.5 alla 3.1) oppure i cosiddetti ad-on. Questi ultimi sono componenti aggiuntivi quali le API di Google Maps. Il cosiddetto SDK Manager è uno speciale strumento che consente di gestire le versioni dell’Android SDK correntemente installate sul sistema in uso.

Avvio dell’SDK Manager

Per avviare l’SDK Manager da ambiente Windows, è sufficiente fare doppio clic sul file SDK Manager.exe.

Prima di avviare l’SDK Manager, bisognerà accertarsi di aver installato il pacchetto JDK di Java altrimenti l’applicazione non verrà eseguita (apparirà per una frazione di secondo solo una finestra a sfondo nero).

L’SDK Manager mostrerà tutti i componenti utilizzabili per realizzare le proprie applicazioni per la piattaforma Android. Qui, si possono spuntare le caselle corrispondenti alle versioni di Android per le quali si prevede di sviluppare le proprie applicazioni.
Ogni versione del sistema operativo Android è contraddistinta da un numero progressivo di versione della corrispondente API. Nel caso di Android 2.3.3 si leggerà, ad esempio, API 10; nel caso di Android 3.0, API 11; per Android 4.0, API 14 e così via.
Oltre a spuntare le caselle corrispondenti alle versioni del sistema operativo d’interesse, si dovrà attivare anche la casella Extras:

Cliccando su Install packages ed, ancora, su Install, l’SDK Manager di Google avvierà il download dei pacchetti richiesti per poi proseguire con la loro installazione sul sistema locale.
Peccato che mentre viene installato un componente, l’SDK Manager non si avvantaggi procedendo al download di quelli successivi.
Ad installazione ultimata, l’SDK Manager chiederà di operare un riavvio dell’ADB (Android Debug Bridge): bisognerà rispondere in modo affermativo.

La prima esecuzione dell’ambiente di sviluppo Eclipse

A questo punto è tutto pronto per iniziare a programmare per Android: accedendo alla cartella eclipse quindi facendo doppio clic sul file eseguibile eclipse.exe, si avvierà l’ambiente di sviluppo integrato Eclipse.

Alla prima esecuzione di Elicpse, verrà richiesta la creazione di un workspace: si tratta della cartella nella quale si prevede di memorizzare tutti i propri progetti. È possibile accettare la directory proposta in modo predefinito oppure specificarne un’altra.

Alla comparsa della successiva finestra Contribute usage statistics si può scegliere oppure No a seconda che si voglia oppure si preferisca non contribuire al miglioramento dell’Android SDK mediante l’invio periodico, a Google, di dati statistici.

È interessante notare come l’SDK Manager sia avviabile anche dalla versione di Eclipse integrata nell’Android SDK: basta cliccare sul menù Window quindi selezionare la voce Android SDK Manager:

Cliccando sul menù Help, su About ADT quindi sul pulsante Installation details ed infine sulla scheda Plug-ins, si noterà come i plugin ADT (Android Development Tools) che sino a qualche tempo fa dovevano essere aggiunti in modo manuale, risultino già preinstallati.
Il plugin ADT di Android estende le funzionalità dell’IDE Eclipse in modo tale da fare in modo che attraverso tale ambiente di sviluppo sia possibile realizzare nuovi progetti Android, accedere agli strumenti che consentono di accedere ad emulatori e dispositivi Android, compilare ed effettuare il debug di applicazioni Android, esportare le applicazioni Android sotto forma di pacchetti APK ed, infine, creare i certificati digitali per firmare le applicazioni in formato APK.

Come creare uno o più dispositivi virtuali Android

Creazione dei dispositivi virtuali Android

Prima di iniziare a programmare applicazioni Android, il primo passo da compiere consiste nel richiedere la creazione di uno o più dispositivi virtuali (AVD; Android Virtual Devices). Ciascun AVD viene avviato da parte di un emulatore che ricalca da vicino tutte le principali caratteristiche di un dispositivo mobile a cuore Android.
È possibile creare tanti AVD quanti ne risultino necessari: ciascun dispositivo virtuale può essere infatti sfruttato per provare le applicazioni in corso di sviluppo utilizzando varie configurazioni hardware e software.

Per creare un nuovo AVD, è sufficiente selezionare la voce Android Virtual Device Manager dal menù Window di Eclipse:

Cliccando sul pulsante New, si richiederà la generazione di un nuovo AVD.
La finestra Create new Android Virtual Device (AVD) consente di definire tutte le caratteristiche tecniche del dispositivo virtuale in corso di creazione a partire dalla tipologia di display (sono presenti anche le preconfigurazioni per device quali il Google Nexus 7, il Galaxy Nexus, il Nexus S ed il Nexus One), dalla versione di Android utilizzata, passando per la presenza o meno di una tastiera “fisica” (Hardware keyboard present), di una fotocamera frontale o posteriore, della memoria a disposizione e della capacità della scheda SD.

In questo caso si è optato per la creazione di un dispositivo virtuale Android un po´ più datato (monta Android 2.3) e dispone di una scheda SD da 10 MB. Suggeriamo di attivare la casella Hardware keyboard present altrimenti non si potrà utilizzare la tastiera del personal computer, ad esempio, per digitare testi ed indirizzi Internet.

Dopo aver fatto clic su OK, una volta creato il nuovo AVD, si potrà avviarlo selezionandolo quindi facendo clic su Start. Cliccando su Launch, si avvierà l’emulatore (Scale display to real size consente di ridurre le dimensioni del display virtuale nel caso in cui si utilizzino risoluzioni non particolarmente elevate).

Dopo alcuni secondi di attesa, dovrebbe essere possibile iniziare a provare l’emulatore Android.

Il dispositivo virtuale si comporterà esattamente come un normale device Android: nello specifico, nella colonna di destra, si troveranno i pulsanti hardware che tipicamente sono presenti in ogni smartphone Android. C’è il pulsante “Home“, per tornare alla schermata principale, il pulsante “Menu”, “Return” oltre ai controlli per aumentare e diminuire il volume.
Tenendo premuto l’apposito pulsante quindi cliccando su Power off, si potrà richiedere lo spegnimento del dispositivo virtuale.

Per avere Android in italiano basterà, dalla schermata “Home”, premere il pulsante Menu, cliccare Settings e su Language & keyboard:

Dalla sezione Select language, bisognerà selezionare Italiano (Italia).

Come sviluppare la prima applicazione per Android

Creare la prima applicazione Android

Dall’interfaccia di Eclipse (File, New, Project) espandendo il ramo “Android” quindi cliccando su Android Application Project, si potrà creare un nuovo progetto.

Dopo aver fatto clic su Next, nella casella Application name si digiterà CiaoMondo:

Nella casella Package name, si deve digitare un identificativo univoco per l’applicazione in corso di creazione (esempio: com.ciaomondo). Esso dovrà essere mantenuto per l’intero ciclo di vita dell’applicazione. In questo modo, versioni diverse della medesima applicazione saranno adeguatamente riconosciute.
I menù a tendina seguenti consentono di decidere il sistema operativo che viene considerato come requisito minimo per l’esecuzione dell’applicazione e la versione di Android “target”.
Nella finestra seguente si può lasciare tutto così com’è impostato.
Attraverso la schermata Configure launcher icon, si può eventualmente specificare una propria icona da utilizzare per facilitare il riconoscimento visuale dell’applicazione. Per il momento, si può accettare quella di default:

Nella finestra Create activity, si selezioni BlankActivity in modo da ottenere un’area di lavoro completamente vuota insieme con la barra di navigazione di Android.
Nel campo Activity Name, si può digitare CiaoMondoActivity e premere, ancora una volta, il pulsante Next. In corrispondenza del menù a tendina Navigation type si può lasciare None.

Il file .xml contenuto nel ramo res\layout della finestra Package explorer definisce l’interfaccia utente dell’applicazione in corso di realizzazione.

Facendo clic sulla scheda activity_ciao_mondo.xml in basso, si potrà verificare come la posizione dei singoli oggetti usati per comporre l’interfaccia dell’applicazione siano resi attraverso codice tutto sommato piuttosto semplice.

Prima di </RelativeLayout>, si dovrà incollare quanto segue:

<TextView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:layout_centerHorizontal="true"
	android:text="La mia prima applicazione Android!" />

<Button
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="Pulsante cliccabile"
	android:layout_marginTop="35dp" />

Effettuata la variazione si dovrà ricorrere alla combinazione di tasti CTRL+S per salvare le modifiche.

Accanto alle righe android:text comparirà un triangolino giallo recante il messaggio: “[I18N] Hardcoded string (…), should use @string resource“. Si tratta di un avviso che Eclipse mostra ricordando che le stringhe di carattere non dovrebbero essere inserite direttamente qui ma richiamate utilizzando il corrispondente riferimento.
Cliccando sulla scheda Graphical layout, si dovrebbe notare la comparsa dell’etichetta di testo e di un pulsante.

Facendo clic con il tasto destro del mouse sul nome dell’applicazione (Package explorer) quindi selezionando Run as, Android application, “CiaoMondo” verrà avviata all’interno del dispositivo virtuale Android precedentemente creato.

L’applicazione verrà immediatamente eseguita:

Accedendo all’elenco delle applicazioni installate, si vedrà anche “CiaoMondo“:

Nella prossima puntata vedremo più da vicino l’anatomia di un’applicazione Android.

Se si dovesse ricevere il messaggio ADB server didn’t ACK, il nostro consiglio è quello di fermare, utilizzando il Task manager di Windows, qualunque processo adb.exe in esecuzione quindi riavviare Eclipse.
Problemi potrebbero essere causati anche da parte di quei software che utilizzano versioni “ad hoc” del file adb.exe (ad esempio, SnapPea): effettuandone la disinstallazione si dovrebbe superare ogni difficoltà.

Ti consigliamo anche

Link copiato negli appunti