My life with Android @ JUG Torino 2012
-
Upload
francesco-ronchi -
Category
Technology
-
view
649 -
download
1
description
Transcript of My life with Android @ JUG Torino 2012
29 Febbraio 2012 JUG Torino 1
Sviluppo su Android
JUG Torino 2011Francesco Ronchi
francesco.ronchi (at) synesthesia.it www.synesthesia.it
29 Febbraio 2012 JUG Torino 2
Cos'è AndroidCos'è Android
● Sistema operativo dedicato ai device mobili:● smartphone, ● tablet, ● Set-top boxes● TV● Sistemi embedded...
29 Febbraio 2012 JUG Torino 3
Perchè sviluppare su AndroidPerchè 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 4
Una chicca...Una chicca...
● Andy Rubin
● the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"
29 Febbraio 2012 JUG Torino 5
Architettura di AndroidArchitettura di Android
29 Febbraio 2012 JUG Torino 6
Architettura in breve...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 7
DalvikDalvik
● Java?● Virtual Machine ottimizzata ● Formato .dex● Da Android 2.2 include JIT● java -> class -> jar -> dex -> apk
29 Febbraio 2012 JUG Torino 8
Versioni di AndroidVersioni 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 9
Versioni e marketshareVersioni e marketshare
29 Febbraio 2012 JUG Torino 10
Android MarketAndroid 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 11
Il market per gli sviluppatoriIl 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 12
Size Matters (?)Size Matters (?)
● 2012● Android 400k+● Apple 700k+
29 Febbraio 2012 JUG Torino 13
Il market per gli sviluppatoriIl 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 14
Prerequisiti per iniziarePrerequisiti per iniziare
● Programmazione a oggetti● Java● XML
● C/C++ per NDK
● Problematiche dello sviluppo mobile...
29 Febbraio 2012 JUG Torino 15
Strumenti per lavorareStrumenti per lavorare
● Android API● Development tools● Emulatore Android● DDMS (Dalvik Debug Monitor Service)● Documentazione, Esempi→ http://developer.android.com/
29 Febbraio 2012 JUG Torino 16
Passi iniziali 1Passi 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 17
Passi iniziali 2Passi 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 18
ToolsTools
● 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 19
Firma dei pacchetti .apkFirma 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 20
Librerire utili e 3Librerire utili e 3rdrd parties 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 21
Al lavoro...Al lavoro...
● Creiamo una applicazione (finalmente!)
● Esempi...●
29 Febbraio 2012 JUG Torino 22
Anatomia di una AppAnatomia 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 23
Le RisorseLe 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 24
Qualifier risorseQualifier 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 25
ManifestManifest
● 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 26
Componenti baseComponenti 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 27
Ciclo vitale Ciclo vitale di una di una
ActivityActivity
29 Febbraio 2012 JUG Torino 28
Gestione della memoriaGestione 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 29
IntentIntent
● 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 30
E' solo l'inizio...E' solo l'inizio...
● … ma ci fermiamo qui
● Q&A?
29 Febbraio 2012 JUG Torino 31
● Grazie a tutti!francesco.ronchi (at) synesthesia.it - @qba75
www.synesthesia.it - @synesthesiait