WhyMCA12 - Android Tools e la gestione di progetti complessi

1,431 views

Published on

Android Tools e la gestione di progetti complessi
Marco Gasparetto
(Superpartes Innovation Campus)

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,431
On SlideShare
0
From Embeds
0
Number of Embeds
270
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • WhyMCA12 - Android Tools e la gestione di progetti complessi

    1. 1. ANDROID TOOLS COSA SONO E COSA POSSONO FARE COSA C’E’ DI NUOVO NELLE ULTIME VERSIONI COME GESTIRE PROGETTI COMPLESSIMarco Gasparetto (@marcogasparetto)Superpartes Innovation Campus
    2. 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. 3. ANDROID TOOLSPermettono a noi sviluppatori di creare applicazioni persmartphone 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. 4. COSA SONO I TOOLSAndroid Tools sono l’insieme di strumenti offerti aglisviluppatori. 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. 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. 6. COSA SONO I TOOLS Installazione e manutenzioneInstallazionehttp://developer.android.com/sdk/index.htmlManutenzione (Android SDK Manager)[SDK_PATH]$ ./tools/androidSito ufficiale (preview, changelog, roadmap, technical docs)http://tools.android.com/
    7. 7. COSA POSSIAMO FARE CON I TOOLS Le tre operazioni di base1. Creazione di un progetto Eclipse IDE + ADT plugin 2. Compilazione Ant + Text Editor 3. Deploy e run
    8. 8. COSA POSSIAMO FARE CON I TOOLS Creazione di un nuovo progettoEclipse: 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. 9. COSA POSSIAMO FARE CON I TOOLS Compilazione e build di un progetto Eclipse: Project -> Build Automatically [Progetto]$ ant all clean [ debug | release ]
    10. 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. 11. GESTIRE PROGETTI COMPLESSI Progetto di esempio: scenario 1 applicazione versione versione LITE PROPROBLEMA: Utilizzare i tools per gestire progetti che hanno dipendenze da librerie e richiedono target multipli.
    12. 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.).NOTEUtilizziamo 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. 13. GESTIRE PROGETTI COMPLESSI Scenario 1: problema1. 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. 14. GESTIRE PROGETTI COMPLESSI Scenario 1: possibili soluzioni1. 2.Utilizziamo uno script esterno (es. Trasformiamo il progetto in unapython) che effettua operazioni sui libreria che poi viene inclusa edfile ed include o esclude utilizzata da progetti wrapper. Ognideterminate classi e risorse, ed wrapper è un target che che ha ileffettua operazioni di rinomina dei proprio package e contiene lepackage. proprie classi e risorse.
    15. 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 codicerisorse di utilità generale. e risorse comuni. applicazione LITE app projectE’ possibile dalla versione 17 (03/2012) degli SDK Tools.• dependency management improvements (R.java merge)• added support for custom views with custom attributes
    16. 16. ECLIPSE TIMEhttps://github.com/gasparetto/whymca12
    17. 17. ECLIPSE TIME Le risorse delle librerie sono accessibili alle applicazioni.Le applicazioni possono sovrascrivere le risorse. Es. Schermata di About e stringa app_name.
    18. 18. 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.
    19. 19. ECLIPSE TIME Anche gli attributi XML custom definiti nelle libreriesono visibili alle applicazioni. Il package viene risolto automaticamente.
    20. 20. COSA POSSIAMO FARE CON I TOOLS Profilazione della memoria
    21. 21. 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
    22. 22. 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)
    23. 23. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) $ adb shell dumpsys meminfo org.whymca.apppro
    24. 24. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge)Usciamo e rientriamo varie volte nell’applicazione WhyMCA PRO
    25. 25. COSA POSSIAMO FARE CON I TOOLS adb (Android Debug Bridge) Che succede ???http://developer.android.com/referencehttp://stackoverflow.comhttp://code.google.com/p/android/issues ...http://code.google.com/p/android/issues/detail?id=9904Typeface.createFromAsset leaks asset stream
    26. 26. COSA POSSIAMO FARE CON I TOOLS Crash test automatizzati
    27. 27. COSA POSSIAMO FARE CON I TOOLS Monkey$ adb shell monkey -s 14 -p org.whymca.apppro -v --throttle 100 500
    28. 28. GESTIRE PROGETTI COMPLESSI Progetto di esempio: scenario 2 applicazione versione per versione per customer 1 customer 3 versione per customer 2PROBLEMA: Utilizzare i tools per gestire progetti che hanno dipendenze da librerie e richiedono target multipli.
    29. 29. GESTIRE PROGETTI COMPLESSI Scenario 2: problema1. 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.
    30. 30. 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ù deirisorse di utilità generale. placeholders. app customer 2 ... app customer 3 ...
    31. 31. 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.
    32. 32. COSA POSSIAMO FARE CON I TOOLS Profilazione della User Interface
    33. 33. 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
    34. 34. COSA POSSIAMO FARE CON I TOOLS Seguire le “best practices”: LINTLINTEffettua 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
    35. 35. COSA POSSIAMO FARE CON I TOOLS Automatizzare il processo di build
    36. 36. COSA POSSIAMO FARE CON I TOOLS Preparare un progetto per Ant CREAZIONE DEI FILE DI BUILD [Progetto]$ android update project --path .
    37. 37. 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 firmaAndroidManifest.xml release.ant.properties local.propertiesbin Generato automaticamente, non deve andarebuild.xml nel VCS, contiene le impostazioni dell’utente.libs project.propertieslocal.properties Generato automaticamente, contiene leproguard-project.txt impostazioni del progetto (target, libs, proguard, ecc.).project.propertiesres proguard-project.txt Permette di sovrascrivere i default di Proguard.src
    38. 38. 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 *
    39. 39. COSA POSSIAMO FARE CON I TOOLS Esecuzione della build [Progetto]$ ant all clean release
    40. 40. 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 sulpackage)
    41. 41. STRUMENTI ESTERNIIncrementare la produttività aggiungendo strumenti e plugin ad Eclipse.
    42. 42. STRUMENTI ESTERNI FindBugs™ - Find Bugs in Java Programs http://findbugs.sourceforge.net/Utilizza l’analisi statica per cercare errori nel codice Java.
    43. 43. 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.
    44. 44. NOVITÀ DELLE ULTIME12 07/2011 VERSIONI 17 03/2012• x86 support for emulator and AVD • live detailed network usage in DDMS • dependency management improvements13 09/2011 • LINT improvements• bugfix • ProGuard updated to 4.7 • added multitouch, hw accelerated graphics rendering to emulator14 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/201215 10/2011 • bugfix• bugfix 20 ?/201216 12/2011 • ADT improved layout editor • ADT new property sheet• new LINT tool • ...• sensor emulation

    ×