SlideShare une entreprise Scribd logo
1  sur  85
ANDROID TOOLS
            COSA SONO E COSA POSSONO FARE
      COSA C’E’ DI NUOVO NELLE ULTIME VERSIONI
           COME GESTIRE PROGETTI COMPLESSI




Marco Gasparetto (@marcogasparetto)
Superpartes Innovation Campus
INDICE

• Panoramica sul contenuto degli SDK Tools.
• Riepilogo delle principali funzionalità.
• Svolgimento di due progetti di esempio ed
 esecuzione di alcuni tools.

• Novità delle ultime versioni.
ANDROID TOOLS
Permettono a noi sviluppatori di creare applicazioni per
smartphone e tablet Android.


          piattaforma                      workflow
              host

  workstations     workstations   Android Tools   Android Tools
   Windows            Linux             +               +
                                   Java SDK         Java SDK
           workstations                 +               +
            MacOS X                   Ant          Eclipse IDE
                                        +
                                   Text editor
COSA SONO I TOOLS
Android Tools sono l’insieme di strumenti offerti agli
sviluppatori.

      SDK Tools         SDK Platform Tools        NDK Tools


  Platform 1.6 (API 4)            SDK Add-on Android Support
  Platform 8 (API 2.2)            SDK Add-on Google AdMob Ads SDK
  Platform 2.3.3 (API 10)         SDK Add-on Google Analytics SDK
  Platform 4.0.3 (API 15)         SDK Add-on Google Market Billing
                                  SDK Add-on Intel HAXM
  Platform ...
                                  SDK Add-on ...


                       ADT Plugin for Eclipse
COSA SONO I TOOLS
 SDK Platforms sono le differenti versioni di Android

                                              SDK Platform

                                              Documentation for Android SDK
                  Platform
                                              Sources for Android SDK

                                              Samples for SDK



                                      Extras (Google APIs, Samsung Images,
System Images (ARM, Intel x86, ...)   Motorola Images, LG Images, Intel
                                      Atom x86 Images)
COSA SONO I TOOLS
            Installazione e manutenzione

Installazione
http://developer.android.com/sdk/index.html



Manutenzione (Android SDK Manager)
[SDK_PATH]$ ./tools/android


Sito ufficiale (preview, changelog, roadmap, technical docs)
http://tools.android.com/
COSA POSSIAMO FARE CON I
            TOOLS
             Le tre operazioni di base



1. Creazione di un progetto
                              Eclipse IDE + ADT plugin
          2. Compilazione
                              Ant + Text Editor
           3. Deploy e run
COSA POSSIAMO FARE CON I
         TOOLS
         Creazione di un nuovo progetto


Eclipse: File -> New -> Android Project


$ android create [ project | test-project | lib-project ]
         --name Progetto
         --target 19
         --path ./Progetto
         --package it.mycompany.android.apps.myproject
         --activity MainActivity
COSA POSSIAMO FARE CON I
         TOOLS
  Compilazione e build di un progetto




   Eclipse: Project -> Build Automatically


   [Progetto]$ ant all clean [ debug | release ]
COSA POSSIAMO FARE CON I
         TOOLS
       Deploy e run di un’applicazione




 Eclipse: Run -> [ Run | Debug ]


 [Progetto]$ adb install ./bin/Progetto-debug.apk
 oppure
 [Progetto]$ ant all clean [ debug | release ] install
GESTIRE PROGETTI
              COMPLESSI
              Progetto di esempio: scenario 1


                             applicazione




                        versione     versione
                          LITE         PRO




PROBLEMA: Utilizzare i tools per gestire progetti che hanno
   dipendenze da librerie e richiedono target multipli.
GESTIRE PROGETTI
                   COMPLESSI
                                       Scenario 1


              applicazione LITE                            applicazione PRO
                 Contiene codice                              Contiene codice e
                 e risorse comuni.                              risorse PRO.




                                            libreria
                         Contiene codice e risorse di utilità generale
                            (classi helper, custom widget, ecc.).

NOTE
Utilizziamo una libreria di utilità interna oltre alle librerie Google ed ai JAR esterni.
Tutti i target devono andare sul market, quindi devono avere package differenti.
GESTIRE PROGETTI
           COMPLESSI
                 Scenario 1: problema

1. Eclipse non ha nativamente il concetto di TARGET.

