Upload
emanuel-di-nardo
View
70
Download
1
Embed Size (px)
Citation preview
Android
Introduzione al sistema operativo Android!
Valentina Pelliccia, Emanuel Di Nardo GDG Campania
Introduzione
● Introduzione al SO
● Architettura di sistema
● SDK e Strumenti di sviluppo
● Elementi principali
● Gestione della risorse
● Demo
Outline
Un dispositivo mobile rispetto ad un dispositivo desktop:
● Limitatezza delle risorse
● Alimentazione a batteria
● Differenti protocolli di trasferimento dati
● Ridotte dimensioni del display
Piattaforme per dispositivi mobili
Nielsen : dati relativi alla diffusione e distribuzione dei principali sistemi operativi mobile e brand nel mercato Americano (2014).
1%3%2%
42%52%
ANDROID IOSBLACKBERRY WINDOWS PHONEOTHERS
Perché Android:
● Radici ben salde nel mondo dell’open - source
● Forte riscontro di pubblico
Android è un sistema operativo open-source basato su kernel Linux e progettato per
dispositivi mobili come smartphone e tablet.
Il progetto Open Source Android guidato da Google dispone di una vasta comunità di
sviluppatori divenendo in pochi anni uno dei leader nel mercato mobile.
!!!● 2003: L’azienda Android della Silicon Valley sviluppa il SO Android
● 2005: L’azienda viene acquisita da Google
● 2007: Google fonda il consorzio Open Handset Alliance OHA
● 2009: Viene rilasciata la versione 1.5 denominata “Cupcake”
Che cos’è Android?
1.5 1.6 2.0/2.1 2.2 2.3 3.0/3.1 4.0 4.1 4.4 5 Lollipop … 3/11/2014
Android OS
● Application
● Application Framework
● Android Runtime
● Libraries
● Kernel Linux
Architettura di sistema
Android dispone di base di un
insieme di applicazioni:
!● Client eMail
● Agenda
● Rubrica
● Mappe
● Browser Web
● ….
ApplicationAPI di alto livello
L’Application Framework fornisce
alle applicazioni i seguenti servizi: !● View
● Content Provider
● Resource Manager
● Notification Manager
● Activity Manager
● ….
Application FrameworkLibrerie in C/C++ che
rappresentano il core di Android
Le più importanti sono: !● Standard C Library
● Media Framework
● Surface Manager
● Webkit
● Librerie FreeType
● SQLITE
● SSL (Secure Socket
Layer)
Librerie Native
● Linguaggio di programmazione JAVA
● Core Libraries
● Dalvik Virtual Machine
● Ottimizzata per dispositivi
Embedded
● Esegue un bytecode (Dalvik
executable .dex)
● Register Based
Android Runtime● Gestione dei driver HW
(videocamera, display, scheda
wireless…)
● Sicurezza
● Gestione della memoria
● Stack di rete
● Gestione dei processi
Il kernel funge da livello di astrazione tra
l’hardware e il resto dello stack
software.
Kernel Linux
ART
Software Development Kit
● Completo
● Gratuito
● Versione per tutti i SO desktop
● Unico requisito: JDK
● Android Virtual Device
!!Download
● SDK: http://developer.android.com/sdk/index.html
● Android Studio: http://developer.android.com/sdk/installing/studio.html
● Android Developer Tools: http://developer.android.com/tools/help/adt.html
Software Development Kit
Le caratteristiche di un’App Android
1. Ogni app gira in un proprio processo Linux
2. Ogni processo ha una propria VM
3. Ogni app può utilizzare componenti di altre App
4. Pacchetti APK
!!!!!
Sviluppo di un’applicazioneGli elementi di base per lo sviluppo di un’App Andoid
1. Activity
2. Intent
3. Broadcast Receiver
4. Service
5. Content Provider
!!!!!
Componenti di base
L’Activity è una finestra che contiene l’interfaccia
dell’applicazione, il suo scopo è gestire
l’interazione tra l’utente e l’app.
● Interazione con l’utente
● Concetto di Schermata
● Interfaccia Utente composto da View
● Ciclo di vita di un’activity
● Acitivity stack
● Deriva dalla classe base android.app.Activity
!
Activity
Simile al concetto di Activity, ma permette la
visualizzazione di elementi grafici totalmente differenti
● Hanno un proprio gestore
● Vengono inserite all’interno delle activity
● Fragment stack
● Possono essere presenti più fragment
contemporaneamente
● Possono essere etichettati per riutilizzi futuri
● Possono accede all’activity in cui risiedono
!!
Fragment
Un Intent descrive un’azione all’interno dell’applicazione.
Rappresenta un messaggio in grado di attivare i tre componenti base di un’applicazione: Activity,
Service, Broadcast Receiver
!!!La struttura dati dell’Intent si compone dell’azione da effettuare e dei dati su cui agire.
Un intent può essere
● Esplicito
● Implicito
A ciascun intent è possibile associare informazioni che vengono trasportate al componente di
destinazione (metodi PUT e GET)
Intent
Aiutano il sistema a scegliere la componente giusta da assegnare ad un’azione
(Intent).
Una componente viene scelta solo se supera la verifica delle componenti del filtro
!● Azione
● Categoria (non obbligatoria)
!!
Intent-Filter
La classe BroadcastReceiver viene utilizzata quando si vuole intercettare e gestire
un messaggio inviato a tutta l’applicazione.
I messaggi vengono smistati attraverso gli intent-filter.
● I messaggi vengono smistati attraverso gli intent-filter
● I receiver devono essere registrati (e rimossi)
manualmente dalla componente che ne fa uso
● Non hanno interfaccia grafica
Broadcast Receiver
Permettono di eseguire operazioni in background, anche quando l’utente non sta interagendo
direttamente con essa.
● Non hanno interfaccia grafica
● Elaborazione in background
● Ciclo di vita di un service
!!!
● Quando usare un service?
● Operazioni bloccanti o lunghi! (Aggiungere un thread)
● Task continui utilizzati da più componenti contemporaneamente
● Senza interazione utente
Service
Un Content Provider è una classe che implementa un insieme di metodi che
permette all’applicazione di salvare e recuperare in modo permanente i dati.
!!!!!!Solitamente tali dati vengono memorizzati all’interno del file-system oppure in un
database SQLite.Inoltre, possono essere condivisi con le altre applicazioni.
Content Provider
● Ambiente di sviluppo specifico per Android
● Basato su IntelliJ e sviluppato da Jetbrains
● Include tool grafici (UI Designer, Nine-Patch Editor, etc…)
● Adopera Gradle come sistema di building
● Si può utilizzare il maven central repository per aggiungere le librerie di
supporto.
Android Studio
● File di tipo XML
● Non ricompilazione del codice a valle di modifiche
alle risorse
● Rigorosa organizzazione della struttura del progetto
(codice e file) in opportune cartelle
● java
● res
● Drawable
● Layout
● Menu
● Values
Gestione delle risorse
● Contiene le informazioni relative all’intera
applicazione
● Tutte le risorse utilizzate devono essere inserite
nel manifest
● Include i permessi applicazione
!!!!!
AndroidManifest.xml
● Contiene gli identificativi di ogni risorsa
dell’applicazione
● Viene generato e aggiornato automaticamente
dall’IDE
● NON DEVE ASSOLUTAMENTE ESSERE
MODIFICATO!!!
!!!
!
R file
Demo
<Thank You!>
email:
G+ plus.google.com/+EmanuelDiNardotwitter @bboymasa
website http://emanueldinardo.com
[email protected] [email protected]
@smartvalentina
plus.google.com/+ValentinaPelliccia