SlideShare une entreprise Scribd logo
1  sur  42
Links Management and Technology




              Competency             Technology               Infrastructure




Argomento: Introduzione ad Android
Autore: Gaetano Raimondo
Distribuzione: Esterna
Data: 19 Maggio 2012
Introduzione ad Android




  Agenda



                          2
Agenda (1)

 Cenni storici
 L’architettura
 L’ambiente di sviluppo
 Introduzione allo sviluppo di applicazioni
 La struttura dei progetti
 I componenti grafici
 Debug delle applicazioni


                                               3
L’architettura di Android




               1
Android: The story, so far




                                4
Un SO per chi preferisce i dolci alla mela

           I primi rumours sul sistema operativo mobile di Google
            risalgono al 2005.
           Nel 2007 viene rilasciata la prima versione per gli
            sviluppatori con alcune delle feature che lo
            differenziano        dai       concorrenti:       Desktop
            multipli,integrazione con i servizi di google più famosi
            quali Gmail and Calendar
           Nel 2008 esce il primo modello di telefonino dotato di
            S.O. Android, il T-Mobile G1, senza alcun successo.
           Nel      2009      esce     la    versione      1.5     di
            Android, Cupcake, insieme con il primo telefonino
            davvero competitivo sul mercato: l’HTC Magic, dotato
            di tastiera touch, videocamera,bluetooth e una UI
            comparabile con l’iPhone.
           Sempre nel 2009 viene rilasciata la versione 1.6
            Donut, che a dispetto del piccolo cambio di release
            number offre significativi miglioramenti quali l’aumento
            della risoluzione e delle performance generali



                                                                     5
Un dolce robottino da passeggio



       Il supporto ad HTML5 viene introdotto nella nuova
        major release, la 2.0 Eclair. Altri miglioramenti
        includono il supporto a Exchange, ai flash LED e a
        Bluetooth 2.1
       Nel 2010 arriva anche il primo sistema operativo usato
        su un dispositivo tablet: la 2.2 Froyo. Viene introdotto
        un compilatore JIT (Just in time) per aumentare le
        performance, ed il supporto ad Adobe Flash e al
        tethering
       La versione 2.3 Gingerbread introduce una
        risoluzione più alta (WXGA) e alcune feature utili al
        supporto dei videogiochi
       Con la release 3.0 Honeycomb si ha la prima
        versione dedicata esplicitamente ai tablet. In seguito
        sono state rilasciate anche le minor release 3.1 e 3.2



                                                                   6
Gelato di fine estate



   Nell’ultimo quarto del 2011 è stata rilasciata la
    versione 4.0 Ice Cream Sandwich, seguita a breve
    distanza dalla minor release 4.0.3
   In questa release, le due branch per smartphone e
    tablet vengono unificate, introducendo un framework
    di sviluppo della UI unificato
   Vengono introdotte nuove API quali:
       Social API
       Calendar API
       Visual voicemail API
       Android Beam
   Vi è il supporto per la connessione diretta tramite WI-
    FI ad altri dispositivi senza bisogno di passare per un
    hot-spot




                                                              7
2
Introduzione all’architettura
        Di Android




                                8
L’architettura di Android




                            9
L’architettura multilivello di android


      I livelli in cui è divisa l’architettura di android sono:
       Applicazioni: Scritte in java ed eseguite nella virtual
          machine Dalvik
       Servizi e librerie del framework applicativo: scritte
          principalmente in java
       Librerie native, demoni e servizi scritti in C/C++
          eseguiti direttamente nel core Linux
       Il kernel linux che include i driver per l’accesso alle
          periferiche hardware

      Al centro di tutta l’architettura runtime c’è una versione
         modificata di una java virtual machine, chiamata
         Dalvik. Per ognuna delle applicazioni che gireranno nel
         SO verrà istanziata una JVM apposita.




                                                             10