2. Le classi e le risorse PRO non devono essere compilate ed
 incluse nel target LITE.

3. Le due app devono essere compilate e impacchettate in
 package differenti per poter andare sul market.




                Come si può risolvere ?
GESTIRE PROGETTI
                COMPLESSI
                  Scenario 1: possibili soluzioni



1.                                    2.

Utilizziamo uno script esterno (es.   Trasformiamo il progetto in una
python) che effettua operazioni sui   libreria che poi viene inclusa ed
file ed include o esclude              utilizzata da progetti wrapper. Ogni
determinate classi e risorse, ed      wrapper è un target che che ha il
effettua operazioni di rinomina dei   proprio package e contiene le
package.                              proprie classi e risorse.
GESTIRE PROGETTI
                   COMPLESSI
                               Scenario 1: soluzione

                                                        applicazione
                                                           PRO
                                                           app project
        libreria                   applicazione         Contiene codice e
      library project                 library project     risorse PRO.
    Contiene codice e               Contiene codice
risorse di utilità generale.        e risorse comuni.   applicazione
                                                           LITE
                                                            app project


E’ possibile dalla versione 17 (03/2012) degli SDK Tools.
• dependency management improvements (R.java merge)
• added support for custom views with custom attributes
ECLIPSE TIME


https://github.com/gasparetto/whymca12
ECLIPSE TIME


  Le risorse delle librerie sono accessibili alle
                  applicazioni.
Le applicazioni possono sovrascrivere le risorse.
  Es. Schermata di About e stringa app_name.
ECLIPSE TIME

   Nella classe Application di ogni progetto posso
       configurare una variabile globale Target.
 Discriminando su questa posso ramificare il codice.

Posso caricare classi in maniera dinamica utilizzando il
                    Class Loader.
ECLIPSE TIME


 Anche gli attributi XML custom definiti nelle librerie
sono visibili alle applicazioni. Il package viene risolto
                    automaticamente.
COSA POSSIAMO FARE CON I
         TOOLS




    Profilazione della memoria
COSA POSSIAMO FARE CON I
                 TOOLS
                      adb (Android Debug Bridge)



CLIENT                        SERVER                         DAEMON
(developer machine)           (developer machine)            (devices e AVD)

• adb command line
• DDMS
• ADT



                 porta TCP 5037             porte TCP da 5555 a 5585
COSA POSSIAMO FARE CON I
                   TOOLS
                         adb (Android Debug Bridge)

$ adb devices
$ adb logcat
$ adb [ push | pull ] <file path>
$ adb [ install | uninstall ] <apk path>
$ adb emu <comando>
$ adb shell
$ adb shell <comando>
$ adb shell dumpsys <nome servizio>
es. alarm (timers), battery, connectivity, content (sync e account), location, media.camera, power,
sensorservice
$ adb shell dumpsys activity (tasks e activity)
$ adb shell dumpsys meminfo PID | <package name> (memoria)
$ adb shell dumpsys package <package name> (informazioni sul package)
COSA POSSIAMO FARE CON I
         TOOLS
       adb (Android Debug Bridge)




 $ adb shell dumpsys meminfo org.whymca.apppro
COSA POSSIAMO FARE CON I
             TOOLS
             adb (Android Debug Bridge)

Usciamo e rientriamo varie volte nell’applicazione WhyMCA PRO
COSA POSSIAMO FARE CON I
         TOOLS
         adb (Android Debug Bridge)


            Che succede ???
http://developer.android.com/reference
http://stackoverflow.com
http://code.google.com/p/android/issues

                          ...

http://code.google.com/p/android/issues/detail?id=9904
Typeface.createFromAsset leaks asset stream
COSA POSSIAMO FARE CON I
         TOOLS




     Crash test automatizzati
COSA POSSIAMO FARE CON I
              TOOLS
                            Monkey




$ adb shell monkey -s 14 -p org.whymca.apppro -v --throttle 100 500
GESTIRE PROGETTI
              COMPLESSI
              Progetto di esempio: scenario 2

                             applicazione




                   versione per                  versione per
                    customer 1                    customer 3

                                  versione per
                                   customer 2

PROBLEMA: Utilizzare i tools per gestire progetti che hanno
   dipendenze da librerie e richiedono target multipli.
