dal 2015 - visita n. 1005
Le macchine Android
Le macchine Android

 

Le macchine Android

Prima di iniziare a programmare le app è necessario conoscere a grandi linee il funzionamento di una macchina Android. La figura sottostante illustra i concetti di base con il classico schema, a 'livelli', di una macchina da calcolo moderna.

I due livelli inferiori, indicati con due gradazioni di grigio, sono caratteristici di ciascuna macchina e dipendono completamente dai progettisti della casa costruttrice.

Tutti i livelli colorati sono, invece, costituiti da 'software', ossia da insiemi di programmi (raccolte di apposite istruzioni) che, complessivamente, faranno apparire all'utente finale delle macchine facili da usare, e simili nel comportamento, anche se costruite con materiali diversissimi tra di loro.

A partire dal secondo livello (firmware), fino all'ultimo (applications), ciascuno di essi deve dialogare sia con il sottostante sia con quello immediatamente sopra. L'ultimo livello è quello che dialogherà superiormente con l'utente finale.



Hardware - Ogni gruppo di progettisti individua i componenti elettronici con cui costruire la macchina, per esempio: il modello di processore, le tipologie di memoria, le interfacce con l'utente (schermo, touch, microfono, audio). Le scelte sono libere ed orientate essenzialmente all'economia del prodotto finale, alle prestazioni, alla compatibilità di interazione tra i vari componenti. L'insieme di tutte queste cose è ciò che generalmente si intende per hardware, e costituisce il primo livello, la base di partenza su cui poggiare tutti gli altri strati o livelli.


Hardware parziale del Galaxy S5


Firmware - Si tratta del software, scritto dai progettisti delle macchine, necessario a far comunicare la componentistica del livello Hardware con il livello del Linux Kernel in modo da rendere indistinguibili per il kernel le differenze tra componenti corrispondenti di macchine diverse. Ad esempio, se il kernel deve pilotare un dispositivo audio lo deve poter fare senza curarsi di come effettivamente sia fatto quel tale dispositivo, ma supponendo solo che abbia delle caratteristiche standardizzate: indirizzo della sua posizione, abilitazione-disabilitazione, controllo del volume, e così via.
E' proprio grazie al firmware che le caratteristiche della componentistica hardware vengono opportunamente standardizzate consentendo al kernel di ignorare le differenze hardware tra una macchina e l'altra.

Linux Kernel - E' il nucleo centrale su cui si basa il sistema operativo, questo livello contiene tutti i software per pilotare (driver) i vari componenti hardware generalizzati di una macchina Android. Come si vede dalla figura, risultano elencati i principali dispositivi: display, fotocamera, bluetooth, memoria flash, sistema di comunicazione interprocessi (IPC), porte usb, keypad, wifi, audio, alimentazione. Ma ovviamente ne vengono aggiunti altri man mano che aumentano le esigenze dei prodotti.

Le versioni di Linux utilizzate sono state cambiate man mano che Android si è evoluto e per il fatto stesso che anche Linux negli anni ha avuto notevoli miglioramenti. Ad esempio dalla versione 8.0 (Oreo) di Android la versione minima di Linux deve essere la 4.4. La scelta verso l'utilizzo di un kernel Linux si spiega attraverso la necessità di avere un'alta affidabilità, caratteristica che è la più importante nelle prestazioni di un dispositivo mobile che deve principalmente garantire il servizio di telefonia. Gli utenti si aspettano quindi tale affidabiltà, ma allo stesso tempo hanno bisogno di un dispositivo che possa garantire servizi più evoluti: Linux permette di raggiungere entrambi gli scopi.

Il Linux kernel costituisce il livello di astrazione di tutto l'hardware sottostante. I produttori di telefoni possono quindi intervenire già a questo livello (si tratta, infatti, di software a codice aperto) per personalizzare i driver di comunicazione con i propri dispositivi. Grazie all'astrazione dell'hardware, pertanto, i livelli soprastanti non si accorgono dei cambiamenti hardware, permettendo una programmazione ad alto livello omogenea ed un uso per l'utente finale indipendente dal dispositivo. Una macchina Android, infatti, non è soltanto uno smartphone, ma può essere anche: un tablet, un e-reader, un netbook, un lettore MP4, un dispositivo Internet TV, un dispositivo indossabile, una centralina per auto.
Il sistema operativo Linux, praticamente sconosciuto al grande pubblico dei PC, si sta prendendo una clamorosa rivincita, travestito da Android, nei dispositivi di telefonia mobile e non solo.

Libraries - Si tratta di software che viene condiviso tra varie applicazioni e che fornisce le principali funzionalità del sistema operativo. Queste librerie sono scritte in linguaggio C e C++ e sono frutto del collaudato lavoro del mondo open source. Le principali, indicate indicate in figura, sono brevemente elencate di seguito, ma ce ne sono molte altre.


Application framework - E' il livello di riferimento per gli sviluppatori di app, la cornice al cui interno i programmatori si possono muovere per utilizzare le risorse della macchina Android. Si tratta, in sostanza, dei gestori delle varie risorse: attività, finestre, telefono, notifiche, localizzazione, etc.

Come il firmware fa da mediatore tra l'hardware ed il kernel del sistema operativo, così il framework fa da mediatore tra il sistema operativo e le app. Ad esempio lo sviluppatore non interagisce direttamente con un dispositivo USB, ma attraverso una sua rappresentazione astratta e generalizzata fornita dal framework.

Applications - Siamo al livello più alto, quello che mette in comunicazione l'utente con la macchina Android. In questo ultimo strato ci sono sia le applicazioni (app) già incluse nel dispositivo (browser, telefono, fotocamera), sia quelle che verranno installate successivamente.

Grazie a questa struttura a livelli si comprende come il principale vantaggio di Android, per chi sviluppa app, sia l'approccio unificato, indipendente dall'hardware, che consente alle applicazioni di funzionare su una molteplicità di dispositivi differenti anche se prodotti da costruttori diversi: Samsung, LG, Huawei, Sony, ecc.

















Introduzione
Le macchine Android



Ma io sono costante come la stella polare, che per il suo esser fedele, fissa e inamovibile non ha pari nel firmamento.
William Shakespeare

Valid CSS!
pagina generata in 0.002 secondi