La vertenza con Oracle

   Dalvik è un software Open Source di proprietà di
    Google, implementare una virtual machine java senza
    utilizzare software proprietario di SUN, creatrice del
    linguaggio di programmazione.
   A seguito dell’acquisizione di SUN, nel 2010 Oracle ha
    intentato una causa a Google per la violazione di tre
    brevetti
   Questa vertenza, oltre a quelli legali, ha causato anche
    problemi relativi all’effettiva “redditività” di Android.
    Queste problematiche, sebbene non hanno per il
    momento modificato le politiche commerciali e gli
    sviluppi della piattaforma android, rischiano in futuro di
    costringere Google a cambiare le policy
   In ogni caso, bisogna riconoscere che la versione 4.0 è
    stata la prima versione di Android in cui il codice
    sorgente è stato rilasciato contemporaneamente ai
    binari.



                                                           11
3
L’ambiente di sviluppo




                         12
Installazione dell’ambiente di sviluppo


Installare il development kit di android sui propri pc è estremamente semplice. Al
termine della procedura si disporrà di:
   Un’IDE basato su Eclipse
   Un runtime enviroment da cui sarà possibile testare e debuggare il software
     scritto
   Una serie di tool da riga di comando per gestire le applicazioni.
Per installare l’SDK effettuare le seguenti operazioni:
   Scompattare lo starter package installer_r18-linux.tgz
   Installare Eclipse, preferibilmente in versione “Java” così da ridurre il numero
     di plugin e aumentare le performance
   Installare il plugin ADT per eclipse
   Aggiungere i runtime delle piattaforme che verranno supportate dalla
     applicazione da sviluppare




                                                                                  13
Practice I
Installazione dell’ambiente di sviluppo




                                          14
Practice II
Do Android Says Electric “Hello World”?




                                          15
4
Sviluppare applicazioni su Android




                                     16
La virtual machine Dalvik



   Lo sviluppo su Android avviene in linguaggio Java. L’ambiente di runtime si
    chiama Dalvik, ed è una versione open-source della JVM, in cui invece del
    bytecode viene eseguito un bytecode modificato chiamato DEX (Dalvik
    Executable)
   Le principali mancanze rispetto alla JVM standard sono nei package Swing e
    AWT
   Il package android.* contiene tutte le classi e le interfacce specifiche di
    android.
   Un’altra mancanza della JVM Dalvik è l’impossibilità di generare bytecode a
    runtime. Questo di fatto impedisce l’applicazione dei moderni framework
    aspect oriented.




                                                                             17
I componenti di una applicazione Android: Le attività

Le applicazioni android hanno una architettura a componenti, ognuno
delegato ad un ben specifico compito. Di seguito verranno elencati le
principali:



   Attività (Activity): L'attività è una componente applicativa che
    fornisce una schermata con cui gli utenti possono interagire per compiere
    delle azione, come comporre un numero di telefono, scattare una
    foto, inviare una e-mail o visualizzare una mappa. Ad ogni attività è
    associata una finestra in cui disegnare l'interfaccia utente. La finestra di
    solito riempie lo schermo, ma può essere più piccola dello schermo e
    “galleggiare” sopra le altre finestre come nei Dialog e nelle Progress Bar.




                                                                             18
I componenti di una applicazione Android: I Servizi

   Servizio (Service): Un servizio è un componente dell'applicazione che
    consente di eseguire operazioni di lunga durata in background e non
    fornisce un'interfaccia utente. Un altro componente dell’applicazione
    può avviare un servizio che continuerà a funzionare in background anche
    se l'utente passa a un'altra applicazione. Inoltre, un componente
    può legarsi ad un servizio per interagire con esso ed effettuare una
    comunicazione interprocesso (IPC). Ad esempio, un servizio può gestire le
    transazioni di rete, riprodurre musica, effettuare file di I / O, o interagire
    con un fornitore di contenuti, il tutto in background senza bloccare
    l’interfaccia utente.




                                                                                19