GESTIRE PROGETTI
           COMPLESSI
                  Scenario 2: problema

1. Eclipse non ha nativamente il concetto di TARGET.

2. Le classi e le risorse proprietarie di un customer non devono
 essere compilate ed incluse negli altri target.

3. Le due app devono essere compilate e impacchettate in
 package differenti per poter andare sul market.
GESTIRE PROGETTI
                   COMPLESSI
                               Scenario 2: soluzione

                                                               app customer 1
                                                                     app project
                                                                  Contiene codice e
        libreria                     applicazione              risorse del customer 1.
                                         library project
      library project
                                  Contiene tutto il codice e
    Contiene codice e
                                  le risorse comuni più dei
risorse di utilità generale.
                                         placeholders.         app customer 2
                                                                         ...


                                                               app customer 3
                                                                         ...
ECLIPSE TIME


     Le risorse delle librerie sono accessibili alle
                     applicazioni.
  Le applicazioni possono sovrascrivere le risorse.
Es. Immagine del logo, stringa app_name, layout della
                funzione PRO per Nike.
COSA POSSIAMO FARE CON I
         TOOLS




   Profilazione della User Interface
COSA POSSIAMO FARE CON I
         TOOLS
            Hierarchy Viewer



    $ hierarchyviewer

    Permette di trovare problemi e ottimizzare la User
    Interface dell’applicazione.
    • Layout View
    • Pixel Perfect View
COSA POSSIAMO FARE CON I
          TOOLS
          Seguire le “best practices”: LINT


LINT
Effettua una analisi statica del codice e delle risorse.
• Missing and unused translations
• Layout performance problems
• Unused resources
• Inconsistent array sizes
• Accessibility and internationalization problems
• Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
• Usability problems (like not specifying an input type on a text field)
• Manifest errors
COSA POSSIAMO FARE CON I
         TOOLS




  Automatizzare il processo di build
COSA POSSIAMO FARE CON I
         TOOLS
    Preparare un progetto per Ant



  CREAZIONE DEI FILE DI BUILD

  [Progetto]$ android update project --path .
COSA POSSIAMO FARE CON I
             TOOLS
             Contenuto di un nuovo progetto

$ ls ./Progetto            ant.properties
                           Permette di sovrascrivere i default di Ant, es.
                           directory sorgenti o output, chiave per firma
AndroidManifest.xml        release.
ant.properties
                           local.properties
bin                        Generato automaticamente, non deve andare
build.xml                  nel VCS, contiene le impostazioni dell’utente.
libs                       project.properties
local.properties           Generato automaticamente, contiene le
proguard-project.txt       impostazioni del progetto (target, libs, proguard,
                           ecc.).
project.properties
res                        proguard-project.txt
                           Permette di sovrascrivere i default di Proguard.
src
COSA POSSIAMO FARE CON I
         TOOLS
   Analisi della build di un progetto

   1.setup
       1. creazione dirs
       2. risoluzione dipendenze
       3. lettura manifest ed eventuali warnings
       4. ...
   2. clean
   3. build-setup
       1. build dipendenze
   4. code-gen (AIDL, renderscript, resources, ...)
   5. compile
   6. obfuscate (esecuzione proguard) *
   7. dex (conversione bytecode)
   8. crunch (compressione risorse)
   9. package
   10. sign *
COSA POSSIAMO FARE CON I
         TOOLS
      Esecuzione della build




    [Progetto]$ ant all clean release
COSA POSSIAMO FARE CON I
                TOOLS
                     Altri servizi di dumpsys

$ adb shell dumpsys <nome servizio>
es. alarm (timers), battery, connectivity, content (sync e account),
location, media.camera, power, sensorservice
$ adb shell dumpsys activity (tasks e activity)
$ adb shell dumpsys meminfo PID | <package name> (memoria)
$ adb shell dumpsys package <package name> (informazioni sul
package)
STRUMENTI ESTERNI



Incrementare la produttività aggiungendo
     strumenti e plugin ad Eclipse.
STRUMENTI ESTERNI


                FindBugs™ - Find Bugs in Java Programs
                http://findbugs.sourceforge.net/




Utilizza l’analisi statica per cercare errori nel codice Java.
STRUMENTI ESTERNI


                             Memory Analyzer (MAT)
                             http://www.eclipse.org/mat/




