android4u - studentingegneria · o. ncreate(bundle): e' invocato quando l'activity viene...

Post on 03-May-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Source: http://www.primaonline.it/

Mercato Italia 2014-2015

Android4U

fonte: idc.comAndroid4U

Mercato mondiale 2011-2015

Mercato 2015

Android4U

Source: http://endeavour.it/

Frammentazione Android

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

top related