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

Upload: francesco-ronchi

Post on 29-Jun-2015

650 views

Category:

Technology


1 download

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

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