I componenti di una applicazione Android: I Receiver
 I Receiver possono essere di diversi tipi. I principali sono:

    ResultReceiver: Un ResultReceiver è un componente dell’applicazione
     in grado di ricevere un risultato da un altro componente applicativo.
     Viene usato per permettere alle Attività di ricevere i risultati
     dell’elaborazione di un Servizio

    BroadcastReceiver: Un Broadcast Receiver viene utilizzato quando si
     intende intercettare un particolare evento di sistema. Ad esempio lo si
     può utilizzare se si desidera compiere un’azione quando si scatta una foto
     o quando parte la segnalazione di batteria scarica.




                                                                             20
I componenti di una applicazione Android: I Content Provider




       Content Provider: I Content Provider sono utilizzati per esporre dati e
        informazioni. Costituiscono un canale di comunicazione tra le differenti
        applicazioni installate nel sistema.




                                                                              21
Distribuire una applicazione Android: i pacchetti APK




    Le applicazioni Android sono distribute sotto forma di pacchetti APK, che
     contengono gli eseguibili in formato DEX, le risorse dell’applicazione e i
     descrittori.
    Il   descrittore    principale   è     il   file  manifesto,     chiamato
     AndroidManifest.xml, che elenca tutte le componenti dell’applicazione.
    In Eclipse è presente un editor visuale che permette di gestire il file
     manifesto senza commettere errori.




                                                                             22
Distribuire una applicazione Android: il file manifesto




                                                          23
Descrivere una applicazione Android: l’editor visuale




                                                        24
Practice III
Distribuire una applicazione Android




                                       25
5
La struttura dei progetti Android




                                    26
La struttura dei progetti android


  Al momento della creazione di un nuovo progetto, viene
  creata una struttura che distingue nettamente:
     Il codice sorgente nella directory src
     Le risorse esterne nella directory res, suddivise in:
     drawable-hdpi,drawable-mdpi, drawable-ldpi per le
       risorse grafiche
     layout: per i file che definiscono i layout delle
       schermate
     values: per i file che definiscono i valori da utilizzare
       nell’applicazione
     Le classi “autogenerate” nella directory gen. In
       particolare questa cartella contiene la classe R, che
       conterrà tutti i riferimenti alle risorse contenute nella
       cartella res




                                                               27
6
Le Attività




              28
Definizione di Attività (Activity)

   Attività (Activity): L'attività è una componente applicativa che
    fornisce una schermata con cui gli utenti possono interagire per compiere
    delle azione, come comporre un numero di telefono, scattare una
    foto, inviare una e-mail o visualizzare una mappa. Ad ogni attività è
    associata una finestra in cui disegnare l'interfaccia utente. La finestra di
    solito riempie lo schermo, ma può essere più piccola dello schermo e
    “galleggiare” sopra le altre finestre come nei Dialog e nelle Progress Bar.
   Per implementare una attività si estende la classe base android.app.Activity
   Le applicazioni sono tipicamente composte da più attività, che sono legate
    tra loro in maniera lasca.
   Il ciclo di vita delle attività è gestito dal sistema operativo, che si occupa di
    avviarle, metterle in background, stopparle, riavviarle o eliminarle




                                                                                  29
Descrivere una attività nel file manifesto
     Affinchè una attività possa essere gestita da android è
      necessario che essa          venga    descritta   nel   file
      AndroidManifest.xml




    All’interno del tag activity possiamo vedere il tag intent-
     filter. Gli intent sono dei messaggi che è possibile
     mandare al sistema operativo affinchè svolga un’azione
         Il primo intent comunica al SO che l’attività deve
            essere lanciata allo start della applicazione
         Il secondo che è possibile per un utente avviare
            l’attività dall’application launcher
    Gli intent verranno descritti con maggiore dettaglio più
     avanti nel corso

                                                                     30
Ciclo di vita di una Attività




                                31
