Slides del talk "My life with Android" tenuto da Francesco Ronchi di Synesthesia srl al JUG Torino (29 febbraio 2012) sullo sviluppo applicazioni Android
http://presentz.org/jugtorino/201202_android
http://www.synesthesia.it/
1. Sviluppo su Android
JUG Torino 2011
Francesco Ronchi
francesco.ronchi (at) synesthesia.it
www.synesthesia.it
29 Febbraio 2012 JUG Torino 1
2. Cos'è Android
● Sistema operativo dedicato ai device mobili:
● smartphone,
● tablet,
● Set-top boxes
● TV
● Sistemi embedded...
29 Febbraio 2012 JUG Torino 2
3. Perchè sviluppare su Android
● Creato da Google: Open source (lic. Apache
2.0) e basato su Linux (garanzia di apertura)
● Sviluppo in Java e XML
(ci si sente a casa...)
● SDK Multipiattaforma (Lin/Mac/Win)
● Successo crescente (850k attivaz./g)
● Ecosistema Android
29 Febbraio 2012 JUG Torino 3
4. Una chicca...
● Andy Rubin
● the definition of open:
"mkdir android ; cd android ; repo init
-u
git://android.git.kernel.org/platform/m
anifest.git ; repo sync ; make"
29 Febbraio 2012 JUG Torino 4
6. Architettura in breve...
● Applicazioni (base e di terze parti)
● Application Framework
● Virtual Machine “Java” (Dalvik)
● Librerie native (Multimedia, Database,
WebKit, ecc...)
● Linux Kernek & Drivers
29 Febbraio 2012 JUG Torino 6
7. Dalvik
● Java?
● Virtual Machine ottimizzata
● Formato .dex
● Da Android 2.2 include JIT
● java -> class -> jar -> dex -> apk
29 Febbraio 2012 JUG Torino 7
8. Versioni di Android
Storiche:
● Android 1.5 Cupcake (2009)
● Android 1.6 Donut (2009)
● Android 2.0/2.1 Eclair (2009)
● Android 2.2 Froyo (2010)
Recenti:
● Android 2.3.x Gingerbread (2010/11)
● Android 3.x Honeycomb (2011) solo per tablet!
● Android 4.x Ice Cream Sandwich (2011/12)
29 Febbraio 2012 JUG Torino 8
10. Android Market
● 25$ per la registrazione (una tantum)
● Pubblicazione immediata app
● Applicazioni free e a pagamento
● 30% di commissione a Google
● In-app billing
29 Febbraio 2012 JUG Torino 10
11. Il market per gli sviluppatori
● Gestione App
● Artwork, descrizioni, ecc.
● Commenti/valutazioni
● Errori
● Statistiche
● Google Checkout
● Acquisti app
● Acquisti in-app
29 Febbraio 2012 JUG Torino 11
12. Size Matters (?)
● 2012
● Android 400k+
● Apple 700k+
29 Febbraio 2012 JUG Torino 12
13. Il market per gli sviluppatori
● Gestione App
● Artwork, descrizioni, ecc.
● Commenti/valutazioni
● Errori
● Statistiche
● Google Checkout
● Acquisti app
● Acquisti in-app
29 Febbraio 2012 JUG Torino 13
14. Prerequisiti per iniziare
● Programmazione a oggetti
● Java
● XML
● C/C++ per NDK
● Problematiche dello sviluppo mobile...
29 Febbraio 2012 JUG Torino 14
15. Strumenti per lavorare
● Android API
● Development tools
● Emulatore Android
● DDMS (Dalvik Debug Monitor Service)
● Documentazione, Esempi
→ http://developer.android.com/
29 Febbraio 2012 JUG Torino 15
16. Passi iniziali 1
● scaricare sdk da
● http://developer.android.com/
● impostare il path per l'sdk
● Lanciare il comando
● Android (Mac, Linux)
● SDK Manager.exe (Windows)
● scaricare gli sdk e le api necessarie
29 Febbraio 2012 JUG Torino 16
17. Passi iniziali 2
● scaricare Eclipse (classic, java o RCP)
● installare plugin (ADT) su Eclipse
● configurare il path dell'sdk in Eclipse
(preferences)
● creare un device virtuale (AVD)
29 Febbraio 2012 JUG Torino 17
18. Tools
● Android
● Adb (android debug bridge)
● Draw 9 Patches (tutorial! http://goo.gl/lWMFv)
● Monkey
● Emulator
● Aapt, zipalign, ecc.. per creare pacchetti apk
e firmarli digitalmente
29 Febbraio 2012 JUG Torino 18
19. Firma dei pacchetti .apk
● Per poter caricare sul device un .apk deve
essere firmato.
● La firma usa un certificato auto-generato
● Debug: lo genera la IDE
● Deploy: generato manualmente per il caricamento su
market
keytool -genkey -v -keystore NOME_KEYSTORE.keystore -alias
NOME_ALIAS -keyalg RSA -keysize 2048 -validity 10000
● Mai perdere il keystore!! (e la password...)
29 Febbraio 2012 JUG Torino 19
20. Librerire utili e 3rd parties
● Support Packages
●compatibilità con vecche versioni, sfruttando caratteristiche
recenti (es fragment)
● Google Analytics
● ADMob
● Gson
●Gestione avanzata json
● Bugsense
● Gestione bugs remota
● Librerie vendor-specific (Samsung, LG, Motorola...)
29 Febbraio 2012 JUG Torino 20
21. Al lavoro...
● Creiamo una applicazione (finalmente!)
● Esempi...
●
29 Febbraio 2012 JUG Torino 21
22. Anatomia di una App
● src – sorgenti
● gen – file generati
● assets – file vari (non risorse)
● res - risorse
● Android Manifest xml – configurazione app
29 Febbraio 2012 JUG Torino 22
23. Le Risorse
● drawables (immagini...)
● layouts (xml di definizione UI)
● values (stringhe, colori, ecc)
● menu (definizione menu)
● anim (animazioni)
● raw (tutto il resto)
- Tutte codificate in R.java mediante id!
– Gestibili con qualifier differenti!
29 Febbraio 2012 JUG Torino 23
24. Qualifier risorse
● Lingua (it, en, en_rUS, ...)
● Dimensione schermo (swXXdp, wXXdp...)
● Categoria schermo (small, large, medium...)
● Aspect, Orientation
● DPI
● Versione OS
● Ecc... http://goo.gl/JAuu
29 Febbraio 2012 JUG Torino 24
25. Manifest
● Contiene le informazioni base
dell'applicazione e la configurazione dei
suoi componenti
● Nome, version number, version name
● package,
● activities, servizi ecc..
● intents,
● permessi richiesti dalla app
29 Febbraio 2012 JUG Torino 25
26. Componenti base
● Activities → equivalgono alle“finestre”
● Services → lavorano in background
● Intents → permettono di chiamare le
activities
● Bundles → salvano lo “stato” di una activity
● Application → raggruppa più activities
29 Febbraio 2012 JUG Torino 26
27. Ciclo vitale
di una
Activity
29 Febbraio 2012 JUG Torino 27
28. Gestione della memoria
● Le activities in determinati momenti
possono essere killate se è richiesta maggiore
ram.
● Dopo onPause, onStop, onRestore
● onSaveInstanceState e
onRestoreInstanceState permettono di
salvare lo stato
29 Febbraio 2012 JUG Torino 28
29. Intent
● Richiamano una activity
● Espliciti o impliciti
● È possibile aggiungere dei dati/parametri
● È possibile ricevere valori di ritorno
● Asincroni
● Interni all'app, tra app, di sistema
29 Febbraio 2012 JUG Torino 29
30. E' solo l'inizio...
● … ma ci fermiamo qui
● Q&A?
29 Febbraio 2012 JUG Torino 30
31. ● Grazie a tutti!
francesco.ronchi (at) synesthesia.it - @qba75
www.synesthesia.it - @synesthesiait
29 Febbraio 2012 JUG Torino 31