E’ un analizzatore del Java heap che aiuta a trovare memory leaks ed
                   a ridurre il consumo di memoria.
NOVITÀ DELLE ULTIME
12 07/2011
                  VERSIONI
                      17 03/2012
• x86 support for emulator and AVD   • live detailed network usage in DDMS
                                     • dependency management improvements
13 09/2011                           • LINT improvements
• bugfix                              • ProGuard updated to 4.7
                                     • added multitouch, hw accelerated
                                         graphics rendering to emulator
14 10/2011
                                     •   added debug build constant
• improved build system              •   added support for custom views with
• new logcat view in DDMS                custom attributes
• asset studio integration
• camera emulation via webcam
                                     18 e 19 04/2012
15 10/2011                           • bugfix
• bugfix
                                     20 ?/2012
16 12/2011                           • ADT improved layout editor
                                     • ADT new property sheet
• new LINT tool                      • ...
• sensor emulation

Contenu connexe

Tendances

Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"Marco Breveglieri
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
Introduzione alla programmazione Java
Introduzione alla programmazione JavaIntroduzione alla programmazione Java
Introduzione alla programmazione JavaMassimiliano Brolli
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using EsterelAlberto Minetti
 

Tendances (7)

Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"Reportage "RAD Studio XE2 World Tour"
Reportage "RAD Studio XE2 World Tour"
 
Presentazione CERT-CHECK
Presentazione CERT-CHECKPresentazione CERT-CHECK
Presentazione CERT-CHECK
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Introduzione alla programmazione Java
Introduzione alla programmazione JavaIntroduzione alla programmazione Java
Introduzione alla programmazione Java
 
Corso progettazione
Corso progettazioneCorso progettazione
Corso progettazione
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
High Level Synthesis Using Esterel
High Level Synthesis Using EsterelHigh Level Synthesis Using Esterel
High Level Synthesis Using Esterel
 

En vedette

A importância da leitura
A importância da leitura A importância da leitura
A importância da leitura claudia murta
 
ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6cng_slideshare
 
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]SAFARI 2012 [FInal presentation slides Stadsdeel Oost]
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]Kennisland
 
2014 12-11 - o relevo - ana bruno catarina - 10º h
2014 12-11 - o relevo - ana bruno catarina - 10º h2014 12-11 - o relevo - ana bruno catarina - 10º h
2014 12-11 - o relevo - ana bruno catarina - 10º hO Ciclista
 
Animus vzw highlights nl
Animus vzw highlights nlAnimus vzw highlights nl
Animus vzw highlights nlanimus vzw
 
Pio La Politica Redes Sociales Redes Socialespoliticas
Pio La Politica Redes Sociales Redes SocialespoliticasPio La Politica Redes Sociales Redes Socialespoliticas
Pio La Politica Redes Sociales Redes SocialespoliticasRosa Cristina Parra Lozano
 
2011 08-05 - o tesouro do primeiro rei
2011 08-05 - o tesouro do primeiro rei2011 08-05 - o tesouro do primeiro rei
2011 08-05 - o tesouro do primeiro reiO Ciclista
 
Dialectos De Lgp
Dialectos De LgpDialectos De Lgp
Dialectos De Lgpmicaze1976
 
Laguna Springs Residential Suite
Laguna Springs Residential SuiteLaguna Springs Residential Suite
Laguna Springs Residential Suitesparkwebforge
 
G5 Brasil Qualificação de Leads Educacional 2014
G5 Brasil Qualificação de Leads Educacional 2014G5 Brasil Qualificação de Leads Educacional 2014
G5 Brasil Qualificação de Leads Educacional 2014G5 Brasil
 
Clase 1 c9 ago_12_2013
Clase 1 c9 ago_12_2013Clase 1 c9 ago_12_2013
Clase 1 c9 ago_12_2013Luis Stolz
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookโทโม๊ะจัง นานะ
 
ประวัติส่วนตัว
ประวัติส่วนตัวประวัติส่วนตัว
ประวัติส่วนตัวNnepjoonz
 
C:\Fakepath\Comemoração dos 25 Anos da nossa Escola
C:\Fakepath\Comemoração dos 25 Anos da nossa EscolaC:\Fakepath\Comemoração dos 25 Anos da nossa Escola
C:\Fakepath\Comemoração dos 25 Anos da nossa EscolaO Ciclista
 
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 aO Ciclista
 
