AA 2014/15 Basi Android Programmazione Java per Disposi8vi Mobili 1 Android •  Cosa è Android? –  Android è un insieme di strumen8 e librerie per sviluppare applicazioni mobili –  è più di un SO •  Android si definisce “open” –  Con8ene tecnologie open source •  Linux –  Il codice di Android è open •  Licenza Open Source Apache 2.0 –  Chi vuole usare Android non deve pagare Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 2 1 AA 2014/15 Componen/ del SO hOp://developer.android.com Programmazione Java per Disposi8vi Mobili 3 Virtual Machine •  Android non usa una Java Virtual Machine –  Cioè in Android non viene eseguito bytecode •  Android usa la Dalvik Virtual Machine –  Non una Java Virtual Machine –  La DVM esegue bytecode compilato (.dex) •  Si compilano i .class •  I .dex sono molto più compaW •  Usa Just in Time Compiler –  Frammen8 di codice na8vo •  Orientata ai registri –  Visione più “direOa” della nella vm Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 4 2 AA 2014/15 Tool Android •  So[ware development KIT –  Tools per sviluppo applicazioni java •  Android Studio –  IDE basa8 su IntelliJ •  Android Development Tools –  plug-­‐in di Eclipse non più supportato •  Na8ve Development Kit –  Sviluppo di applicazioni o parte di esse in C++ Programmazione Java per Disposi8vi Mobili 5 Stru:ura SDK •  Tools –  Strumen8 per la ges8one dei progeW •  android, emulator, etc.
•  Plaborms –  Versioni di android • 
• 
• 
• 
4.x, 5.x Cellulari e Tablet 3.2, 3.1, 3.0 Tablet 2.3.3, 2.2, 2.1 Cellulari Ad ogni versione corrisponde un livello di API •  Extra –  librerie google ed altro Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 6 3 AA 2014/15 Applicazioni Android • 
• 
• 
• 
• 
• 
Sono scriOe in linguaggio java Sono contenute in un Android package file .apk Vivono in un ambiente isolato rispeOo ad altre app Sono integrate nel sistema opera8vo Consistono in componen8, risorse, file descriOore Componen8 –  Ac8vity –  Service –  Content Provider –  Broadcast Receiver Programmazione Java per Disposi8vi Mobili 7 Ac/vity •  Rappresenta una schermata dell’applicazione •  In generale una applicazione con8ene varie Ac8vity •  Quando avviamo una nuova aWvità la corrente è posta in background –  ho uno stack di ac8vity •  Le GUI si realizzano in XML o java •  Si controlla la vita dell’ac8vity mediante callback –  onCreate, onPause Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 8 4 AA 2014/15 Service •  Servono ad eseguire operazioni in background •  Non hanno interfaccia grafica •  Servono ad operazioni come suonare la musica, ges8re la rete, leggere la posizione, etc. •  Sono esegui8 indipendentemente da chi li ha crea8 •  Possono avere una interfaccia verso altri componen8 Programmazione Java per Disposi8vi Mobili 9 Content Provider •  Sono usa8 per memorizzare e leggere da8 rendendoli accessibili alle applicazioni •  Sono l’unico modo di condividere da8 fra applicazioni •  Espongono una URI pubblica per individuare univocamente i propri da8 •  I da8 sono espos8 in forma di una singola tabella di database •  ci sono CP predefini8 per contaW, media, etc. Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 10 5 AA 2014/15 Broadcast Receiver •  Sono componen8 che rispondono ad “annunci” invia8 a tuW i componen8 dal sistema •  Ex. lo schermo si spegne, la baOeria e scarica, c’è una chiamata in arrivo, etc. •  Anche le app possono inviare annunci broadcast Programmazione Java per Disposi8vi Mobili 11 Manifest file •  Ogni applicazione con8ene il file AndroidManifest.xml •  Presenta l’applicazione al sistema opera8vo •  Descrive i componen8 dell’applicazione •  Dichiara i permessi necessari all’applicazione •  Dichiara le API minime necessarie all’applicazione Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 12 6 AA 2014/15 Proge:o Android •  Creare un progeOo Android –  Se vogliamo creare un app Android non basta scrivere un file: –  Devo usare i tool a disposizione •  Due 8pi di progeOo –  dipende dal sistema di compilazione •  Compilatori –  ant – quello legato ad ADT –  gradle – quello usato in Android Studio Programmazione Java per Disposi8vi Mobili 13 Creazione su command line > android create project --package ppl.pjdm.helloworld
--activity HelloWorld --target 1 --path ./HelloWorld
–g –v 1.1.0
–  Package: •  Iden8fica8vo unico della nostra app –  Ac8vity •  Schermata android lanciata dall'icona –  Target •  Id delle plaborm scaricate •  android list targets
•  ProgeOo gradle –  opzione –g specifica il progeOo gradle –  opzione –v specifica la versione del plugin android per gradle Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 14 7 AA 2014/15 Stru:ura proge:o HelloWorld gradle – tool di compilazione src – tuOo il codice e le risorse build.gradle -­‐ file per la compilazione altri file per la compilazione Programmazione Java per Disposi8vi Mobili 15 Compilare un proge:o gradle •  Android per compilare usa gradle –  Sistema di compilazione/installazione automa8co •  Il comado da dare è > ./gradlew assembleDebug
•  Per vedere tuW comandi – 
./gradlew tasks Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 16 8 AA 2014/15 Compilare un proge:o con ant •  Android per compilare usa il tool ant –  Sistema di compilazione/installazione automa8co –  Va scaricato a parte •  Il comado da dare è > ant debug
•  Creo un applica8vo di test –  Alterna8ve: release, install, reinstall, uninstall, help Programmazione Java per Disposi8vi Mobili 17 Android Virtual Devices •  emulator –  Applicazione che emula un device Android completo •  Linux per ARM, librerie na8ve, DVM, packages, applicazioni –  Usa QEMU per emulare il device fisico –  Vuole come parametro un AVD •  Android Virtual Device –  Sono le caraOeris8che del device emulato •  Es. Hardware, target, display, memoria, etc. •  Creare AVD > android create avd -n my_avd -t 1
•  Lanciare l’emulatore > emulator -avd my_avd
Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 18 9 AA 2014/15 Installare ed eseguire •  Vedere la lista dei device Ø  adb devices Ø emulator-­‐5554 device •  Installare > adb –s emulator-5554 install HelloWorld-debug.apk
•  Eseguire … Programmazione Java per Disposi8vi Mobili 19 Android Studio •  Sistema di sviluppo sviluppato intorno ad IntelliJ –  Si conneOe ai tool di sviluppo presen8 nel sistema •  es. java jdk, sdk android, g++ gcc gdb, etc. •  Integra gradle •  Semplifica le operazioni faOe prima –  ci evita di operare a linea di comando Programmazione Java per Disposi8vi Mobili Programmazione Java per Disposi8vi Mobili 20 10