Gli stati di una attività

Una attività può assumere uno dei seguenti tre stati:
 Attivo (Resumed): L’attività è in primo piano
  (foreground) e l’utente può interagire con essa
 In Pausa: L’attività è in vita, ma ce n’è un’altra che la
  copre in maniera parziale, ad esempio con una
  trasparenza. In questo stato l’attività conserva i suoi
  dati e quelli dei suoi membri, ma può essere killata dal
  SO se ci fosse estrema necessità di liberare memoria.
 Interrotta (Stopped): L’attività è in background, mentre
  ce n’è un’altra in foreground. Anche in questo caso
  l’attività può essere considerata ancora in vita, ma può
  essere uccisa se il sistema ha bisogno di liberare risorse
  per altre applicazioni




                                                         32
Implementare i metodi di callback
La superclasse Activity mette a disposizione una serie di metodi di callback che il
programmatore può implementare per gestire il ciclo di vita




NB: richiamare sempre il metodo della superclasse prima di implementare la logica

                                                                                33
Avviare una attività
   In android non è possibile avviare direttamente una
    attività, ma si deve utilizzare il meccanismo degli
    Intent.
   E’ possibile avviare una attività con due metodi:
       startActivity(Intent)
       startActivityOnResult(Intent,int requestCode)




                                                          34
Interfacce modulari con i Fragment



   I Fragment rappresentano porzioni di user interface
    all’interno di una attività.
   I     fragment      permettono     la   modularizzazione
    dell’interfaccia, che può adattarsi in questa maniera ai
    diversi orientamenti di un tablet (portrait/landscape)




                                                               35
7
Debuggare e monitorare un’applicazione




                                         36
Lanciare un’applicazione Android in Debug
   In Eclipse è possible lanciare un’applicazione Android in debug
    mode. Lanciare l’applicazione in questa modalità porta all’apertura
    delle seguenti view:
       Debug
       Variables
       Breakpoints
       LogCat: Visualizza il log di sistema di Android




                                                                          37
Utilizzare il Log di sistema
   La classe da utilizzare per effettuare log e android.util.Log, fornita
    dei seguenti metodi:
      v(String, String) (verbose)
      d(String, String) (debug)
      i(String, String) (information)
      w(String, String) (warning)
      e(String, String) (error)
    Log.i("MyActivity", "MyClass.getView() — get item number " + position);




                                                                              38
La prospettiva DDMS (Dalvik Debug Monitor Server)
   Aprendo la prospettiva DDMS sarà possibile visualizzare una serie di
    controlli ulteriori sul dispositivo o sull’emulatore:
      Devices – Mostra la lista di dispositivi ed emulatori connessi al
        debugger
      Emulator Control – Permette di simulare delle funzionalità del
        dispositivo (come ad esempio ricevere una telefonata)
      LogCat - Visualizza il log di sistema di Android
      Threads – Mostra I thread attualmente presenti sulla VM
      Heap – Mostra la quantità di memoria usata nell’heap
      Allocation Tracker – Traccia l’allocazione di memoria
      File Explorer – Permette di esplorare il filesystem del dispositivo




                                                                        39
La prospettiva DDMS (Dalvik Debug Monitor Server)




                                                    40
Riferimenti
   Android Dev Center: http://developer.android.com/index.html



     Gaetano Raimondo
     Technical Leader | Software Engineering
     Links Management and Technology S.p.A.
     Via R. Scotellaro, 55 - 73100 Lecce
     Tel: +39 0832.443911 - Fax: +39 0832.443926
     e-Mail: gaetano.raimondo@linksmt.it




                                                                  41
LECCE                          MILANO                       ROMA
Via R. Scotellaro, 55          Via Gonzaga, 5               Via XX Settembre, 4


Tel. +39 0832 443911 | Fax +39 0832 443926 | info@linksmt.it | www.linksmt.it

Contenu connexe

