
Sia che siate utenti di iPhone, sia che lo siate di Android avrete sicuramente utilizzato svariate app per svolgere altrettanti compiti.
Alcuni, magari, hanno anche provato a svilupparne una da soli, altri invece vorrebbero farlo ma non sanno nemmeno da dove iniziare. Sicuramente un background di programmazione aiuta in questi casi, ma comunque può non essere sufficiente, dato la particolare struttura e architettura che hanno le varie applicazioni mobili.
In aiuto della curiosità degli utenti Android, fortunatamente, arrivano 200 video tutorial, per un totale di circa 20 ore, che vi faranno da tutor nell’apprendere il linguaggio del robottino verde di Google. Su YouTube è possibile trovare una playlist con questi interessanti video.
Per farvi un’idea di come siano strutturati i video basta vedere quello inserito in testa all’articolo, che è il primo della sopracitata playlist; per i restanti potete cliccare qui
Per approcciarsi alla programmazione su Android, però, vale la pena anche analizzare quale sia la architettura del sistema per cui si sta sviluppando unitamente alla cognizione di quali siano le componenti fondamentali di cui è composta una applicazione.
L’Architettura di Android

L’ architettura di Android, come si può notare dalla figura, ha una struttura tipicamente a layer, dove i livelli inferiori offrono servizi a quelli superiori. Ne verranno ora analizzati alcuni aspetti, senza avere la pretesa di fornirne una descrizione dettagliata e completa.
Il livello piu basso è rappresentato dal kernel Linux nella versione 2.6. La necessità quando fu creato Android era infatti quella di disporre di un vero e proprio sistema operativo che fornisse gli strumenti
di basso livello per la virtualizzazione dell’hardware sottostante attraverso la definizione di diversi driver, dal nome auto-esplicativo.
La scelta di Linux è stata conseguenza della necessità di avere un SO che fornisse tutte le feature di sicurezza, gestione della memoria, gestione dei processi e che fosse affidabile e testato.
L’Application Framework
Questo layer contiene le API fondamentali per l’esecuzione di funzionalità ben precise e di fondamentale importanza in ciascuna applicazione Android. Da notare che tutte le applicazioni utilizzano lo stesso AF e come tali possono essere sostituite, estese o modificate; a riprova del motto che si può trovare sul sito di Android:
All applications are equals
Fra queste vale la pena citare:
- Activity Manager: Le activity sono il cuore pulsante di ogni applicazione Android, e sono lo strumento fondamentale con cui l’utente interagisce con l’applicazione. L’activity manager ha lo scopo di gestire il ciclo di vita di ogni activity, con tutto ciò che ne deriva.
- Content Provider: Ha la responsabilità di gestire la condivisione di informazioni fra i vari processi. Puo essere visto come una repository condivisa con cui le diverse app possono interagire inserendo o leggendo informazioni.
- View System: L’interfaccia grafica di una applicazione per Android è composta da quelle che sono specializzazioni della classe View, ciascuna caratterizzata da una particolare forma e da un diverso modo di interagire con essa. La gestione della renderizzazione dei componenti nonchè della gestione degli eventi associati è responsabilità proprio del componente VS.
- Location Manager: Le applicazioni che gestiscono, tra le informazioni disponibili, quelle relative alla localizzazione tipicamente vengono realizzate con l’ausilio di questo componente contenente API specifiche per la geolocalizzazione e georeferenziazione.
- Notification Manager: Mette a disposizione un insieme di strumenti che una applicazione può utilizzare per inviare particolari notifiche al dispositivo a seguito di particolari eventi.
Anatomia di una applicazione Android
Le applicazioni per Android devono, ovviamente garantire un discreto livello di interattività con l’utente, il quale le potrà utilizzare attraverso una delle interfacce che queste mettono a disposizione; ad esempio potrebbero essere selezionati dei tasti da una tastiera QWERTY.
La definizione di tali interfacce, dei metodi di comunicazione fra queste, dei metodi di interazione richiede la creazione di alcune componenti fondamentali per ogni applicazione.
Le Activity
Si può facilmente dedurre come una parte fondamentale dell’architettura debba essere rappresentata dalle gestione dell’interfaccia la quale viene realizzata attraverso la definizione di Activity. La responsabilita di questi componenti è quella di descrivere le varie schermate dell’applicazione e attraverso la composizione delle View gestire le azioni dell’utente.
Per semplificare, senza perdere di significato, una attività può essere vista come una schermata, o meglio come un contenitore di componenti grafici che potranno occupare tutto il display, parte di esso o anche essere completamente nascosti per apparire quando vengono verificati particolari eventi. Una normale applicazione, quindi, consisterà di una sequenza di schermate, le quali permettono la visualizzazione di informazioni o ancora
dispongono dei componenti per l’interazione con l’utente. Tali schermate, che si alternano sul display, possono anche comunicare fra di loro scambiandosi informazioni. A tale scopo la piattaforma organizza le attività secondo una struttura a stack dove quella in cima è sempre quella attiva in un particolare momento. La visualizzazione di una nuova schermata semplicemente corrisponde all’avvio di una nuova Activity , la quale verrà portata in cima allo stack mettendo in uno stato di pausa quelle precedenti.
Nel momento in cui una Activity termina il suo lavoro questa farà in modo di ritornare le eventuali informazioni raccolte alla attività precedente, la quale sarà riesumata come attiva.
Sarà, ovviamente, compito del sistema rendere trasparenti queste operazioni all’utente, mentre allo sviluppatore sarà delegata la gestione dei vari stati di una attività attraverso l’implementazione dei metodi di callback.
Intent ed Intent Filter
La parte forse piu interessante di questa architettura è la possibilità di riutilizzare le Activity (ed altri componenti) per quelle operazioni che sono comuni a piu applicativi.
Questa tipologia di scenario è davvero molto frequente, basta pensare ad una applicazione che ha bisogno di utilizzare le informazioni della rubrica del telefono attraverso la selezione di un contatto da un elenco, che necessariamente potrebbe non essere la medesima rubrica del telefono. I dati recuperati potranno poi essere utilizzati per effettuare una chiamata, inviare un messaggio o semplicemente una vcard ad un altro utente attraverso il bluetooth o la rete.
Se ogni applicazione implementasse la propria modalità di selezione del dato si avrebbe uno spreco di risorse; anche dal punto di vista dell’usabilità ci sarebbe il pericolo di eseguire la stessa operazione in modi diversi fra loro.
Android ha deciso di gestire il tutto attraverso la definizione degli Intent.
In sintesi, quando una applicazione ha la necessità di eseguire una particolare operazione, magari implementata da una Activity esterna ad essa, altro non farà che creare un Intent richiedendo l’utilizzo di una qualche risorsa, o componente, in grado di poterlo esaudire. Un Intent sarà quindi caratterizzato da informazioni relative all’operazione da eseguire, e da un meccanismo per l’identicazione del tipo di dati su cui la stessa opererà.
Il file AndroidManifest.xml
Ultimo, ma non meno importante, componente è il file di “configurazione” di ogni applicazione.
La prima domanda che sorge spontanea è come faccia il dispositivo ad associare a una icona, dei permessi e delle Activity ad una applicazione. Oltre a questo, come si è detto precedentemente, serviranno anche delle direttive all’applicazione che permettano di capire, ad esempio, da quante attività è composta, da come queste interagiscano fra loro, o se è richiesto l’utilizzo di Activity esterne all’applicazione stessa.
Tale lavoro è svolto dal file di configurazione AndroidManifest.xml. Tale file è il vero e proprio punto cardine di ogni app, basti pensare che se viene richiamata, attraverso la definizione di un Intent una attività non contenuta all’interno di questo file, all’utente viene restituito un errore e si ha un crash.
Queste, in linea di massima, sono le cose principali da sapere (a mio parere) per potersi approcciare allo sviluppo su questa piattaforma. Oltre ai tutorial video, consiglio anche le varie guide passo passo fornite dalla google stessa, all’indirizzo ufficiale di Android (developer.android.com) dove potrete trovare anche tutte le istruzioni per installare l’SDK e partire con le vostre sperimentazioni.
via Developer Android | Blog Androidiani

