Nelle lezioni precedenti abbiamo acquisito familiarità con l’ambiente di sviluppo Android Studio e abbiamo creato un semplice progetto di prova per analizzare alcuni suoi aspetti. Prima di addentrarci però su concetti più avanzati è opportuno soffermarci un momento su alcuni concetti più astratti che stanno alla base dello sviluppo di applicazioni per Android.
Android è un sistema che comprende un sistema operativo, un ambiente di esecuzione (run-time), middleware, servizi, librerie ed ovviamente applicazioni. Quest’architettura può essere rappresentata, come visto nella prima lezione di questa guida, nel modo seguente
Andiamo ad analizzare gli elementi fondamentali di tale architettura.
LINUX KERNEL
Il Linux kernel è posizionato nella parte inferiore della struttura software Android (che tecnicamente è uno stack). Esso fornisce un livello di astrazione tra l’hardware dei dispositivi ed i livelli superiori dell’architettura, mettendo a disposizione driver per il corretto utilizzo da parte delle app di elementi quali display, fotocamera, audio, tastiera e tutti i componenti fondamentali di un dispositivo.
ANDROID RUNTIME
Un’applicazione Android viene compilata in un formato bytecode intermedio, denominato DEX. Quando successivamente essa viene caricata su un dispositivo l’Android Runtime utilizza un processo di compilazione denominato AOT (Ahead-of-Time) per tradurre il bytecode nel formato delle istruzioni native richiesto dal processore del dispositivo. Questo formato è conosciuto come ELF (Executable and Linkable Format). Tutte le volte che successivamente l’applicazione viene lanciata l’ELF è già in esecuzione determinando una maggiore velocità dell’applicazione e prolungando la durata della batteria del dispositivo. Quest’approccio si differenzia dalla compilazione JIT (Just-in-Time), utilizzata nelle versioni precedenti di Android, in cui il bytecode veniva compilato in una nuova macchina virtuale ogni volta che l’applicazione andava in esecuzione.
LIBRERIE
Oltre alle librerie standard Java, l’ambiente di sviluppo Android ne include anche altre denominate appunto Android Libraires. Si tratta di un insieme di librerie Java specifiche per Android.
Quelle più importanti sono:
android.app -Fornisce l’accesso al modello applicativo e costituisce la base di tutte le applicazioni Android
android.content – Facilita l’accesso ai contenuti, consentendo la comunicazione tra applicazioni e componenti
android.database – Permette di accedere ai dati pubblicati da un fornitore di contenuti e include classi per la gestione di database SQLite
android.graphics – API grafica bidimensionale per il rendering di colori, punti, canvas ed altri elementi grafici
android.hardware – API per l’accesso ad elementi hardware quali accelerometro e sensori
android.os – Fornisce funzionalità per l’utilizzo di servizi base del sistema
android.media – Fornisce le classi per abilitare la riproduzione di audio e video
Esistono tante altre librerie per approfondire la conoscenza delle quali potete consultare la documentazione ufficiale Android.
APPLICATION FRAMEWORK
L’Application Framework è un insieme di servizi che costituisce l’ambiente in cui le applicazioni Android vengono eseguite ed è costituito dai seguenti componenti:
Activity Manager – Controlla i vari aspetti del ciclo di vita di un’applicazione e lo stack delle activity
Content Providers – Consente alle applicazioni di pubblicare e condividere dati con altre applicazioni
Resource Manager – Consente l’accesso a risorse quali stringhe, impostazioni e layout
Notifications Manager – Consente alle applicazioni di far visualizzare agli utenti allarmi e notifiche
View System – Un insieme di componenti utilizzati per creare le interfacce utenti
Package Manager – Sistema tramite cui le applicazioni possono reperire informazioni sulle altre applicazioni attualmente installate su un dispositivo
Telephony Manager – Fornisce informazioni alle applicazioni circa i servizi telefonici disponibili
Location Manager – Fornisce l’accesso ai servizi di localizzazione da parte delle applicazioni
APPLICAZIONI
In cima all’architettura Android si trovano infine le applicazioni. Esse comprendono sia le applicazioni native della versione di Android in uso sul dispositivo, sia le applicazioni di terze parti installate dall’utente sul dispositivo.