Introduzione ad Android

Preview:

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

emanuel.dinardo@gmail.com vapelliccia@gmail.com

@smartvalentina

plus.google.com/+ValentinaPelliccia

Recommended