Similaire à MobileDevCamp2012 - Android

Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Android, panoramica e sviluppo
Android, panoramica e sviluppoAndroid, panoramica e sviluppo
Android, panoramica e sviluppoLorenzo Braghetto
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overviewAlfredo Morresi
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+AndroidNicola Pedot
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)Vinu Iaconissi
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobililuca mezzalira
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progettoMicrosoft Mobile Developer
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Gaetano Paternò
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSLezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSGianluigi Cogo
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Riccardo Mancinelli
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - itaneunet
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Francesco Baldassarri
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 

Similaire à MobileDevCamp2012 - Android (20)

Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Android, panoramica e sviluppo
Android, panoramica e sviluppoAndroid, panoramica e sviluppo
Android, panoramica e sviluppo
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
 
Io, Android
Io, AndroidIo, Android
Io, Android
 
Android programming (ita)
Android programming (ita)Android programming (ita)
Android programming (ita)
 
Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
Reportage Delphi Day 2012
Reportage Delphi Day 2012Reportage Delphi Day 2012
Reportage Delphi Day 2012
 
Micro Applicazioni Mobile
Micro Applicazioni MobileMicro Applicazioni Mobile
Micro Applicazioni Mobile
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPSLezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
Lezione 11 del 13 marzo 2012 - L'ECOSISTEMA DELLE APPS
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - ita
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 

