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. 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
  2. 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
  3. 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  ges<one  dell’alimentazione  non  sia  molto  buona.   Nella  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)  
  4. 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  
  5. 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:  
  6. 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”
  7. 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)
  8. 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 …)
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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