android4u - studentingegneria · o. ncreate(bundle): e' invocato quando l'activity viene...
TRANSCRIPT
Relatori:Ing. Saverio LemmaIng. Marco Lombardi
@ Centro ICT per i Beni Culturali
Android4U
2016
Android: introduzione e concetti chiave• Storia e caratteristiche principali• Architettura• Elementi di base• Sicurezza e permessi
Nativo o ibrido: approcci a confronto• Panoramica sui sistemi operativi mobile• App native, web application e app ibride• Apache Cordova
Sommario
Android4U
Free● https://developer.android.com/training/index.html
Books● Android Guida per lo Sviluppatore, APOGEO
● Beginning Android 3, APRESS
● Advanced Android Development, MURPHY
Bibliografia
Android4U
La rivoluzione dei dispositivi mobili 1/2
Android4U
Il dispositivo che fino a qualche anno fachiamavamo cellulare oggi è a tutti gli effetti unPersonal Computer.
La vera rivoluzione dal punto di vista degli utenticonsiste nel fatto che uno smartphone è molto piùPersonal di un PC perché ci segue ovunque.
Gli sviluppatori possono finalmente creareapplicazioni che non devono fare più i conti con ilconcetto di "risorse limitate".
La rivoluzione dei dispositivi mobili 2/2
Android4U
Dal punto di vista dei produttori la rivoluzioneconsiste nel fatto che in passato ogni produttoredi dispositivi mobili ha realizzato un propriosistema operativo, ambiente di sviluppo,linguaggio, tool: nessuno si è affermato comestandard.
Il progetto Android nasce quindi da una esigenzadi standardizzazione su iniziativa di Google.
http://www.android.com/
Android è la prima piattaforma software open perdispositivi mobile
Android è uno stack software per dispositivi mobilied include un sistema operativo, un middlewareed un insieme di applicazioni chiave.
Android è stato sviluppato da Google Inc. e da unconsorzio di aziende chiamato Open HandsetAlliance
Cosa è Android?
Android4U
• Utilizza tecnologie open (linux kernel 2.6 e 3.x dalla4.0).
• Le librerie e le API utilizzate per realizzare Android sonole stesse che possiamo usare per le nostre applicazioni.
• Il kernel linux è rilasciato sotto GNU GeneralPersonal Licence (GPL).
• La piattaforma Android è rilasciata sotto Open SourceApache Software Licence 2.0 (ASL).
Android4U
Perchè Open?
http://www.openhandsetalliance.com
●Operatori mobili: Telecom, Vodafone, T-Mobile...●Produttori di chip: Arm, Intel, NVIDIA...●Produttori di telefonini: Toshiba, HTC, Acer, Sony,...●Aziende sviluppatrici di software: Google, eBay,Omron, ...●Aziende di commercializzazione: Accenture,Aplix...
Android4U
Open Handset Alliance
Un po’ di storia
Android4U
9
https://www.android.com/history/
Android4U
Platforms
I requisiti minimi di ogni versione rilasciata, sonodefiniti mediante l'Android Compatibility Programche consiste di tre componenti chiave:
● Il codice sorgente dello stack software Android Il “Compatibility Definition Document”, che●
descrive le specifiche di compatibilità● La “Compatibility Test Suite”, che rappresenta il
"meccanismo" di compatibilità● Il più recente ACP si riferisce alla 4.4
Android4U
Requisiti minimi 1/2
Per Android 2.2 alcuni dei requisiti minimi sono:
Memoria >= 128MB (kernel) + 150MB (/data) +1GB (Application/SD Card) FotoCamera >= 2 megapixel
Display >= 2,5''
Per Android 4.0 alcuni dei requisiti minimi sono:
Memoria >= 340MB (kernel) + 350MB (/data) +1GB (Application(SD Card) FotoCamera >= 2 megapixel
Display >= 2,5''Android4U
Requisiti minimi 2/2
• Il codice sorgente di Android può essere scaricatoseguendo le indicazioni descritte in
http://source.android.com/source/downloading.html• La versione di Android più recente per la
quale è disponibile il codice sorgente è la 6.0(API level 23)
Codice sorgente Android
Android4U
• Android include un ”application framework”che permette il riutilizzo dei componentisviluppati.
• La Dalvik Virtual Machine ed il nuovoAndroid RunTime sono ottimizzati perl'esecuzione su dispositivi mobili.
• Il browser web integrato è basato sulsoftware open-source ”WebKit”.
• La grafica 2D è basata su unalibreria appositamente sviluppata.
Caratteristiche principali 1/3
Android4U
• La grafica 3D è basata sulla specifica OpenGL ES 1.0e l'accelerazione hardware è opzionale.
• Per l'immagazzinamento strutturato di dati si usa SQLite.• Sono supportati i più comuni formati audio e video
(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF).
Android4U
Caratteristiche principali 2/3
• Può supportare GSM, EDGE (2.5G), UMTS(3G), LTE(4G), Bluetooth/BTLE (Low Energy),Wi-Fi, NFC.
• Prevede anche il supporto per fotocamera, GPS,bussola e accelerometro, sensore prossimità,ambient light sensor, finger print scanner.
• Fornisce un ricco ambiente integrato di sviluppoche include un emulatore, strumenti per ildebugging e il profiling di memoria e prestazioni,e più ambienti di svilluppo specifici.
Android4U
Caratteristiche principali 3/3
http://source.android.com/source/index.htmlAndroid4U
Architettura di Android
Android4U
Architettura di Android
I componenti mostrati nel precedente schema dell'architettura verranno ora analizzati uno ad uno:• Kernel Linux• Librerie• Android Runtime• Application Framework• Applicazioni
Componenti del sistema
Android4U
Kernel Linux Interfacciare HW e librerie Servizi base come sicurezza, gestione memoria, gestione processi, gestione driver HW Comunicazione tra vari componenti (1 app = 1 processo)
Android4U
Architettura di Android (2)
Librerie Forniscono funzionalità CORE di Android Si riferiscono a progetti Open Source Sono scritte in C/C++
Android4U
Architettura di Android (3)
Surface Manager Gestire view Coordinare varie finestre Disegnare su buffer e visualizzare (tecnica double
buffering) 2D + 3D
Android4U
Architettura di Android (4)
OpenGL | ES Permette di accedere a acceleratore grafico Versione mobile di OpenGL 1.3 Bassa memoria 1-64Mb
Android4U
Architettura di Android (5)
SGL Versione mobile render grafica 2D Usata da Surface Manager e Window Manager
Android4U
Architettura di Android (6)
Media Framework Gestire CODEC per acquisizione e riproduzione audio e
video Basato sulla libreria open source OpenCore di PacketVideo MPEG4, H.264, MP3, AAC, AMR, JPG e PNG
Android4U
Architettura di Android (7)
FreeType Gestione dei font (http://freetype.sourceforge.net) Piccole dimensioni, molto efficiente, altamente
customizzabile e portabile
Android4U
Architettura di Android (8)
SSL Gestione Secure Socket Layer / Connessioni sicure
Android4U
Architettura di Android (9)
SQLite Gestione persistenza DBMS relazionale, compatto (C), in-process, senza
configurazione e transazionale
Android4U
Architettura di Android (10)
WebKit Browser integrato (http://webkit.org) Utilizzato da Safari e Chrome Personalizzato per mobile
Android4U
Architettura di Android (11)
libc Libreria standard C libc ottimizzata per i dispositivi basati su Linux
Android4U
Architettura di Android (12)
Android Runtime
Funzionalità delle librerie base di JAVA (Core Libraries) Ogni applicazione ha il suo processo con instanziazione
della Dalvik Virtual Machine. Apartire dalla versione 4.4 è stato introdotta la nuovaART VM che hasostituito la DVM.
Android4U
Architettura di Android (13)
Android4U
Core LibrariesLe Core Libraries forniscono molte delle funzionalità delle analoghelibrerie disponibili per il linguaggio di programmazione Java.
• Rappresentano un insieme di librerie molto ”vicine” alla DalvikVirtual Machine ed estratte in parte dal progetto Apache Harmony(2007) ed in parte appositamente adattate.
• Sono distribuite in tre categorie:
1. DalvikVM specific libraries (System Info, Debugging) 2. Java Compatibility libraries (Base and utility classes) 3. Thirty Part Libraries (Apache HttpClient 4.0)
La Dalvik VM è stata ottimizzata in modo cheuno stesso dispositivo embedded sia in grado di eseguirne più istanze in modo efficiente.
La Dalvik VM esegue un bytecodeincompatibile con quello della Java VM e cheviene detto Dalvik Executable (.dex), ottimizzato per avere una occupazione dimemoria minima.
La Dalvik VM è register-based (mentre laJava VM è stack-based).
Android4U
Dalvik VM (1/2)
Il ciclo di sviluppo prevede che una applicazione venga dapprima sviluppata in Java, e successivamenteun tool (dx) converte i file.class, ottenuti dalla normale compilazione java, in file ottimizzati .dex
Dalvik VM (2/2)
Android4U
Application Framework Fornisce l’accesso alle librerie attraverso API. L’architettura delle applicazioni è progettata per semplificare il riutilizzo dei componenti. Scritto in JAVA. Views (liste, text box, bottoni), Content providers (Apps data), Resource Manager
(immagini, localized strings), Notification Manager (barra di stato), Activity Manager (navigazione app)
Android4U
Architettura di Android (14)
Activity Manager Non solo visualizzazione schermata, ma lo strumento
attraverso il quale l’utente interagisce con l’applicazione Organizzazione in uno stack a seconda dell’ordine
Android4U
Architettura di Android (15)
Package Manager Gestire il ciclo di vita delle applicazioni nel dispositivo XML di configurazione (AndroidManifest) Informazioni sul layout o su aspetti di sicurezza...
Android4U
Architettura di Android (16)
Window Manager Gestire le finestre delle diverse applicazioni gestite da processi
diversi Astrazione Surface Manager
Android4U
Architettura di Android (17)
Telephony Manager Gestire funzionalità di un telefono come, ad esempio, iniziare
una chiamata, o di verificare lo stato della chiamata stessa.
Android4U
Architettura di Android (18)
Content Providers Gestire la condivisione di informazioni tra i vari processi. Repository condiviso con cui le diverse applicazioni possono
interagire inserendo o leggendo informazioni.
Android4U
Architettura di Android (19)
Resource manager Gestione di risorse appartenenti ad un’applicazione (immagini,
file di configurazione o di properties). Trasformazione file in contenuti binari ottimizzati per un
dispositivo.
Android4U
Architettura di Android (20)
View System Grafica di un’applicazione per Android: è composta da quelle che
saranno specializzazioni della classe View (griglie, text-box, pulsanti). Renderizzazione dei componenti grafici, nonché gestione degli eventi
associati.
Android4U
Architettura di Android (21)
Location Manager Gestione delle mappe Consente la realizzazione di Location Based
Application (LBA)
Android4U
Architettura di Android (22)
Notification Manager Permette a tutte le applicazioni di mostrare avvisi
personalizzati sulla barra di stato. Gestione insieme di strumenti che l’applicazione può
utilizzare per inviare una notifica al dispositivo (es.vibrazione, lampeggiare i LED, visualizzare un’icona).
Android4U
Architettura di Android (23)
Applicazioni Android dispone di base di un insieme di applicazioni:
email, contacts, browser, maps, calendar… Scritte in Java. Nostre App!
Android4U
Architettura di Android (24)
Gli elementi di base per costruire un'applicazionesono
Source: codelearn.org
Android4U
Building blocks
● Le Activity sono l'elemento di base più comune.Rappresentano blocchi logici dell'applicazione edinteragiscono con l'utente mediante i dispositivi diinput dello smartphone.Serve una Activity per ogni schermatadell'applicazione (es. una per comporre unmessaggio, una per consultare la rubrica e unaper le configurazioni).Vengono derivate dalla classe baseandroid.app.Activity.
●
●
●
Android4U
Activity (1/7)
● La propria Activity derivata mostrerà unainterfaccia utente composta da View erisponderà ad eventi.Spostarsi da una schermata all'altra fa avviare unanuova Activity.In certi casi l'Activity chiamata restituirà un valoreall'Activity chiamante (ad esempio una schermatache permette di selezionare una foto restituirà alchiamate la foto scelta).Quando si apre una nuova schermata, quellaprecedente è messa in pausa e inserita in una pila(activity stack).
●
●
●
Android4U
Activity (2/7)
• L'utente può quindi navigare avanti e indietro tra leschermate aperte nell'activity stack.
• Per alcune schermate può essere inappropriato rimanerenell'activity stack, e in questo caso è possibile rimuoverle.
• Android mantiene un activity stack per ogniapplicazione lanciata dalla schermata Home.
source: www.edeureka.co
Android4U
Activity (3/7)
● Pur essendo possibileavviare più applicazionicontemporaneamentesoltanto una puòoccupare il display,mentre le altre saranno”nascoste” inbackgroundQuesto è il motivo percui, il concetto dichiusura è secondario enormalmente nontroveremo il pulsante”Esci”
●
Android4U
Activity (4/7)
Android4U
Activity (5/7)
● onCreate(Bundle): e' invocato quando l'activity viene avviataper la prima volta. Il Bundle savedInstanceState serve perriportare l'Activity nello stesso stato in cui si trovava laprecedente istanza dell'Activity terminata. Activity esistenteonStart(): è invocato quando l'activity sta per esserevisualizzata. Activity visibileonResume(): è invocato non appena l'activity inizia ad"interagire" con l'utente. Activity attivaonPause(): è invocato non appena l'activity sta per essere”ibernata” (per es. e' stata avviata un'altra activity). Activity visibileonStop(): è invocato nel momento in cui l'activity non e' piu'visibile all'utente. Activity esistente
●
●
●
●
Android4U
Activity (6/7)
onRestart(): è invocato quando l'Activity sta per essereriavviata dopo essere stata precedentemente arrestata.onDestroy(): è invocata poco prima che l'Activity siadistrutta.onSaveInstanceState(Bundle): è invocata per salvarelo stato dell'Activity.onRestoreInstanceState(Bundle): è invocata solo sein precedenza è stato salvato uno stato.
Android4U
Activity (7/7)
●
●
●
●
● Con Android 3.0 sono stati introdotti i Fragment.Un Fragment costituisce una porzione di UI di unadata Activity con le seguenti proprietà:
●
● E' caratterizzata da un proprio ciclo di vitaPossiede un proprio inputPuò essere aggiunto e rimosso mentre l'Activity è inesecuzione
●
●
● Per es., una Activity potrebbe includere moltiFragment quando il display è abbastanza ampio,oppure solo alcuni in caso contrario.
Android4U
Activity - Fragment
● Riutilizzo di componenti: quando un’applicazione ha bisogno dieseguire un’operazione, crea un Intent, richiedendo l’utilizzo di unaqualche risorsa, o componente in grado di poterla esaudire.
L'Intent rappresenta un messaggio in grado di attivare i trecomponenti-base di una applicazione: Activity, Service e BroadcastReceiver.Un Intent descrive cosa una applicazione vuole che venga fatto.La struttura dati dell'Intent si compone dell'azione da effettuare e deidati su cui agire.Valori tipici per l'azione sono MAIN (la schermata principaledell'applicazione), VIEW, PICK, EDIT etc.
●
●
●
Android4U
Intent (1/4)
●
Un Intent può essere Esplicito o Implicito:
Esplicito: all'interno del costruttore dell'Intent specifichiamola classe da eseguire (tipicamente una Activity).Nell'esempio seguente è istanziato un Intent in cui èdichiarata una Activity da eseguire.
Intent intent = new Intent(this, SubActivity.class); startActivity(intent);
Intent (2/4)
Android4U
●
●
● Implicito: rappresenta l'essenza della filosofiaAndroid. Un Intent implicito dichiara l'azione daeseguire pur senza sapere chi la eseguirà.Nel seguente esempio è dichiarato un Intentmediante cui avviare una Activity chevisualizzerà il sito definito nell'URI.
●
Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Intent.ACTION_VIEW,uri); startActivity(it);
Android4U
Intent (3/4)
● In generale, potrebbe essere necessario richiedere specifici "permission" per eseguire un particolare IntentTali permessi devono essere dichiarati nelmanifest.xml, ad esempio:
●
<uses-permission android:name="android.permission.INTERNET" />
Intent (4/4)
Android4U
● Una classe correlata si chiama IntentFilter: è unmeccanismo che permette ad un’applicazione di dichiararel’insieme degli Intent che è in grado di gestire.Una Activity che è in grado di mostrare le informazioni dicontatto per una persona pubblicherà un IntentFilter nelquale dirà che sa come gestire l'azione VIEW quandoessa è applicata a dati che rappresentano una persona.Le Activity pubblicano i loro IntentFilter nel fileAndroidManifest.xml.La navigazione da una schermata all'altra viene effettuatarisolvendo gli Intent.
●
●
●
Android4U
Intent Filter (1/2)
<activity android:name=".IntentSample" android:label="@string/app_name">
<intent-filter><action android:name="android.intent.action.MAIN" /><category
android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
Un IntentFilter sempre presente nella nostraapplicazione è il seguente:
● La action dichiara che si tratta di un entry point,mentre la category indica che questo entry pointpuò essere listato nell'Application LauncherOvvero, la nostra Activity si rende disponibile nellahome per essere eseguita mediante click/tapsull'icona relativa
●
Android4U
Intent Filter (2/2)
Per navigare avanti una Activity chiama
startActivity(myIntent);
Il sistema guarda quindi gli IntentFilter per tutte leapplicazioni installate e sceglie l'Activity il cuiIntentFilter è più appropriato per myIntent.
La nuova Activity è informata dell'Intent, e vienequindi lanciata.
Intent - navigazione
Android4U
● Le Activity possono riutilizzare funzionalità di altricomponenti semplicemente facendo una richiestasotto forma di un Intent.Le Activity possono essere sostituite in ognimomento da una nuova Activity con un IntentFilterequivalente.Rif:http://developer.android.com/reference/android/content/Intent.html
●
Il fatto di risolvere gli Intent al tempo di esecuzione soloquando startActivity() viene chiamata comporta almenodue benefici principali:
Intent – esecuzione a run time
Android4U
● Un elemento di base di una applicazione è laclasse BroadcastReceiver definita all'internodel package android.content.Viene utilizzato quando si vuole che parte delcodice della propria applicazione vengaeseguito in risposta ad un evento esterno (es. iltelefono squilla, o una connessione dati diventadisponibile, oppure quando è mezzanotte).Affinché un BroadcastReceiver venga chiamatonon è necessario che la relativa applicazionesia in esecuzione.
●
●
Android4U
Broadcast Receiver (1/2)
• I BroadcastReceiver non hanno interfaccia grafica, ma possonousare il NotificationManager per avvisare l'utente che èsuccesso qualcosa di interessante.
• Anche i BroadcastReceiver come gli IntentFilter sono registratinel file AndroidManifest.xml, ma possono essere ancheregistrati dal sorgente usando la chiamataContext.registerReceiver().
• Le applicazioni possono lanciare i broadcast alle altre conContext.sendBroadcast().
Android4U
Broadcast Receiver (2/2)
● Un altro elemento di base delle applicazioniAndroid è il Service, ovvero del codice senzainterfaccia grafica e sono definiti all'interno delpackage android.app.Un buon esempio è la riproduzione di un branomusicale: poiché si vuole che la riproduzionecontinui anche dopo che l'utente ha cambiatoschermata, non la si può lasciare eseguire aduna Activity ma bisogna chiamareContext.startService() per eseguirla inbackground.
●
Service
Android4U
● Un Service non è un processo separato: in altreparole l'applicazione e il suo servizio sonoeseguiti all'interno dello stesso processo (senon altrimenti specificato)Non è un thread: non è uno strumentomediante cui fare eseguire delle attività al difuori del thread principale
●
Android4U
Cosa non è un Service
● Un Service è uno strumento mediante cuil'applicazione vuol comunicare al sistema cheuna data operazione deve essere eseguita inbackground anche quando l'utente non stainteragendo direttamente con essa.Uno strumento mediante il quale l'applicazionemette a disposizione di altre applicazioni alcunedelle proprie funzionalità. Ciò può essererealizzato invocando una Context.bindService()mediante la quale viene stabilita unaconnessione tra l'applicazione richiedente ed ilservizio richiesto.
●
Android4U
Cosa è un Service
● Quando viene invocato ilmetodo startService() il sistemaverifica se tale servizio è inesecuzione altrimenti esegueonCreate().Successivamente è invocato ilmetodo onStartCommand() e ilservizio è finalmente nello statodi esecuzione dove rimane finoa quando non sarà richiamatostopService() oppure stopSelf().
●
Android4U
Ciclo di vita di un Service (1/2)
onCreate(): a differenza delle Activity non presenta alcunparametro. Creato il servizio viene invocato il metodoonStartCommand(). Viene invocato una sola volta.onStartCommand(): invocato questo metodo il servizioresterà in esecuzione e rimarrà in questo stato fino aquando non sarà invocato stopService() da partedell'Activity che lo ha generato, oppure stopSelf() da partedel servizio stesso. Può essere invocato più volte inseguito all'esecuzione di onStartService() da partedell'Activity.onDestroy(): l'invocazione di stopService() da partedell'Activity produrrà la chiamata di questo metodo delServizio. In seguito a questa chiamata il servizio saràeliminato.
●
●
Android4U
Ciclo di vita di un Service (2/2)
●
● L'ultimo elemento di base è il Content Provider,definito all'interno della classe Android.ContentSolitamente le applicazioni memorizzano i lorodati all'interno del file-system oppure in undatabase SQLite, ma se i dati di unaapplicazione devono essere condivisi con lealtre bisogna usare la classe ContentProvider.Un ContentProvider è una classe cheimplementa un insieme standard di metodi perpermettere alle altre applicazioni di salvare erecuperare dati.
●
●
Android4U
Content Provider
● Per ogni applicazione che viene eseguita,Android avvia un nuovo processo LinuxDi default, tutti i componenti di una dataapplicazione (per es. Activity + Service) sonoeseguiti all'interno dello stesso processoSe al momento di avviare una applicazione esistegià un processo assegnato ad essa perchè unsuo componente è stato eseguito in precedenza,allora tale applicazione sarà eseguita all'internodi questo processo
●
●
Android4U
Applicazioni e Processi (1/3)
● Nel caso in cui la memoria a disposizione pereseguire una applicazione in foreground (visibileall'utente) ovvero per eseguire un importanteprocesso non sia disponibile, allora il sistema puòdecidere di eliminare uno o più processi inbackground secondo una logica ben definita.Ad ogni processo viene assegnata una sorta diimportanza gerarchica in base ai suoicomponenti in esecuzione ed al loro stato.Ovviamente i processi di minore importanzasaranno i primi ad essere eliminati per liberarememoria.
●
●
Android4U
Applicazioni e Processi (2/3)
Sono state definite 5 tipologie di processi ordinateper importanza decrescente:● Foreground Process
Visible Process Service Process Background Process Empty Process
●
●
●
●
Android4U
Applicazioni e Processi (3/3)
I processi Foreground sono quelli che eseguonocomponenti di interazione con l'utente:
• Activity in cima allo Stack
• Azioni di un BroadCastReceiver (OnReceive())
• Metodi di callback nella gestione di un servizio come Start(), Create() o Destroy()
Normalmente il numero di questo tipo di processi èlimitato. Android potrà decidere di eliminarne unocome ultima chance per risolvere il problema dimemoria
Android4U
Foreground process
Sono processi che pur non essendo direttamentevisibili all'utente (non possiedono componenti inForeground), si trovano in uno stato in cui possonocomunque avere effetto su quello che l'utente vedevisualizzato.
• Activity non in Foreground che esegue OnPause().• Service connesso ad un'Activity in Foreground.
Android4U
Visible process
● Sono processi che eseguono Service.Pur non interagendo direttamente con l'utente,Android li ritiene più importanti delle Activity inBackground.L'esempio classico è la riproduzione di un fileaudio: pur non interagendo direttamente conl'utente, questo accetterà malvolentieril'interruzione dell'ascolto del brano. PertantoAndroid proverà ad eliminare uno o più processimeno importanti prima di eliminare un ServiceProcess.
●
●
Android4U
Service Process
● Sono processi che si occupano di eseguireActivity non più in Foreground per i quali è statoinvocato il metodo OnStop().Il loro numero è in genere superiore a quellodelle altre categorie.L'eliminazione all'interno di questa categoriatiene in considerazione il criterio di Least RecentUsed (LRU).Per questi processi è comunque definito unmeccanismo di salvataggio e ripristino.
●
●
●
Android4U
Background process
● Sono i processi candidati per l'eliminazione.Non eseguono alcun componente.
Il motivo per cui non vengono eliminati nelmomento in cui sono svuotati dai componenti cheeseguivano è legato a strategie di caching.Gli empty Process più vecchi sarannovelocemente eliminati, mentre per quelli piùrecenti è più probabile che l'utente richiami unsuo componente precedentemente visualizzato.
●
●
●
Android4U
Empty Process
Sicurezza dei Sistemi Android
Android4U
1 Miliardo di dispositivi
1.500.000Applicazioni
Più di 5.000.000 di
malware!
Molte applicazioni non vengono scaricare dal market standard di Android (Google Play), maanche da market di terze parti
Prezzi più vantaggiosi
Applicazioni che non si trovano sullo store ufficiale
Questo si combina col fatto che, molto spesso, l’operazione svolta più spesso per violare lasicurezza di Android è quella di prendere i permessi di root
Eseguita dallo stesso utente!
Consente di prendere il controllo completo delle funzionalità del telefono
Questi due elementi hanno portato al diffondersi di malware attraverso, principalmente, storesdi terze parti
Molti sfruttano il fatto che la vittima abbia permessi di root
Altri, anche se tali permessi non sono presenti, creano numerosi danni, soprattutto economici
Sicurezza: Introduzione
Android4U
Come può una applicazione Android sfruttare le risorse del sistema?Deve chiedere il permesso…
Il modello di permessi garantisce la sicurezza a livello dell’applicazione
I permessi vengono approvati/non approvati QUANDO VIENE INSTALLATA L’APPLICAZIONE
Non si può tornare indietro una volta accettati…
Le richieste vengono definite nel Manifest.xml dallo sviluppatore
Quattro diverse categorie: Normal: permessi che non costituiscono un pericolo per la sicurezza Dangerous: permessi che accedono a dati sensibili dell’utente (di questi permessi viene chiesta conferma
all’utente al momento dell’installazione) Signature: permessi che possono essere ottenuti solo se l’applicazione ha lo stesso certificato del produttore del
dispositivo SignatureOrSystem: permessi usati solo nelle applicazioni presenti nell’immagine del sistema Android (se, ad
esempio, ci sono applicazioni prodotte da diversi produttori che hanno bisogno di condividere le stesse risorse)
Sicurezza: Permessi
Android4U
Sicurezza: Permessi
Android4U
Un’applicazione malevola potrebbe richiederel’accesso a dei permessi pericolosi…
Sicuramente, se una applicazione non richiedePermessi, non potrà eseguire nessuna azione(quindi è, di fatto, innocua).Il problema è che, molto spesso, anche leapplicazioni legittime richiedono permessipericolosi (a volte inutili).
I permessi, da soli, non bastano per capire seuna applicazione è malevola o meno.
Applicazioni che eseguono azioni malevole
Sms a numeri premium
Furto dati personali
Telefonate “indesiderate”
Trasformazione del terminale in botnet
Più di 50 famiglie di malware diverse!
Tecniche di creazione principali
Repackaging
Update
Drive-By-Download
Altre (stand-alone)
Più di 50 famiglie di malware diverse!
Per tecniche di attivazione (BroadCast receivers)
Per tipo di attacco (payload)
Sicurezza: Malware
Android4U
Viene iniettato un payload maligno all’interno dell’applicazione decompressa che viene poiricompressa e firmata
Infine, viene sottomessa ad uno store (solitamente di terze parti)
Possono essere sfruttati dei permessi contenuti nell’applicazione principale (permessidangerous)
E’ la tecnica più usata per la sua semplicità e per la disponibilità di frameworks per l’attacco
AFE (Android Framework For Exploitation)
Numerosi lavori per individuare il repackaging sono stati effettuati a livello di ricercascientifica
Tecniche di Creazione - Repackaging
Android4U
Tecniche di Creazione - Update
Android4U
Dopo aver installato l’applicazione (legittima),vi viene chiesto di scaricare un aggiornamento
L’aggiornamento contatta un url malevolo chescarica una app malicious che viene poieseguita
N.B. A volte l’app “aggiornata” può esserecontenuta dentro l’applicazione stessa!
Questa tecnica è utilizzata da alcuni tra i malwaremobile più famosi (es. Base Bridge e Droid KungFu)
Stessa tecnica usata nei malware comuni
Un advertisement vi reindirizza verso un url maligno
Dall’url verrà scaricata una app maligna che verrà eseguita
Esempi malware:
GGTracker JIFake
Oltre alle tecniche viste finora, un malware può essere progettato “stand-alone”
Spyware Malware che usano interfacce simili ad applicazioni legittime (nota: NON SONO
REPACKAGED! Esempio: FakeNetflix) Applicazioni con funzionalità ibride (eseguono funzionalità legittime reali, miste a malicious)
Tecniche di Creazione – Drive-By-Download e altre
Android4U
Alcuni malware, per attivarsi, sfruttano ilmeccanismo dei “broadcast receivers“ e si attivanoricevendo dei segnali
BOOT_COMPLETED (Avvio del sistema) SMS_RECEIVED (Rimuove messaggi verso numeri premium in
modo che l’utente non si accorga di essere infetto) …e diversi altri!
Vediamo, ora, le principali tipologie di attacco
Root Exploits
Sfruttano dei bug nel sistema Android per ottenere permessidi Root
In questo modo, una applicazione malevola può prendere ilcontrollo del sistema
Esempio: (libsysutils, Gingerbreak, RATC, etc.) Tutti per versioni fino alla 2.3.6!
Remote Control Trasformazione dello smartphone in un bot
Utilizzato da quasi tutti i malware! Vengono utilizzati dei commandi HTTP per pilotare i bot da
alcuni server specifici A volte la comunicazione è criptata (es. PjApps)
Financial Charge
Esiste una funzione chiamata sendTextMessage (attivabile conpermesso), capace di mandare sms senza che l’utente possacontrollarlo
Ovviamente, i numeri contattati sono premium a costoaltissimo…
A volte, viene proprio effettuata una “sottoscrizione” a servizipremium
Il malware è programmato per mandare determinate “risposte” al servizioche ne comportano la sottoscrizione
Financial Charge
Molte informazioni possono essere di interesse per unattaccante: numeri di telefono (rubrica), SMS, indirizzi mail,credenziali utente
Tecniche di Attivazione e Tipi di Attacco
Android4U
L’offuscamento è un insieme di strategie per rendere il codice meno leggibile quandoviene disassemblato
Agiscono principalmente sul Dalvik Bytecode (cioè, il contenuto del classes.dex)
Ma anche sul Manifest.xsml
Queste tecniche vengono usate per evadere anche gli antivirus che si basano sulbytecode o sul Manifest per individuare gli attacchi
Offuscamento
Android4U
Android è un settore molto “ricco” dal punto di vista della sicurezza.
E’ la piattaforma mobile preferita per i malware
Il loro numero di malware è molto vasto!
E gli Antivirus commerciali si stanno evolvendo…
La ricerca scientifica è molto attiva da questo punto di vista
Numerose tecniche di analisi per applicazioni Android sono state sviluppate
E’ un settore, perciò, in continua evoluzione!
Sicurezza: Conclusioni
Android4U
Approcci allo sviluppo di App
Android4U
● 1996● Palm OS
Windows CE●
● 2000● Symbian
Windows Pocket PC●
● 2006● Java ME
Fino ai primi anni 90 non si puòparlare di piattaforme ma di Sistemi Embedd
Android4U
Piattaforme del passato
● Windows Phone
● iOS
● Android
● Blackberry
Attualmente le più diffuse piattaforme per dispositivi mobili sono:
Android4U
Piattaforme attuali
Android4U
Mercato Italia 2013-2014
fonte: idc.comAndroid4U
Mercato mondiale 2011-2015
Mercato 2015
Android4U
● I telefoni Blackberry di RIM (Research-In-Motion) sono prodotti diffusi da anni nell'ambito enterprise.Sono specializzati nella gestione della postaelettronica in modalità ”push”.Sebbene siano stati considerati prodotti all'avanguardia, sono sempre stati utilizzati solo nell'ambito aziendale e non hanno quindi avuto una grande diffusione nel mercato consumer che garantisce i volumi più elevati.
●
●
Android4U
Blackberry
• Di conseguenza nei prossimi anni la vera lotta tra i sistemioperativi per smartphone avverrà fra tre grandi concorrenti:Windows Phone, iOS e Android.
• Dietro questi sistemi operativi si celano i colossi del mondo IT,ovvero Microsoft, Apple, Google, Samsung.
Android4U
Sistemi operativi per smartphone
• Per tutte le piattaforme prese in considerazione l'SDK che permette lo sviluppo di applicazioni è liberamenente disponibile.
• Riguardo ai linguaggi di programmazione da adoperare, per Windows Mobile è possibile utilizzare indifferentemente C++,C# e VB.NET.
• Per iOS si usa Objective-C.
• PerAndroid e BlackBerry si usa Java.
Android4U
Confronto tra SO: strumenti di sviluppo
● Open Source – Linux based
● Open Source – Linux based
● Closed Source, Cloud based –Android Fork
Android4U
Nuove piattaforme mobile
• Come sviluppare?
Native
Web App -> Web View
Cross Platform(Apache Cordova - Titanium)
Hybrid
•Tempo•Costo•Conoscenza ambiente•Funzionalità•Qualità
Approcci allo sviluppo di App
Android4U
S.O. e linguaggiiOS: Objective-C Android: JavaWindows Phone: Silverlight, .Net Framework C#
App native
Android4U
Applicazione creata per un determinato dispositivo e sviluppata in linguaggi diprogrammazione specifici per ogni sistema operativo mobile.
App native – Vantaggi e svantaggi
Android4U
Vantaggi• Accesso completo a tutte le funzionalità native del device• User-Experience: interfacce utente ottimizzate• Distribuzione: maggiore visibilità mediante Store• Modalità offline
Svantaggi• Portabilità• Flessibilità: aggiornamenti via Store
HTML5 + CSS + Javascript
Sencha TouchjQuery MobileThe-M-ProjectDaVinci StudioWinkKendo UI
Alcuni Framework
WebApp
Android4U
Le mobile web application sono applicazioni Internet-enabled che possono essere fruite daun tablet o uno smartphone. Sono accessibili tramite browser del dispositivo mobile e nonhanno bisogno di essere scaricate e installate sul dispositivo.
WebApp – Vantaggi e svantaggi
Android4U
Vantaggi• Portabilità• Distribuzione: accesso mediante indirizzo web• Spazio utilizzato
Svantaggi• Accesso ridotto alle funzionalità
native del device• User-Experience dipende dal browser• Mancanza dello Store• Prestazioni
App e WebApp - utilizzo
Android4U
Il sogno del "code one, run everywhere"
Oltre ad una serie di template di progetto per i vari ambienti di sviluppo,fondamentalmente è costituito da una libreria Javascript che fa da bridge trail nostro codice in pagina e le funzionalità native del telefono, dandoci difatto la possibilità di accedere a funzionalità native del sistema e deldispositivo, come i contatti, il GPS o la fotocamera.
Alcune soluzioni:Apache Cordova Appcelerator Titanium Marmalade SDK
App ibride
Android4U
• L’approccio ibrido appare come un giusto compromesso tra sviluppoweb based e native app in quanto permette l’accesso e il controlloall’hardware sviluppando però l’essenza dell’applicazione in linguaggicome HTML5, CSS e Javascript.
• Una hybrid application è in sostanza un contenitore sviluppato nellinguaggio destinato ad una specifica piattaforma che però sfrutta, al suo interno, funzioni tipicamente legate al normale sviluppo web.
A cosa servono i framework?
App ibride – Vantaggi e svantaggi
Android4U
Vantaggi• Ingloba in sé tutti gli aspetti positivi delle altre due tipologie di App; su tutti:
1.Realizzazioni di app multi-piattaforma, 2.Gestione di interfacce come le web app,3.Controllo e interazione col device.
Svantaggi• Perdita Look & Feel• Rischi pubblicazione• Minore fluidità• Debug ed errori
Confronto tra le caratteristiche delle mobile application
Android4U
Confronto tra le caratteristiche delle mobile application
Android4U
Scelta approccio di sviluppo
Android4U
Come sapere quale tipologia di App scegliere per la propria attività
• A chi si rivolge l’App?• Cosa deve poter fare l’App?• Quanto sono disposto ad investire?• La nostra App richiede caratteristiche particolari di interazione col
device?• La nostra App di fatto è un elenco di contenuti categorizzati e
navigabili?
Non focalizzarsi su una sola piattaforma!
Blackbarry è passato dall’essere il più diffuso, alla quasi completa scomparsa!
Scelta approccio di sviluppo
Android4U
Scelta approccio di sviluppo
Android4U
Sviluppo Multi-piattaformaRiduzione di costi e tempi
Linguaggi di programmazione comuni
Le hybrid app stanno diventando un ottimo compromesso per chi è interessato ad uno sviluppo diapplicazioni che operino in logica multipiattaforma a ridotti costi di sviluppo e manutezione.Se questa differenza dovesse continuare, secondo un recente studio di Gartner, entro il 2016 siarriverà ad una situazione in cui oltre il 50% delle app saranno sviluppate in modalità ibrida.
App ibride: il framework Apache Cordova
Android4U
Apache Cordova
Android4U
Apache Cordova è una piattaforma che consente di creare applicazioni mobile native utilizzando HTML, CSS e JavaScript mediante l’approccio “Write once, run anywhere” (WORA)
Apache Cordova: Storia
Android4U
• Pensato e realizzato da Nitobi Software ad un evento iPhoneDevCamp con il nome di PhoneGap.• Open-source & free software dall’inizio (MIT License), ora licenza Apache.
• Nitobi viene acquisita da Adobe nell’ottobre del 2011. • Il codice di PhoneGap entra quindi a far parte della Apache Software Foundation inizialmente con il
nome di Apache Callback e successivamente Apache Cordova.• Adobe continua a distribuire la sua Build con il nome di PhoneGap.
Apache Cordova: Architettura
Android4U
Apache Cordova: Funzionamento
Android4U
Apache Cordova / PhoneGap Esempio di architettura diun’app con PhoneGap
Apache Cordova: Interfaccia Utente
Android4U
• The User Interface for Apache Cordova applications is created using HTML, CSS, and JavaScript.
• The UI layer is a web browser view that takes up 100% of the device width and 100% of the device height.
• The web view used by application is the same web view used by the native operating system
• iOS: Objective-C UIWebView class• Android: android.webkit.WebView• WP7: WebBrowser• WP8: WebBrowser control (Internet Explorer 10)• BlackBerry: WebWorks framework
Apache Cordova: API
Android4U
• Provides an application programming interface (API) • enables you to access native operating system functionality using
JavaScript.• APIs for Accelerometer, Camera, Compass, Media, FileSystem, etc• Extendable using native plug-in
• docs.phonegap.com
Cordova Application
Cordova JavaScript APIand
Cordova Native Library Native API
Apache Cordova: Plugin e Piattaforme supportate
Android4U
AccelerometerMonitor the motion sensor on the device.
CameraTake pictures with the device cameraallow the user to select images from their photo library on the device.
CaptureCapture video and still images from the camera, and audio from the microphone.
CompassGive users of your app some direction.
ContactsSearch and Create contacts in the user’s address book.
FileLow level read and write access to the file system. Upload and download files from a web server.
GeoLocationMake your app location aware.
MediaPlay and record audio files.
NetworkMonitor the device connections
NotificationAccess to vibration, beep and alerts.
StoragePersistent data store in WebStorage.
Updated list:http://wiki.apache.org/cordova/PlatformSupport
Apache Cordova: Strumenti di sviluppo
Android4U
• Tools for development• Any HTML & JS editor• Platform SDK e.g. Android SDT, Android SDK, BB SDK, Xcode, Visual Studio Mobile.• Platform Emulator (usually provide along with SDK)• JS/HTML GUI Mobile framework e.g. JQuery, Sencha Touch, dojo Mobile• Browser e.g. Firefox with Bugzilla extension, Chrome Browser
…Xcode Android SDK
Eclipse ADT Plug-inBB Java Eclipse Plug-inRipple
Visual Studio, Windows Phone Dev Tools
Use platform SDK to develop application for each target platform