MobileDevCamp2012 - Android

  • 1. Links Management and Technology Competency Technology Infrastructure Argomento: Introduzione ad Android Autore: Gaetano Raimondo Distribuzione: Esterna Data: 19 Maggio 2012
  • 3. Agenda (1)  Cenni storici  L’architettura  L’ambiente di sviluppo  Introduzione allo sviluppo di applicazioni  La struttura dei progetti  I componenti grafici  Debug delle applicazioni 3
  • 4. L’architettura di Android 1 Android: The story, so far 4
  • 5. Un SO per chi preferisce i dolci alla mela  I primi rumours sul sistema operativo mobile di Google risalgono al 2005.  Nel 2007 viene rilasciata la prima versione per gli sviluppatori con alcune delle feature che lo differenziano dai concorrenti: Desktop multipli,integrazione con i servizi di google più famosi quali Gmail and Calendar  Nel 2008 esce il primo modello di telefonino dotato di S.O. Android, il T-Mobile G1, senza alcun successo.  Nel 2009 esce la versione 1.5 di Android, Cupcake, insieme con il primo telefonino davvero competitivo sul mercato: l’HTC Magic, dotato di tastiera touch, videocamera,bluetooth e una UI comparabile con l’iPhone.  Sempre nel 2009 viene rilasciata la versione 1.6 Donut, che a dispetto del piccolo cambio di release number offre significativi miglioramenti quali l’aumento della risoluzione e delle performance generali 5
  • 6. Un dolce robottino da passeggio  Il supporto ad HTML5 viene introdotto nella nuova major release, la 2.0 Eclair. Altri miglioramenti includono il supporto a Exchange, ai flash LED e a Bluetooth 2.1  Nel 2010 arriva anche il primo sistema operativo usato su un dispositivo tablet: la 2.2 Froyo. Viene introdotto un compilatore JIT (Just in time) per aumentare le performance, ed il supporto ad Adobe Flash e al tethering  La versione 2.3 Gingerbread introduce una risoluzione più alta (WXGA) e alcune feature utili al supporto dei videogiochi  Con la release 3.0 Honeycomb si ha la prima versione dedicata esplicitamente ai tablet. In seguito sono state rilasciate anche le minor release 3.1 e 3.2 6
  • 7. Gelato di fine estate  Nell’ultimo quarto del 2011 è stata rilasciata la versione 4.0 Ice Cream Sandwich, seguita a breve distanza dalla minor release 4.0.3  In questa release, le due branch per smartphone e tablet vengono unificate, introducendo un framework di sviluppo della UI unificato  Vengono introdotte nuove API quali:  Social API  Calendar API  Visual voicemail API  Android Beam  Vi è il supporto per la connessione diretta tramite WI- FI ad altri dispositivi senza bisogno di passare per un hot-spot 7
  • 10. L’architettura multilivello di android I livelli in cui è divisa l’architettura di android sono:  Applicazioni: Scritte in java ed eseguite nella virtual machine Dalvik  Servizi e librerie del framework applicativo: scritte principalmente in java  Librerie native, demoni e servizi scritti in C/C++ eseguiti direttamente nel core Linux  Il kernel linux che include i driver per l’accesso alle periferiche hardware Al centro di tutta l’architettura runtime c’è una versione modificata di una java virtual machine, chiamata Dalvik. Per ognuna delle applicazioni che gireranno nel SO verrà istanziata una JVM apposita. 10
  • 11. La vertenza con Oracle  Dalvik è un software Open Source di proprietà di Google, implementare una virtual machine java senza utilizzare software proprietario di SUN, creatrice del linguaggio di programmazione.  A seguito dell’acquisizione di SUN, nel 2010 Oracle ha intentato una causa a Google per la violazione di tre brevetti  Questa vertenza, oltre a quelli legali, ha causato anche problemi relativi all’effettiva “redditività” di Android. Queste problematiche, sebbene non hanno per il momento modificato le politiche commerciali e gli sviluppi della piattaforma android, rischiano in futuro di costringere Google a cambiare le policy  In ogni caso, bisogna riconoscere che la versione 4.0 è stata la prima versione di Android in cui il codice sorgente è stato rilasciato contemporaneamente ai binari. 11
  • 13. Installazione dell’ambiente di sviluppo Installare il development kit di android sui propri pc è estremamente semplice. Al termine della procedura si disporrà di:  Un’IDE basato su Eclipse  Un runtime enviroment da cui sarà possibile testare e debuggare il software scritto  Una serie di tool da riga di comando per gestire le applicazioni. Per installare l’SDK effettuare le seguenti operazioni:  Scompattare lo starter package installer_r18-linux.tgz  Installare Eclipse, preferibilmente in versione “Java” così da ridurre il numero di plugin e aumentare le performance  Installare il plugin ADT per eclipse  Aggiungere i runtime delle piattaforme che verranno supportate dalla applicazione da sviluppare 13
  • 15. Practice II Do Android Says Electric “Hello World”? 15
  • 17. La virtual machine Dalvik  Lo sviluppo su Android avviene in linguaggio Java. L’ambiente di runtime si chiama Dalvik, ed è una versione open-source della JVM, in cui invece del bytecode viene eseguito un bytecode modificato chiamato DEX (Dalvik Executable)  Le principali mancanze rispetto alla JVM standard sono nei package Swing e AWT  Il package android.* contiene tutte le classi e le interfacce specifiche di android.  Un’altra mancanza della JVM Dalvik è l’impossibilità di generare bytecode a runtime. Questo di fatto impedisce l’applicazione dei moderni framework aspect oriented. 17
  • 18. I componenti di una applicazione Android: Le attività Le applicazioni android hanno una architettura a componenti, ognuno delegato ad un ben specifico compito. Di seguito verranno elencati le principali:  Attività (Activity): L'attività è una componente applicativa che fornisce una schermata con cui gli utenti possono interagire per compiere delle azione, come comporre un numero di telefono, scattare una foto, inviare una e-mail o visualizzare una mappa. Ad ogni attività è associata una finestra in cui disegnare l'interfaccia utente. La finestra di solito riempie lo schermo, ma può essere più piccola dello schermo e “galleggiare” sopra le altre finestre come nei Dialog e nelle Progress Bar. 18
  • 19. I componenti di una applicazione Android: I Servizi  Servizio (Service): Un servizio è un componente dell'applicazione che consente di eseguire operazioni di lunga durata in background e non fornisce un'interfaccia utente. Un altro componente dell’applicazione può avviare un servizio che continuerà a funzionare in background anche se l'utente passa a un'altra applicazione. Inoltre, un componente può legarsi ad un servizio per interagire con esso ed effettuare una comunicazione interprocesso (IPC). Ad esempio, un servizio può gestire le transazioni di rete, riprodurre musica, effettuare file di I / O, o interagire con un fornitore di contenuti, il tutto in background senza bloccare l’interfaccia utente. 19
  • 20. I componenti di una applicazione Android: I Receiver I Receiver possono essere di diversi tipi. I principali sono:  ResultReceiver: Un ResultReceiver è un componente dell’applicazione in grado di ricevere un risultato da un altro componente applicativo. Viene usato per permettere alle Attività di ricevere i risultati dell’elaborazione di un Servizio  BroadcastReceiver: Un Broadcast Receiver viene utilizzato quando si intende intercettare un particolare evento di sistema. Ad esempio lo si può utilizzare se si desidera compiere un’azione quando si scatta una foto o quando parte la segnalazione di batteria scarica. 20
  • 21. I componenti di una applicazione Android: I Content Provider  Content Provider: I Content Provider sono utilizzati per esporre dati e informazioni. Costituiscono un canale di comunicazione tra le differenti applicazioni installate nel sistema. 21
  • 22. Distribuire una applicazione Android: i pacchetti APK  Le applicazioni Android sono distribute sotto forma di pacchetti APK, che contengono gli eseguibili in formato DEX, le risorse dell’applicazione e i descrittori.  Il descrittore principale è il file manifesto, chiamato AndroidManifest.xml, che elenca tutte le componenti dell’applicazione.  In Eclipse è presente un editor visuale che permette di gestire il file manifesto senza commettere errori. 22
  • 23. Distribuire una applicazione Android: il file manifesto 23
  • 24. Descrivere una applicazione Android: l’editor visuale 24
  • 25. Practice III Distribuire una applicazione Android 25
  • 26. 5 La struttura dei progetti Android 26
  • 27. La struttura dei progetti android Al momento della creazione di un nuovo progetto, viene creata una struttura che distingue nettamente:  Il codice sorgente nella directory src  Le risorse esterne nella directory res, suddivise in:  drawable-hdpi,drawable-mdpi, drawable-ldpi per le risorse grafiche  layout: per i file che definiscono i layout delle schermate  values: per i file che definiscono i valori da utilizzare nell’applicazione  Le classi “autogenerate” nella directory gen. In particolare questa cartella contiene la classe R, che conterrà tutti i riferimenti alle risorse contenute nella cartella res 27
  • 29. Definizione di Attività (Activity)  Attività (Activity): L'attività è una componente applicativa che fornisce una schermata con cui gli utenti possono interagire per compiere delle azione, come comporre un numero di telefono, scattare una foto, inviare una e-mail o visualizzare una mappa. Ad ogni attività è associata una finestra in cui disegnare l'interfaccia utente. La finestra di solito riempie lo schermo, ma può essere più piccola dello schermo e “galleggiare” sopra le altre finestre come nei Dialog e nelle Progress Bar.  Per implementare una attività si estende la classe base android.app.Activity  Le applicazioni sono tipicamente composte da più attività, che sono legate tra loro in maniera lasca.  Il ciclo di vita delle attività è gestito dal sistema operativo, che si occupa di avviarle, metterle in background, stopparle, riavviarle o eliminarle 29
  • 30. Descrivere una attività nel file manifesto  Affinchè una attività possa essere gestita da android è necessario che essa venga descritta nel file AndroidManifest.xml  All’interno del tag activity possiamo vedere il tag intent- filter. Gli intent sono dei messaggi che è possibile mandare al sistema operativo affinchè svolga un’azione  Il primo intent comunica al SO che l’attività deve essere lanciata allo start della applicazione  Il secondo che è possibile per un utente avviare l’attività dall’application launcher  Gli intent verranno descritti con maggiore dettaglio più avanti nel corso 30
  • 31. Ciclo di vita di una Attività 31
  • 32. Gli stati di una attività Una attività può assumere uno dei seguenti tre stati:  Attivo (Resumed): L’attività è in primo piano (foreground) e l’utente può interagire con essa  In Pausa: L’attività è in vita, ma ce n’è un’altra che la copre in maniera parziale, ad esempio con una trasparenza. In questo stato l’attività conserva i suoi dati e quelli dei suoi membri, ma può essere killata dal SO se ci fosse estrema necessità di liberare memoria.  Interrotta (Stopped): L’attività è in background, mentre ce n’è un’altra in foreground. Anche in questo caso l’attività può essere considerata ancora in vita, ma può essere uccisa se il sistema ha bisogno di liberare risorse per altre applicazioni 32
  • 33. Implementare i metodi di callback La superclasse Activity mette a disposizione una serie di metodi di callback che il programmatore può implementare per gestire il ciclo di vita NB: richiamare sempre il metodo della superclasse prima di implementare la logica 33
  • 34. Avviare una attività  In android non è possibile avviare direttamente una attività, ma si deve utilizzare il meccanismo degli Intent.  E’ possibile avviare una attività con due metodi:  startActivity(Intent)  startActivityOnResult(Intent,int requestCode) 34
  • 35. Interfacce modulari con i Fragment  I Fragment rappresentano porzioni di user interface all’interno di una attività.  I fragment permettono la modularizzazione dell’interfaccia, che può adattarsi in questa maniera ai diversi orientamenti di un tablet (portrait/landscape) 35
  • 36. 7 Debuggare e monitorare un’applicazione 36
  • 37. Lanciare un’applicazione Android in Debug  In Eclipse è possible lanciare un’applicazione Android in debug mode. Lanciare l’applicazione in questa modalità porta all’apertura delle seguenti view:  Debug  Variables  Breakpoints  LogCat: Visualizza il log di sistema di Android 37
  • 38. Utilizzare il Log di sistema  La classe da utilizzare per effettuare log e android.util.Log, fornita dei seguenti metodi:  v(String, String) (verbose)  d(String, String) (debug)  i(String, String) (information)  w(String, String) (warning)  e(String, String) (error) Log.i("MyActivity", "MyClass.getView() — get item number " + position); 38
  • 39. La prospettiva DDMS (Dalvik Debug Monitor Server)  Aprendo la prospettiva DDMS sarà possibile visualizzare una serie di controlli ulteriori sul dispositivo o sull’emulatore:  Devices – Mostra la lista di dispositivi ed emulatori connessi al debugger  Emulator Control – Permette di simulare delle funzionalità del dispositivo (come ad esempio ricevere una telefonata)  LogCat - Visualizza il log di sistema di Android  Threads – Mostra I thread attualmente presenti sulla VM  Heap – Mostra la quantità di memoria usata nell’heap  Allocation Tracker – Traccia l’allocazione di memoria  File Explorer – Permette di esplorare il filesystem del dispositivo 39
  • 40. La prospettiva DDMS (Dalvik Debug Monitor Server) 40
  • 41. Riferimenti  Android Dev Center: http://developer.android.com/index.html Gaetano Raimondo Technical Leader | Software Engineering Links Management and Technology S.p.A. Via R. Scotellaro, 55 - 73100 Lecce Tel: +39 0832.443911 - Fax: +39 0832.443926 e-Mail: gaetano.raimondo@linksmt.it 41
  • 42. LECCE MILANO ROMA Via R. Scotellaro, 55 Via Gonzaga, 5 Via XX Settembre, 4 Tel. +39 0832 443911 | Fax +39 0832 443926 | info@linksmt.it | www.linksmt.it