Linux Kernel
Android si basa sul solido e consistente Linux Kernel in modo che un vero e proprio sistema operativo fornisse la virtualizzazione dell'hardware sottostante. L'architettura complessiva del sistema è rappresentata dalla figura seguente.
Linux è usato per la gestione della memoria, per il Power Menagement, per i servizi di connessione ed altri ancora. Nonostante ciò Android è strutturato in modo che l'utente finale non possa vedere Linux, ne avere i permessi di root. Lato programmazione gli utenti non potranno mai richiamare Linux direttamente, anche se tramite la shell adb si possono dare comandi sul dispositivo.
Subito dopo troviamo le librerie native, tutte scritte in C o C++ compilate ed installate dai produttori di hardware presente nello smartphone. Sono tutte librerie opensource.
Analizziamo alcuni dei più importanti blocchi:
- Surface Manager: ha la responsabilità di gestire le View. In pratica è un window manager come Vista o Compiz, ma molto più semplice. La sua responsabilità primaria è gestire lo schermo affinchè ongi activity possa "disegnare" il proprio layout ogni volta che viene richiamata.
- OpenGL ES: un importante caratteristica di Android è quella di poter sfruttare sia la grafica 2D che quella 3D. La libreria che si occupa della grafica 3D è la OpenGL ES che è una versione ridotta delle OpenGL adatta per i dispositivi mobile con scarse risorse di memoria. Per la grafica 2D c'è una libreria in c++ (SGL) che è un motore ottimizzato per il rendering grafico.
- Media Framework: gestisce i codec per i diversi formati di acquisizione audio e video. Si basa sulla libreria OpenCore e gestisce codec come Mpeg4, Mp3, AAC, AMR, H.264, JPG,PNG...
- SQLite: al fine di utilizzare un DBMS relazionale la libreria SQLite è stata inserita nel core di Android inquanto compatta e diretta. SQLite è diretto perchè non gestisce alcun processo separato dall'activity che lo usa in quanto fa parte di quel porcesso. SQLite è compatto perchè è realizzato in C ed utilizza poche funzioni per la gestione della memoria.
- WebKit: per l'utilizzo delle risorse HTML, CSS, JavaScript etc, viene usato un web engine simile a quello presente nei browser Chrome, Safari, e nei dispositivi Nokia.