Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sviluppare applicazioni Android

Sviluppare applicazioni Android

Presented at JUG Genova meeting @ NIS - 28/05/2013

Paolo Montalto

May 28, 2013
Tweet

More Decks by Paolo Montalto

Other Decks in Programming

Transcript

  1. Sviluppare applicazioni Android
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  2. Argomenti trattati
    •  Cos’è Android
    •  SDK (eclipse + tools)
    •  Struttura di un progetto android
    •  Componenti base (Activity, View, Intent …)
    •  Fragment (cenni)
    •  Frammentazione e Support library (cenni)
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  3. Che cos’è android?
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Sistema operativo per dispositivi mobili
    •  Sviluppato dalla Open Handset Alliance
    (84 aziende tra cui Google, Samsung, LG,
    Nvidia…)
    •  Open Source e gratuito
    •  Basato su Kernel Linux
    •  Linguaggio di programmazione Java

    View Slide

  4. Android != Linux
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Basato inizialmente su Kernel 2.6
    •  Supporto ARM (e successivamente x86)
    •  Sviluppato separatamente
    •  Aggiunte patch non presenti in main branch linux
    (ashmem, alarms, power management, low memory kliller,
    logger…)
    •  Parziale integrazione in versione 3.3
    La  release  3.3  del  kernel  vi  perme1erà  di  avviare  un  userspace  Android  senza  
    alcuna  modifica,  sebbene  la  gesNella  versione  3.4  del  kernel  si  spera  di  poter  correggere  questo  problema  e  
    arrivare  ad  una  piena  integrazione  con  Android.  
     
    Greg  Kroah-­‐Hartman  (Linux  kernel  –stable  branch  maintainer)  

    View Slide

  5. Java ma non JVM
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Dalvik Virtual Machine
    •  No Java SE v Java ME
    •  Subset Apache Harmony
    •  No executable jars: apk
    .java   .class   .dex  

    View Slide

  6. Architettura
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Dalvik Virtual Machine
    E’ qui che agiamo!

    View Slide

  7. SDK
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Android developer tools
    •  tools a linea di comando (adb, zipalign)
    •  SDK Manager
    •  AVD Manager (android virtual device manager)
    •  Emulatore
    •  Eclipse ADT plugin
    L’android SDK è costituito da:  

    View Slide

  8. Android SDK Manager
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  9. AVD Manager
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  10. Emulatore
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Rom nativa android
    •  Google API
    •  Mock Locations
    •  Simulazione Rete GSM
    •  Pulsanti hardware
    •  Hardware keyboard
    •  D-Pad
    •  Pulsanti volume
    •  Pulsante “Power”

    View Slide

  11. Graphical layout editor
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  12. Dalvik Debug Monitor Server
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  system information
    •  screen capture
    •  thread/heap info
    •  logcat
    •  processi
    •  controllo emulatore
    •  traffico di rete
    •  stato della rete
    •  posizioni GPS (mock)

    View Slide

  13. Struttura di un Progetto
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Codice Java
    Codice generato
    dal compilatore
    Librerie e dipendenze di
    sistema
    Definizione dell’applicazione
    Risorse:
    •  layout (xml)
    •  Immagini
    •  Stili
    •  File lingua
    Librerie .jar, .so
    Altri file dell’applicaizone
    (es. .pdf, .html, .db …)

    View Slide

  14. La directory “res”
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Risorse grafiche
    Risorse che rappresentano valori (colori,
    dimensioni, stringhe di testo, stili della GUI)
    I valori dopo il “-” nei nomi delle directory
    sono i selettori delle risorse, servono ad
    identificare l’utilizzo che l’applicazione farà
    di quelle risorse:
    •  hdpi: dispositivi con densità di schermo alta
    •  sw600dp: device la cui risoluzione orizzontale
    sia almeno di 600dp
    •  v11: utilizzare solo se la versione di android
    sul dispositivo è 11
    •  it: se la lingua del device è Italiano

    View Slide

  15. Activity
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Activity è il “contesto” base di esecuzione in
    un’applicazione android.
    •  Entry point dell’applicazione android
    •  Solo una in foreground
    •  Solo una attiva
    •  Stack: nuove activity sempre on top

    View Slide

  16. Activity: ciclo di vita
    Copyright© 2013 Paolo Montalto http://www.xabaras.it

    View Slide

  17. View
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Componenti base della UI di android
    •  Definite e utilizzate nei file xml di Layout
    •  Una view sa come disegnare se stessa
    •  Risponde agli eventi (es: onClick, onLongClick)
    •  Organizzate in gerarchie (ViewGroup)
    Il framework android si occupa di misurare, disegnare
    e disporre le View e i ViewGroup

    View Slide

  18. Layout
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  RelativeLayout: Layout eredita da ViewGroup
    •  TextView è una View (come EditText, WebView, ListView, ScrollView…)
    •  Riferimenti a risorse esterne al Layout (@string, @drawable, @dimen)
    File xml

    View Slide

  19. Layout e Activity
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Caricamento layout nell’activity Accesso alle View
    Accesso a risorse

    View Slide

  20. Intent
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    E’ una descrizione astratta di un’operazione da eseguire.
    Generalmente usato per lanciare un’Activity
    Parametri principali:
    •  action: l’azione che è necessario compiere, ad esempio ACTION_VIEW,
    ACTION_EDIT, ACTION_MAIN, etc.
    •  data: i dati sui quali effettuare l’operazione, ad esempio una persona nel
    database di contatti, un url di un sito web, etc.
    Esempi (action – data):
    •  ACTION_VIEW - content://contacts/people/1
    mostra informazioni sulla persona il cui ID è 1
    •  ACTION_DIAL - content://contacts/people/1
    mostra la scheramata di chiamata per la persona il cui ID è 1
    1/3

    View Slide

  21. Intent
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    2/3
    Attributi secondari:
    •  category: informazioni aggiuntive sull’azione da eseguire (es.
    CATEGORY_LAUNCHER)
    •  type: specifica il MIME type dei dati passati all’Intent
    •  component: specifica esplicitamente il nome della classe da usare
    •  extras: può essere usato per passare informazioni aggiuntive all’activity
    lanciata
    Esempi:
    •  ACTION_MAIN con category CATEGORY_HOME
    lancia la schermata Home
    •  ACTION_GET_CONTENT con MIME type vnd.android.cursor.item/phone
    Mostra una lista di numeri di telefono, consentendo all’utente di
    selezionarne uno e ritornare il valore selezionato all’activity di partenza

    View Slide

  22. Intent
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    3/3
    Lanciare un’activity:
    Recuperare il risultato di un’activity:

    View Slide

  23. AndroidManifest.xml
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Ogni applicazione android deve avere un file AndroidManifest.xml nella sua
    directory principale.
    Il manifest fornisce al sistema android informazioni essenziali
    sull’applicazione.
    •  Principali caratteristiche di AndroidManifest.xml
    •  definisce il package name dell’applicazione
    •  descrive i componenti dell’applicazione (activity, servizi, provider di
    contenuti)
    •  definisce quali permessi l’applicazione avrà per l’accesso a specifiche
    funzionalità / caratteristiche hardware
    •  dichiara il livello minimo di API supportato
    •  dichiara eventuali librerie utlizzate esterne all’applicazione (presenti in un
    package differente)
    1/2

    View Slide

  24. AndroidManifest.xml
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Package name
    Icona
    applicazione
    Nome visualizzato
    Permessi
    Versione App
    Versione Android SDK
    Intent
    Activity
    principale
    2/2

    View Slide

  25. Fragment (cenni)
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Introdotti in android 3.0 Honeycomb
    •  Fondamentali per il supporto alle applicazioni
    Tablet
    •  Porzioni indipendenti dell’interfaccia utente
    •  Hanno un loro ciclo di vita (legato a quello
    dell’activity)
    •  Possono essere combinati in layout muti-pane
    •  Possono essere riutilizzati
    1/3

    View Slide

  26. Fragment (cenni)
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    Tipico utilizzo dei Fragment
    2/3

    View Slide

  27. Fragment (cenni)
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    3/3
    •  Possono essere
    inseriti nella
    definizione xml del
    layout
    •  Possono essere
    dichiarati via codice

    View Slide

  28. Altri componenti del framework
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Dialog
    visualizzano finestre di dialogo (es: i classici alert)
    •  Service
    eseguono codice in background, possono essere in esecuzione anche quando
    l’app non lo è
    •  Broadcast Receiver
    ricevono e gestiscono eventi in modo asincrono
    •  Content Provider
    consentono di accedere ai dati attraverso un’interfaccia standard (possibile
    definire custom)
    •  Notification
    mostrano informazioni nella barra delle notifiche

    View Slide

  29. Frammentazione
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Ecosistema frammentato
    •  Frammentazione delle versioni di
    android
    •  Frammentazione delle dimensioni
    di schermo
    •  Frammentazione delle densità di
    schermo
    •  Personalizzazioni dei produttori

    View Slide

  30. Support Library
    Copyright© 2013 Paolo Montalto http://www.xabaras.it
    •  Introdotta per porre un rimedio alla frammentazione relativa
    a differenti versioni del sistema operativo
    •  Consente l’accesso a tutta una serie di funzionalità
    introdotte da android HoneyComb(android 3.0 api v11) in
    poi su dispositivi con api precedente
    •  Supporta dispositivi android da api v4 in poi
    •  E’ anche detta support-v4
    •  E’ distribuita sotto forma di .jar da includere nel progetto
     

    View Slide

  31. Grazie per l’attenzione!

    View Slide