unil 2:43 pm on febbraio 12, 2012 | 434220
Tutte le lettere accentate non fungono.
ilsologheo00 3:46 pm on febbraio 12, 2012 | 434234
Bello che avrò letto l’articolo 400 volte :-(
unil 3:59 pm on febbraio 12, 2012 | 434235
Non so come mai. Comunque togli anche la categoria Uncategorized.
Pedro99 8:30 pm on febbraio 12, 2012 | 434274
Togliete tutti quei quadratini, sistemate le lettere accentate rimaste e gli spazi casuali in mezzo alle parole qua e là.
Altrimenti è illeggibile!
unil 9:43 pm on febbraio 12, 2012 | 434298
Infatti io sto ancora aspettanto per leggerlo.
ilsologheo00 12:14 am on febbraio 13, 2012 | 434350
Ora dovrei avere messo a posto tutto. Perdonatemi per le sviste di prima. Purtroppo io i quadratini non li vedo…magari nel rivedere tutto l’articolo sono riuscito ad eliminarli. Ditemi voi..
Pedro99 12:37 am on febbraio 13, 2012 | 434357
No, purtroppo ci sono ancora!
Ma davvero non li vedi?
Prova ad aprire la pagina con un altro browser…
Sir Jo 3:10 pm on febbraio 12, 2012 | 434226
Ottimo articolo
. Però quella che hai descritto è un’introduzione alla programmazione Android rivolta a programmatori. Per i comuni mortali esistono cose come l’App Inventor.
ilsologheo00 4:23 pm on febbraio 12, 2012 | 434239
Hai perfettamente ragione.. Però lo dico anche nell’articolo
Kryss | A65 | SB015 5:07 pm on febbraio 12, 2012 | 434243
a proposito di App Inventor… qualcuno ne ha notizia?
ilsologheo00 5:13 pm on febbraio 12, 2012 | 434244
Il sito è stato sospeso, ma gli hanno dato una nuova vita.. Ovvero mi pare che adesso sia accessibile tramite l’SDK.
Kryss | A65 | SB015 5:29 pm on febbraio 12, 2012 | 434245
In teoria dovrebbe gestirlo il MIT, ma ancora non è attivo…
itomi 8:32 pm on febbraio 12, 2012 | 434275
ilsologheo00 12:18 am on febbraio 13, 2012 | 434353
@itomi Per caso, se hai del tempo da perdere, riesci a darmi un occhio anche a http://leganerd.com/2012/02/07/i-padri-dimenticati-del-videogioco-seconda-parte/, giusto per vedere se la struttura va bene e se non ci sono castronerie tipo i “quadratini”.
Ovviamente se non può Itomi chiunque è degno di stima se lo legge.
member25 8:10 pm on marzo 10, 2012 | 444842
Per me tutto ok.
member25 9:41 pm on febbraio 12, 2012 | 434296
Ottimo articolo anche se ci sono quei quadrattini.
Mother of God conquisteranno il mondo quei quadrattini, si stanno moltiplicando noooooooo.
ilsologheo00 12:16 am on febbraio 13, 2012 | 434352
Ma porc…come cavolo faccio a non vederli i quadratini?? Comunque in ogni caso: “escono dalle fottute pareti!!”
member25 8:32 pm on marzo 10, 2012 | 444844
Cmq ho natato che mi succede solo con firefox, Chrome e su … quell’altro, dai come si chiama, quella e blu con il cerchio giallo, si visualizza correttamente.