Redes movilizacion comunicacion_posicionamiento
Redes movilizacion comunicacion_posicionamientoRedes movilizacion comunicacion_posicionamiento
Redes movilizacion comunicacion_posicionamientoRosa Cristina Parra Lozano
 
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...O Ciclista
 

En vedette (20)

A importância da leitura
A importância da leitura A importância da leitura
A importância da leitura
 
Rich Internet Applications
Rich Internet ApplicationsRich Internet Applications
Rich Internet Applications
 
ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6ใบงานสำรวจตนเอง M6
ใบงานสำรวจตนเอง M6
 
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]SAFARI 2012 [FInal presentation slides Stadsdeel Oost]
SAFARI 2012 [FInal presentation slides Stadsdeel Oost]
 
2014 12-11 - o relevo - ana bruno catarina - 10º h
2014 12-11 - o relevo - ana bruno catarina - 10º h2014 12-11 - o relevo - ana bruno catarina - 10º h
2014 12-11 - o relevo - ana bruno catarina - 10º h
 
Animus vzw highlights nl
Animus vzw highlights nlAnimus vzw highlights nl
Animus vzw highlights nl
 
Carnaval 2010/2011
Carnaval 2010/2011Carnaval 2010/2011
Carnaval 2010/2011
 
Pio La Politica Redes Sociales Redes Socialespoliticas
Pio La Politica Redes Sociales Redes SocialespoliticasPio La Politica Redes Sociales Redes Socialespoliticas
Pio La Politica Redes Sociales Redes Socialespoliticas
 
2011 08-05 - o tesouro do primeiro rei
2011 08-05 - o tesouro do primeiro rei2011 08-05 - o tesouro do primeiro rei
2011 08-05 - o tesouro do primeiro rei
 
Dialectos De Lgp
Dialectos De LgpDialectos De Lgp
Dialectos De Lgp
 
Laguna Springs Residential Suite
Laguna Springs Residential SuiteLaguna Springs Residential Suite
Laguna Springs Residential Suite
 
G5 Brasil Qualificação de Leads Educacional 2014
G5 Brasil Qualificação de Leads Educacional 2014G5 Brasil Qualificação de Leads Educacional 2014
G5 Brasil Qualificação de Leads Educacional 2014
 
Clase 1 c9 ago_12_2013
Clase 1 c9 ago_12_2013Clase 1 c9 ago_12_2013
Clase 1 c9 ago_12_2013
 
บทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e bookบทที่ 4 เรื่องทำงานกับไฟล์ e book
บทที่ 4 เรื่องทำงานกับไฟล์ e book
 
ประวัติส่วนตัว
ประวัติส่วนตัวประวัติส่วนตัว
ประวัติส่วนตัว
 
C:\Fakepath\Comemoração dos 25 Anos da nossa Escola
C:\Fakepath\Comemoração dos 25 Anos da nossa EscolaC:\Fakepath\Comemoração dos 25 Anos da nossa Escola
C:\Fakepath\Comemoração dos 25 Anos da nossa Escola
 
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a
2014 09-12 - ler é uma festa sec - ler é uma festa - sofia m pedrosa 10 a
 
El Slideshare
El SlideshareEl Slideshare
El Slideshare
 
Redes movilizacion comunicacion_posicionamiento
Redes movilizacion comunicacion_posicionamientoRedes movilizacion comunicacion_posicionamiento
Redes movilizacion comunicacion_posicionamiento
 
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...
2014 09-03 - ler aprender gn 3 ceb - depois da tempestade, vem a bonança clar...
 

Similaire à WhyMCA12 - Android Tools e la gestione di progetti complessi

Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Codemotion
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIvan Gualandri
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventorfdizazzo
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86Massimiliano Torregiani
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaAndrea Dottor
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angulardotnetcode
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...EvolutionBook S.r.l.
 

Similaire à WhyMCA12 - Android Tools e la gestione di progetti complessi (20)

Android
AndroidAndroid
Android
 
Alessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma AndroidAlessandro Forte - Piattaforma Android
Alessandro Forte - Piattaforma Android
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Androidsdk appinventor
Androidsdk appinventorAndroidsdk appinventor
Androidsdk appinventor
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86
 
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache CordovaMulti-Device Hybrid Apps con Visual Studio e Apache Cordova
Multi-Device Hybrid Apps con Visual Studio e Apache Cordova
 
