Chapter - Server users.dimi.uniud.it

Sistemi Mobili e Wireless
Android – Introduzione alla
piattaforma
Stefano Burigat
Dipartimento di Matematica e Informatica
Università di Udine
www.dimi.uniud.it/burigat
[email protected]
Cos'è Android?
• Android è una piattaforma software open-source creata
da Google e dalla Open Handset Alliance
• E' una piattaforma originariamente mirata a dispositivi mobili
quali gli smartphone, estesa successivamente ad altri
dispositivi (tablet, TV), ma potenzialmente utilizzabile in molti
altri mercati “embedded”
2
www.android.com
Open Handset Alliance
• A group of technology and mobile companies that have come
together to accelerate innovation in mobile and offer consumers a
richer, less expensive, and better mobile experience
(da: www.openhandsetalliance.com)
3
Versioni Android
4
Versioni Android
5
Schermi Android
6
Schermi Android
7
Perchè Android?
• Piattaforma aperta e open-source
– Costruttori possono adattarla alle loro esigenze
– Sviluppatori non si legano ad una piattaforma chiusa
– Chiunque può contribuire al suo sviluppo
• Ricchezza di funzionalità per gli sviluppatori
– Disponibilità di API e servizi predefiniti
– Facile accesso alle funzionalità “di basso livello” del dispositivo
(es., chiamate, SMS, GPS, camera, sensori)
• Architettura basata su componenti
– Ogni applicazione può sfruttare componenti messi a
disposizione da altre applicazioni, in modo simile ai mash-up
su Internet
8
Perchè Android?
• Gestione automatica del ciclo di vita delle applicazioni,
ottimizzata per dispositivi con risorse limitate
• Nessuna differenza tra le applicazioni “core” e quelle
sviluppate da terze parti, tutte hanno gli stessi “diritti”
• E' possibile personalizzare ogni aspetto (software) di un
dispositivo Android (es., sostituire le applicazioni “core” con
altre preferite)
• Supporto di ricche funzionalità multimediali e (relativamente)
facile portabilità su dispositivi con caratteristiche differenti
(es., input, schermi, ...)
9
Caratteristiche Android
•
Application framework che permette il riuso e la sostituzione di componenti
•
Macchina virtuale Dalvik ottimizzata per dispositivi mobili
•
Browser Web integrato basato sul motore open-source WebKit
•
Libreria grafica 2D ottimizzata; grafica 3D basata su OpenGL ES (accelerazione
hw opzionale)
•
Data storage strutturato tramite database SQLite
•
Supporto a formati audio e video comuni (MPEG4, H.264, MP3, AAC, AMR,
JPG, PNG, GIF)
•
Bluetooth, EDGE, 3G, 4G, Wi-Fi, NFC (dipendente dall'hw)
•
Camera, GPS, bussola, accelerometro, ... (dipendente dall'hw)
•
Ricco ambiente di sviluppo che include emulatore, strumenti di debugging,
profiling di memoria e prestazioni, plugin per Eclipse
10
Il “sistema” Android
11
Perchè Linux?
• Il kernel di Linux è una piattaforma stabile e collaudata che
fornisce un ricco insieme di funzionalità (gestione driver,
gestione memoria, gestione processi, ...)
• In un dispositivo mobile quale uno smartphone, l'affidabilità è
più importante delle prestazioni, perchè la comunicazione è
l'utilizzo primario di un telefono
• Linux fornisce un'hardware abstraction layer che consente di
mantenere inalterati gli strati superiori dell'architettura anche
se vi sono modifiche a livello dell'hardware
• All'apparire sul mercato di nuove periferiche, è possibile
supportarle implementando dei driver al livello del kernel
come in altre piattaforme basate su Linux
12
Perchè la macchina virtuale Dalvik?
• Le applicazioni di terze parti così come quelle “core” di
Android sono scritte in Java e compilate in bytecode (.dex)
• Il bytecode viene interpretato a runtime dalla macchina
virtuale Dalvik
• E' possibile avere più macchine Dalvik attive allo stesso
tempo
• Il bytecode Dalvik è logicamente equivalente al bytecode
Java ma consente di:
– Ottimizzare le prestazioni per dispositivi mobili (batteria, memoria,
CPU, ...)
– Eseguire applicazioni in un ambiente libero dalle restrizioni della
licenza Sun/Oracle
– Sfruttare i miglioramenti apportati dalla comunità
13
ART
• A partire da Android 4.4, esiste una ambiente di runtime
alternativo a Dalvik chiamato ART (Android Runtime)
• Al contrario di Dalvik, che sfrutta la compilazione JIT (Just in
Time) al lancio delle applicazioni, ART introduce la
compilazione AOT (ahead-of-time) al momento
dell'installazione delle applicazioni
• L'utilizzo di ART permette migliori prestazioni ed un minor
consumo della batteria (dovuto alla minore quantità di
operazioni che devono essere svolte al lancio di
un'applicazione)
• ART è disponibile come technology preview in Android 4.4 e
rimpiazzerà Dalvik a partire da Android L
14
Android vs. Java
• Android supporta il linguaggio Java standard ed un sottoinsieme
delle librerie Java Standard Edition 5-6-7
• Vengono supportati tutti i tipi intrinseci (byte, char, short, int, long,
float, double, Object, String, and arrays) ma è preferibile evitare
l'utilizzo intenso dei tipi floating-point
• Thread multipli sono supportati tramite time-slicing
– tipicamente le applicazioni utilizzano 2 thread (UI, operazioni lente)
– è supportata la sincronizzazione
• La reflection (capacità degli oggetti di esaminare se stessi a
runtime) è supportata ma è costosa in termini di risorse
computazionali
– La reflection può permettere, ad esempio, di verificare la presenza di
specifiche classi, metodi, interfacce (consentendo di scrivere un
unico codice per versioni diverse di Android)
15
Android vs. Java
• Package supportati:
16
Android vs. Java
• Package di terze parti:
17
Android vs. Java
• Package non supportati:
18
Applicazioni Android: processi
• Ogni applicazione corrisponde ad un utente Linux diverso e
possiede un Linux user ID
• Ogni applicazione Android viene eseguita all'interno di un
differente processo Linux all'interno di una differente
macchina virtuale (tranne rare eccezioni)
• Ogni applicazione ha accesso solamente ai componenti di
cui ha bisogno per funzionare e nulla più
• Un'applicazione può chiedere di accedere a dati e servizi
esterni (contatti, SMS, camera, …) tramite un meccanismo
basato su permessi espliciti richiesti all'utente
19
Applicazioni Android: componenti
• Un'applicazione Android consiste nella combinazione di uno
o più dei seguenti componenti:
– Activities: ogni activity corrisponde grossomodo ad una
schermata di un'applicazione
– Services: componenti che funzionano in background senza
interazione diretta con l'utente
– Broadcast receivers: componenti che consentono di rispondere
ad eventi globali ed attivare altri processi/componenti
– Content providers: consentono la condivisione di dati tra
applicazioni (ma ogni applicazione può avere i suoi dati privati)
20
Applicazioni Android: intent
• Ogni applicazione Android può sfuttare i componenti di altre
applicazioni
– Ad esempio, se un'applicazione ha bisogno di catturare una
foto può sfruttare un componente già pronto di un'altra
applicazione che fa proprio quello
• Poichè ogni applicazione gira in un processo separato,
un'applicazione non può attivare direttamente un
componente di un'altra applicazione
• Per attivare un componente, un'applicazione manda un
messaggio di richiesta al sistema Android tramite il
meccanismo degli intent
• Il sistema Android si occuperà di attivare il componente
adatto alla richiesta
21
Applicazioni Android: intent
• Activities, services e broadcast receivers vengono attivati
mediante intent
• Ogni intent definisce un messaggio per attivare uno specifico
componente o uno specifico tipo di componente
– “Voglio vedere i dati relativi a questo contatto”
– “Apri il seguente sito web”
– “Attiva questo componente”
• Per quanto riguarda activities e services, un intent definisce
un'azione da eseguire e può specificare i dati su cui agire
• Per i broadcast receivers, l'intent definisce semplicemente il
messaggio di cui viene fatto il broadcast (es., batteria in
esaurimento)
22
Applicazioni Android: ciclo di vita
• Il ciclo di vita delle applicazioni viene gestito autonomamente
da Android in base alle azioni di navigazione degli utenti ed
alle risorse disponibili nel sistema
• Gli utenti non si accorgono di come i processi vengono
gestiti dal sistema
http://www.youtube.com/watch?v=fL6gSd4ugSI&feature=channel
23