Nel normale sviluppo di un'applicazione, a prescindere dalla
piattaforma target, è facile ritrovarsi ad
affrontare le medesime tematiche come ad esempio l'identificazione dell'utente, la persistenza dei
dati in locale o l'accesso a servizi Web.
Il Software Developer Kit di Android, oltre ad offrire le API fondamentali per qualunque applicazione, espone API e
componenti atti a risolvere svariate problematiche. Per le tematiche non "affrontate" dall'SDK, vengono normalmente
in aiuto le librerie di terze parti.
La piattaforma del Robottino Verde è una
delle più interessante, è quindi
ovvio disporre di una miriade di librerie mutuate dal mondo Java o
realizzate proprio per Android.
Lo scopo di questa guida è presentare alcune librerie Open Source in Java e
scritte per affrontare alcune tra le problematiche di sviluppo più frequenti.
Per poter trarre benefici dalla lettura di questa guida sono necessari:
- buona conoscenza del linguaggio Java.
- I concetti base dello sviluppo su Android (si darà per scontato che il lettore conosca il funzionamento di Activity, Fragment, Intent, Service e così via).
- Conoscenza dell'ambiente di sviluppo Android Studio.
- Conoscenza dell'ambiente di sviluppo Eclipse.
Roadmap
Esistono diverse librerie oltre a quelle che si andranno ad analizzare nella guida.
La scelta delle librerie è dettata dalla mia personale esperienza
nello sviluppo software su piattaforma Android.
Per ogni libreria verrà prima introdotto il problema che gestisce e subito dopo vedremo
come la libreria lo affronta:
- Binding dei widget della user interface: il collegamento tra widget presenti su
un layout ed il relativo componente sottostante (activity o fragment) è un operazione tediosa che facilmente
introduce fastidiosi bug.
Per rendere meno gravosa questa attività utilizzeremo ButterKnife. - Caricamento delle immagini: la visualizzazione di immagini è un altro
task che il developer è tenuto spesso a dover affrontare.
In alcuni casi le immagini sono già presenti in modo statico
nell'applicazione, ma a volte è necessario utilizzare la
connessione di rete per recuperare da qualche server remoto le
immagini necessarie. Vedremo come recuperare e visualizzare le immagini con Glide. - Comunicazione tra componenti: uno degli aspetti più delicati nella progettazione e realizzazione di
applicazioni su
piattaforma Android è proprio la definizione delle iterazioni tra Activity, Fragment
e Service. L'uso degli Intent è sufficientemente semplice, ma all'ingrandirsi delle dimensioni
dell' applicazione si corre il rischio di perdere la "bussola". Per questa tematica utilizzeremo EventBus. - Persistenza dei dati: le principali modalità per rendere persistente un dato in locale consiste nell'uso di file,
di una
base dati SQLite o delle Shared Preferences. Affronteremo la persistenza con la libreria
Kripton. - Utilizzo di servizi WEB: su piattaforma mobile
i servizi SOAP non vengono praticamente utilizzati, quindi parleremo
esclusivamente di servizi REST. Tipicamente, nel caso in cui lato
back end siano presenti servizi SOAP, si utilizzano sistemi o
sottosistemi bridge al fine di convertire i servizi SOAP in REST e viceversa. I
servizi REST si basano su HTTP e sul formato dati JSON. In questa
parte della guida vedremo la libreria Retrofit. - Autenticazione: nei progetti con la necessità di salvare dati associati all'utente,
una delle prime necessità è quella di dover identificare
quest'ultimo. Capita molto spesso di appoggiarsi ad Identity Provider
ben noti quali ad esempio Facebook, Twitter e Google+. Affronteremo
questa tematica con Scribe. - Gestione dei permessi: chi ha già sviluppato
avendo come target Android 6 "Marshmallow" o superiore si sarà sicuramente
scontrato con l'esigenza di far chiedere all'applicazione i
permessi necessari al funzionamento in runtime. Affronteremo questo tema con
PermissionsDispatcher.
L'insieme delle librerie che verrà presentato è costituito esclusivamente da
soluzioni Open Source i cui sorgenti sono disponibili su GitHub. Tali librerie possono essere utilizzate insieme
senza incompatibilità.
La presentazione delle varie librerie sarà accompagnata da piccoli progetti d'esempio.