Meetup ASP.NET Core Angular
Meetup ASP.NET Core AngularMeetup ASP.NET Core Angular
Meetup ASP.NET Core Angular
 
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
RIA: Rich Internet Applications. Interfacce utente avanzate per applicazioni ...
 

WhyMCA12 - Android Tools e la gestione di progetti complessi

  • 1. ANDROID TOOLS COSA SONO E COSA POSSONO FARE COSA C’E’ DI NUOVO NELLE ULTIME VERSIONI COME GESTIRE PROGETTI COMPLESSI Marco Gasparetto (@marcogasparetto) Superpartes Innovation Campus
  • 2. INDICE • Panoramica sul contenuto degli SDK Tools. • Riepilogo delle principali funzionalità. • Svolgimento di due progetti di esempio ed esecuzione di alcuni tools. • Novità delle ultime versioni.
  • 3. ANDROID TOOLS Permettono a noi sviluppatori di creare applicazioni per smartphone e tablet Android. piattaforma workflow host workstations workstations Android Tools Android Tools Windows Linux + + Java SDK Java SDK workstations + + MacOS X Ant Eclipse IDE + Text editor
  • 4. COSA SONO I TOOLS Android Tools sono l’insieme di strumenti offerti agli sviluppatori. SDK Tools SDK Platform Tools NDK Tools Platform 1.6 (API 4) SDK Add-on Android Support Platform 8 (API 2.2) SDK Add-on Google AdMob Ads SDK Platform 2.3.3 (API 10) SDK Add-on Google Analytics SDK Platform 4.0.3 (API 15) SDK Add-on Google Market Billing SDK Add-on Intel HAXM Platform ... SDK Add-on ... ADT Plugin for Eclipse
  • 5. COSA SONO I TOOLS SDK Platforms sono le differenti versioni di Android SDK Platform Documentation for Android SDK Platform Sources for Android SDK Samples for SDK Extras (Google APIs, Samsung Images, System Images (ARM, Intel x86, ...) Motorola Images, LG Images, Intel Atom x86 Images)
  • 6. COSA SONO I TOOLS Installazione e manutenzione Installazione http://developer.android.com/sdk/index.html Manutenzione (Android SDK Manager) [SDK_PATH]$ ./tools/android Sito ufficiale (preview, changelog, roadmap, technical docs) http://tools.android.com/
  • 7. COSA POSSIAMO FARE CON I TOOLS Le tre operazioni di base 1. Creazione di un progetto Eclipse IDE + ADT plugin 2. Compilazione Ant + Text Editor 3. Deploy e run
  • 8. COSA POSSIAMO FARE CON I TOOLS Creazione di un nuovo progetto Eclipse: File -> New -> Android Project $ android create [ project | test-project | lib-project ] --name Progetto --target 19 --path ./Progetto --package it.mycompany.android.apps.myproject --activity MainActivity
  • 9. COSA POSSIAMO FARE CON I TOOLS Compilazione e build di un progetto Eclipse: Project -> Build Automatically [Progetto]$ ant all clean [ debug | release ]
  • 10. COSA POSSIAMO FARE CON I TOOLS Deploy e run di un’applicazione Eclipse: Run -> [ Run | Debug ] [Progetto]$ adb install ./bin/Progetto-debug.apk oppure [Progetto]$ ant all clean [ debug | release ] install
  • 11. GESTIRE PROGETTI COMPLESSI Progetto di esempio: scenario 1 applicazione versione versione LITE PRO PROBLEMA: Utilizzare i tools per gestire progetti che hanno dipendenze da librerie e richiedono target multipli.
  • 12. GESTIRE PROGETTI COMPLESSI Scenario 1 applicazione LITE applicazione PRO Contiene codice Contiene codice e e risorse comuni. risorse PRO. libreria Contiene codice e risorse di utilità generale (classi helper, custom widget, ecc.). NOTE Utilizziamo una libreria di utilità interna oltre alle librerie Google ed ai JAR esterni. Tutti i target devono andare sul market, quindi devono avere package differenti.
  • 13. GESTIRE PROGETTI COMPLESSI Scenario 1: problema 1. Eclipse non ha nativamente il concetto di TARGET. 2. Le classi e le risorse PRO non devono essere compilate ed incluse nel target LITE. 3. Le due app devono essere compilate e impacchettate in package differenti per poter andare sul market. Come si può risolvere ?
  • 14. GESTIRE PROGETTI COMPLESSI Scenario 1: possibili soluzioni 1. 2. Utilizziamo uno script esterno (es. Trasformiamo il progetto in una python) che effettua operazioni sui libreria che poi viene inclusa ed file ed include o esclude utilizzata da progetti wrapper. Ogni determinate classi e risorse, ed wrapper è un target che che ha il effettua operazioni di rinomina dei proprio package e contiene le package. proprie classi e risorse.
  • 15. GESTIRE PROGETTI COMPLESSI Scenario 1: soluzione applicazione PRO app project libreria applicazione Contiene codice e library project library project risorse PRO. Contiene codice e Contiene codice risorse di utilità generale. e risorse comuni. applicazione LITE app project E’ possibile dalla versione 17 (03/2012) degli SDK Tools. • dependency management improvements (R.java merge) • added support for custom views with custom attributes
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. ECLIPSE TIME Le risorse delle librerie sono accessibili alle applicazioni. Le applicazioni possono sovrascrivere le risorse. Es. Schermata di About e stringa app_name.
  • 25.
  • 26. ECLIPSE TIME Nella classe Application di ogni progetto posso configurare una variabile globale Target. Discriminando su questa posso ramificare il codice. Posso caricare classi in maniera dinamica utilizzando il Class Loader.
  • 27.
  • 28.
  • 29.
  • 30. ECLIPSE TIME Anche gli attributi XML custom definiti nelle librerie sono visibili alle applicazioni. Il package viene risolto automaticamente.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35. COSA POSSIAMO FARE CON I TOOLS Profilazione della memoria
  • 36. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) CLIENT SERVER DAEMON (developer machine) (developer machine) (devices e AVD) • adb command line • DDMS • ADT porta TCP 5037 porte TCP da 5555 a 5585
  • 37. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) $ adb devices $ adb logcat $ adb [ push | pull ] <file path> $ adb [ install | uninstall ] <apk path> $ adb emu <comando> $ adb shell $ adb shell <comando> $ adb shell dumpsys <nome servizio> es. alarm (timers), battery, connectivity, content (sync e account), location, media.camera, power, sensorservice $ adb shell dumpsys activity (tasks e activity) $ adb shell dumpsys meminfo PID | <package name> (memoria) $ adb shell dumpsys package <package name> (informazioni sul package)
  • 38. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) $ adb shell dumpsys meminfo org.whymca.apppro
  • 39.
  • 40. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) Usciamo e rientriamo varie volte nell’applicazione WhyMCA PRO
  • 41.
  • 42. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) Che succede ??? http://developer.android.com/reference http://stackoverflow.com http://code.google.com/p/android/issues ... http://code.google.com/p/android/issues/detail?id=9904 Typeface.createFromAsset leaks asset stream
  • 43.
  • 44.
  • 45. COSA POSSIAMO FARE CON I TOOLS Crash test automatizzati
  • 46. COSA POSSIAMO FARE CON I TOOLS Monkey $ adb shell monkey -s 14 -p org.whymca.apppro -v --throttle 100 500
  • 47. GESTIRE PROGETTI COMPLESSI Progetto di esempio: scenario 2 applicazione versione per versione per customer 1 customer 3 versione per customer 2 PROBLEMA: Utilizzare i tools per gestire progetti che hanno dipendenze da librerie e richiedono target multipli.
  • 48. GESTIRE PROGETTI COMPLESSI Scenario 2: problema 1. Eclipse non ha nativamente il concetto di TARGET. 2. Le classi e le risorse proprietarie di un customer non devono essere compilate ed incluse negli altri target. 3. Le due app devono essere compilate e impacchettate in package differenti per poter andare sul market.
  • 49. GESTIRE PROGETTI COMPLESSI Scenario 2: soluzione app customer 1 app project Contiene codice e libreria applicazione risorse del customer 1. library project library project Contiene tutto il codice e Contiene codice e le risorse comuni più dei risorse di utilità generale. placeholders. app customer 2 ... app customer 3 ...
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57. ECLIPSE TIME Le risorse delle librerie sono accessibili alle applicazioni. Le applicazioni possono sovrascrivere le risorse. Es. Immagine del logo, stringa app_name, layout della funzione PRO per Nike.
  • 58.
  • 59.
  • 60. COSA POSSIAMO FARE CON I TOOLS Profilazione della User Interface
  • 61. COSA POSSIAMO FARE CON I TOOLS Hierarchy Viewer $ hierarchyviewer Permette di trovare problemi e ottimizzare la User Interface dell’applicazione. • Layout View • Pixel Perfect View
  • 62.
  • 63.
  • 64.
  • 65. COSA POSSIAMO FARE CON I TOOLS Seguire le “best practices”: LINT LINT Effettua una analisi statica del codice e delle risorse. • Missing and unused translations • Layout performance problems • Unused resources • Inconsistent array sizes • Accessibility and internationalization problems • Icon problems (like missing densities, duplicate icons, wrong sizes, etc) • Usability problems (like not specifying an input type on a text field) • Manifest errors
  • 66.
  • 67. COSA POSSIAMO FARE CON I TOOLS Automatizzare il processo di build
  • 68. COSA POSSIAMO FARE CON I TOOLS Preparare un progetto per Ant CREAZIONE DEI FILE DI BUILD [Progetto]$ android update project --path .
  • 69. COSA POSSIAMO FARE CON I TOOLS Contenuto di un nuovo progetto $ ls ./Progetto ant.properties Permette di sovrascrivere i default di Ant, es. directory sorgenti o output, chiave per firma AndroidManifest.xml release. ant.properties local.properties bin Generato automaticamente, non deve andare build.xml nel VCS, contiene le impostazioni dell’utente. libs project.properties local.properties Generato automaticamente, contiene le proguard-project.txt impostazioni del progetto (target, libs, proguard, ecc.). project.properties res proguard-project.txt Permette di sovrascrivere i default di Proguard. src
  • 70. COSA POSSIAMO FARE CON I TOOLS Analisi della build di un progetto 1.setup 1. creazione dirs 2. risoluzione dipendenze 3. lettura manifest ed eventuali warnings 4. ... 2. clean 3. build-setup 1. build dipendenze 4. code-gen (AIDL, renderscript, resources, ...) 5. compile 6. obfuscate (esecuzione proguard) * 7. dex (conversione bytecode) 8. crunch (compressione risorse) 9. package 10. sign *
  • 71.
  • 72.
  • 73.
  • 74. COSA POSSIAMO FARE CON I TOOLS Esecuzione della build [Progetto]$ ant all clean release
  • 75. COSA POSSIAMO FARE CON I TOOLS Altri servizi di dumpsys $ adb shell dumpsys <nome servizio> es. alarm (timers), battery, connectivity, content (sync e account), location, media.camera, power, sensorservice $ adb shell dumpsys activity (tasks e activity) $ adb shell dumpsys meminfo PID | <package name> (memoria) $ adb shell dumpsys package <package name> (informazioni sul package)
  • 76.
  • 77.
  • 78.
  • 79.
  • 80. STRUMENTI ESTERNI Incrementare la produttività aggiungendo strumenti e plugin ad Eclipse.
  • 81. STRUMENTI ESTERNI FindBugs™ - Find Bugs in Java Programs http://findbugs.sourceforge.net/ Utilizza l’analisi statica per cercare errori nel codice Java.
  • 82.
  • 83. STRUMENTI ESTERNI Memory Analyzer (MAT) http://www.eclipse.org/mat/ E’ un analizzatore del Java heap che aiuta a trovare memory leaks ed a ridurre il consumo di memoria.
  • 84.
  • 85. NOVITÀ DELLE ULTIME 12 07/2011 VERSIONI 17 03/2012 • x86 support for emulator and AVD • live detailed network usage in DDMS • dependency management improvements 13 09/2011 • LINT improvements • bugfix • ProGuard updated to 4.7 • added multitouch, hw accelerated graphics rendering to emulator 14 10/2011 • added debug build constant • improved build system • added support for custom views with • new logcat view in DDMS custom attributes • asset studio integration • camera emulation via webcam 18 e 19 04/2012 15 10/2011 • bugfix • bugfix 20 ?/2012 16 12/2011 • ADT improved layout editor • ADT new property sheet • new LINT tool • ... • sensor emulation

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n