My life with Android @ JUG Torino 2012

31
29 Febbraio 2012 JUG Torino 1 Sviluppo su Android JUG Torino 2011 Francesco Ronchi francesco.ronchi (at) synesthesia.it www.synesthesia.it

description

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/

Transcript of My life with Android @ JUG Torino 2012

Page 1: 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

Page 2: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 2

Cos'è AndroidCos'è Android

● Sistema operativo dedicato ai device mobili:● smartphone, ● tablet, ● Set-top boxes● TV● Sistemi embedded...

Page 3: My life with Android @ JUG Torino 2012

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

Page 4: My life with Android @ JUG Torino 2012

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"

Page 5: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 5

Architettura di AndroidArchitettura di Android

Page 6: My life with Android @ JUG Torino 2012

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

Page 7: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 7

DalvikDalvik

● Java?● Virtual Machine ottimizzata ● Formato .dex● Da Android 2.2 include JIT● java -> class -> jar -> dex -> apk

Page 8: My life with Android @ JUG Torino 2012

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)

Page 9: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 9

Versioni e marketshareVersioni e marketshare

Page 10: My life with Android @ JUG Torino 2012

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

Page 11: My life with Android @ JUG Torino 2012

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

Page 12: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 12

Size Matters (?)Size Matters (?)

● 2012● Android 400k+● Apple 700k+

Page 13: My life with Android @ JUG Torino 2012

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

Page 14: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 14

Prerequisiti per iniziarePrerequisiti per iniziare

● Programmazione a oggetti● Java● XML

● C/C++ per NDK

● Problematiche dello sviluppo mobile...

Page 15: My life with Android @ JUG Torino 2012

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/

Page 16: My life with Android @ JUG Torino 2012

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

Page 17: My life with Android @ JUG Torino 2012

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)

Page 18: My life with Android @ JUG Torino 2012

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

Page 19: My life with Android @ JUG Torino 2012

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...)

Page 20: My life with Android @ JUG Torino 2012

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...)

Page 21: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 21

Al lavoro...Al lavoro...

● Creiamo una applicazione (finalmente!)

● Esempi...●

Page 22: My life with Android @ JUG Torino 2012

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

Page 23: My life with Android @ JUG Torino 2012

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!

Page 24: My life with Android @ JUG Torino 2012

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

Page 25: My life with Android @ JUG Torino 2012

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

Page 26: My life with Android @ JUG Torino 2012

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

Page 27: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 27

Ciclo vitale Ciclo vitale di una di una

ActivityActivity

Page 28: My life with Android @ JUG Torino 2012

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

Page 29: My life with Android @ JUG Torino 2012

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

Page 30: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 30

E' solo l'inizio...E' solo l'inizio...

● … ma ci fermiamo qui

● Q&A?

Page 31: My life with Android @ JUG Torino 2012

29 Febbraio 2012 JUG Torino 31

● Grazie a tutti!francesco.ronchi (at) synesthesia.it - @qba75

www.synesthesia.it - @synesthesiait