$30 off During Our Annual Pro Sale. View Details »

Android BootStrap

Android BootStrap

Contenu de l'atelier Andriod Bootstrap lors du DevFest Nantes 2012

Other Decks in Programming

Transcript

  1. View Slide

  2. QUI SUIS-JE ?
    Jean-François Garreau
    Expert J2EE / Android SQLI
    http://gplus.to/jefbinomed
    @binomed
    DevFest – 09/11/2012 2

    View Slide

  3. +Les enjeux
    +Les librairies à la rescousse
    +Solutions possibles
    +TP
    3
    DevFest – 09/11/2012

    View Slide

  4. LES ENJEUX
    4
    DevFest – 09/11/2012

    View Slide

  5. LES ENJEUX
    + Eviter de perdre du temps à réinventer la roue
    +Gain en productivité
    +Facilité d’accès aux standards
    +Open source ?
    DevFest – 09/11/2012 5

    View Slide

  6. LES LIBRAIRIES À LA RESCOUSSE
    6
    DevFest – 09/11/2012

    View Slide

  7. LES LIBRAIRIES ANDROID
    +Se présentent sous 3 formes
    Un jar à inclure dans un projet
    Un projet android
    Accès à un intent
    +Ajout de dépendances
    7
    DevFest – 09/11/2012

    View Slide

  8. LES LIBRAIRIES ANDROID
    + Avantages
    Permet de faire ce que l'on veut
    Open Source
    Souvent modulables
    + Inconvénients
    Gestion des versions
    Gestion des conflits
    Agrégation parfois compliquée
    Poids de l'application pouvant grimper...
    8
    DevFest – 09/11/2012

    View Slide

  9. LES LIBRAIRIES ANDROID
    + Liste des librairies présentées
    ActionBarSherlock
    Gestion ActionBar
    ACRA
    Remontée automatique de bugs
    Compatibility package
    Accès aux fragments depuis 1.6
    ViewPager
    Navigation par pages facilitée
    + D'autres encore
    HoloEveryWhere, Polaris, SlidingMenu, Android Annotations, RoboGuice, ...

    View Slide

  10. SOLUTIONS POSSIBLES

    View Slide

  11. SOLUTIONS POSSIBLES
    + Android BootStrap
    + Android kickStartR
    + DIY
    + Ultimate Android Library / Android ToolBox / Android UI Patterns

    View Slide

  12. TP

    View Slide

  13. TP
    Objectif :
    + Réaliser une application from
    scratch
    + Manipuler des librairies
    + Retour sur certains pièges

    View Slide

  14. TP : LIBRAIRIES UTILISÉES
    + Support librairie v4
    + ACRA
    + HoloEveryWhere
    + ActionBarSherlock
    + QuickActions
    + SlidingMenu
    + Robospice -> Spring RestTemplate
    + RoboGuice
    + Polaris
    + ViewPagerIndicator
    + UrlImageViewHelper

    View Slide

  15. ETAPE 1 : PRÉPARATION ENVIRONMENT
    + Eclipse Juno avec l'ADT
    Penser à changer
    -Xms512m
    -Xmx1024m
    Partez sur un nouveau workspace !
    +Android SDK
    Sous ubuntu :
    64 bits : sudo apt-get install ia32-libs
    java : sudo apt-get install sun-java6-jdk
    + tar avec les étapes du projet : sur la clé passée tout à l'heure ou
    http://bit.ly/PXbMcY

    View Slide

  16. ETAPE 2 : CRÉATION DU PROJET
    + Créer un projet allant ayant
    target SDK 15 et min SDK 7
    nom de package : com.binomed.devfest
    + Créer une classe Application à la racine du package : DevFestApplication
    La référencer dans le Manifest.xml
    + Dezipper les resources
    Dans le tar sous DevFestCodeLab/App
    + Créer un répertoire libs

    View Slide

  17. ETAPE 3 : SUPPORT LIBRAIRIE V4
    + Sera héritée des autres librairies

    View Slide

  18. ETAPE 4 : ACRA
    + Copier le jar dans /libs
    + Configurer le formulaire
    Ouvrir un navigateur, aller dans drive.google.com
    Importer le fichier CrashReports-Template.csv
    Copier l'id
    + Configurer la classe Application
    Copier la classe de constantes

    View Slide

  19. ETAPE 5 : ACTIONBARSHERLOCK
    + Importer dans le workspace le projet ActionBarSherlock

    View Slide

  20. ETAPE 6 : HOLOEVERYWHERE
    + Importer dans le workspace le projet HoloEveryWhere
    + Gestion des dépendances
    HoloEveryWhere -> ActionBarSherlock
    + Ajouter dans le manifest.xml le thème héritant de Holo

    View Slide

  21. ETAPE 7 : VIEWPAGERINDICATOR
    + Importer dans le workspace le projet ViewPagerIndicator
    + Gestion des dépendances
    ViewPagerIndicator-> HoloEveryWhere

    View Slide

  22. ETAPE 8 : SLIDINGMENU
    + Importer dans le workspace le projet SlidingMenu
    + Gestion des dépendances
    SlidingMenu -> ViewPagerIndicator
    DevFestCodeLab -> SlidingMenu
    + Ajout d'une classe utilitaire pour faire marcher ABS et SlidingMenu
    AbstractSherlockFragmentSlidingActivity.java

    View Slide

  23. ETAPE 9 : ROBOSPICE
    + Ajout des librairies dans /libs:
    guava-13.0.1
    jackson-code-asl-1.9.10
    jackson-mapper-asl-1.9.10
    spring-android-core-1.0.0.RELEASE
    spring-android-rest-template-1.0.0.RELEASE
    robospice-1.1.0
    robospice-cache-1.1.0
    robospice-spring-android-1.1.0
    + Ajout du service RoboSpice
    + Ajout des autorisations

    View Slide

  24. ETAPE 10 : ROBOGUICE
    + Ajout des librairies dans /libs:
    guice-3.0-no_aop
    javax.inject-1
    roboguice-2.0
    + Ajout des classes utilitaires
    AbstractDevFestRoboActivity
    AbstractRoboSherlockFragment
    AbstractRoboSherlockListFragment

    View Slide

  25. ETAPE 11 : POLARIS
    + Import du projet dans le workSpace
    + Gestion des dépendances
    DevFestCodeLab -> Polaris

    View Slide

  26. ETAPE 13 : URLIMAGEVIEWHELPER
    + Import du projet dans le workSpace
    + Gestion des dépendances
    DevFestCodeLab -> UrlImageViewHelper

    View Slide

  27. ETAPE 14 : QUICKACTIONS
    + Import du projet dans le workSpace
    + Gestion des dépendances
    DevFestCodeLab -> QuickActions

    View Slide

  28. ETAPE 14 : DESIGNPATTERN SLIDINGMENU
    + Ajout d'une classe utilitaire
    AbstractDevFestSlidingActivity
    Modification de AbstractDevFestRoboActivity
    + Ajout d'un Fragment
    HomeFragment

    View Slide

  29. ETAPE 15-1 : SPEAKERS ACTIVITY
    + Copie du modèle
    Récupération des classes utilitaires
    Copie du bean
    + Création de l'activity SpeakersActivity
    com.binomed.devfest.screen.speakers
    hérite de AbstractDevFestRoboActivity
    contentView : activity_speakers
    + Modifier HomeFragment

    View Slide

  30. ETAPE 15-2 : SPEAKERS FRAGMENT
    + Création du Fragment SpeakerListFragment
    com.binomed.devfest.screen.speakers
    hérite de AbstractRoboSherlockListFragment
    contentView : fragment_list
    + Binding RoboGuice
    ListView : android.R.id.list
    TextView : android.R.id.empty
    + Surcharge méthode onViewCreated

    View Slide

  31. ETAPE 15-3 : APPEL REST ET ROBOSPICE
    + Création du RestContentRequest SpeakersJsonRequest
    com.binomed.devfest.screen.speakers.requests
    hérite de RestContentRequest
    + Appel de l'url
    DevFestCst.MONGO_URL_SPEAKERS
    + Modification du Fragment
    ajout variable SpiceManager
    ajout variable de cache
    onStart et onStop
    appel du service

    View Slide

  32. ETAPE 15-4 : ADAPTER ET VIEW
    + Création d'une view SpeakerView
    com.binomed.devfest.screen.speakers
    hérite de RelativeLayout
    + Création d'un listAdapter SpeakersAdapter
    com.binomed.devfest.adapters.list
    hérite de BaseAdapter
    + Modification du fragment
    + Lançons l'application !
    Emulateur 2.3 pour le test ou sur votre téléphone

    View Slide

  33. ETAPE 16-1 : SESSIONS ACTIVITY
    + Copie du modèle
    Copie du bean
    + Création de l'activity SessionsActivity
    com.binomed.devfest.screen.sessions
    hérite de AbstractDevFestRoboActivity
    contentView : activity_sessions
    + Modifier HomeFragment

    View Slide

  34. ETAPE 16-2 : SESSIONS LIST FRAGMENT
    + Création du Fragment SessionsListFragment
    com.binomed.devfest.screen.sessions
    hérite de AbstractRoboSherlockListFragment
    contentView : fragment_list
    + Binding RoboGuice
    ListView : android.R.id.list
    TextView : android.R.id.empty
    + Surcharge méthode onViewCreated

    View Slide

  35. ETAPE 16-3 : APPEL REST ET ROBOSPICE
    + Création du RestContentRequest SessionsJsonRequest
    com.binomed.devfest.screen.sessions.requests
    hérite de RestContentRequest
    + Appel de l'url
    DevFestCst.MONGO_URL_QUERY
    + Modification du Fragment
    ajout variable SpiceManager
    ajout variable de cache
    onStart et onStop
    appel du service

    View Slide

  36. ETAPE 16-4 : ADAPTER ET VIEW
    + Création d'une view SessionView
    com.binomed.devfest.screen.sessions
    hérite de RelativeLayout
    + Création d'un listAdapter SessionsAdapter
    com.binomed.devfest.adapters.list
    hérite de BaseAdapter
    + Modification du fragment

    View Slide

  37. ETAPE 16-5 : PAGEADAPTER
    + Création d'un pageAdapter SessionsPageAdapter
    com.binomed.devfest.adapters.pager
    hérite de FragmentPagerAdapter
    + Modification de l'activity

    View Slide

  38. ETAPE 16-6 : SESSION ACTIVITY
    + Création d'une activity SessionActivity
    com.binomed.devfest.screen.sessions
    hérite de AbstractDevFestRoboActivity
    + Création du Fragment SessionFragment
    com.binomed.devfest.screen.sessions
    hérite de AbstractRoboSherlockFragment
    + Modification du fragment de listes

    View Slide

  39. ETAPE 17-1 : INFORMATIONS
    + Création de l'acitivity InfosActivity
    + Création du pageAdaptater
    + Création des fragments
    InfosFragment
    PartenaireFragment
    + Ajout de la boite de dialogue AboutDialogFragment
    + Modifier HomeFragment

    View Slide

  40. ETAPE 17-2 : MISE EN PLACE DES MAP
    + Copie des classes utilitaires
    Création de sa maps API key : https://developers.google.com/android/maps-api-
    signup
    + Modification du fragment d'information

    View Slide

  41. BONNE PRATIQUES D'ÉVOLUTION
    + Suivre les projets :
    AndroidBootStrap : http://www.androidbootstrap.com/
    AndroidKickStartR : http://androidkickstartr.com/
    + Se créer un répertoire dans son FileSystem contenant les clones des
    librairies
    Pouvoir récupérer les dernières évolutions
    Pouvoir gérer sans interférence dans son projet les merges etc...

    View Slide

  42. LIENS DE PROJETS
    + Support librairie v4
    Dans le SDK : $ANDROID_SDK/android-compatibility/v4
    + ACRA
    Sur Github : https://github.com/ACRA/acra
    + HoloEveryWhere
    Sur GitHub : https://github.com/ChristopheVersieux/HoloEverywhere

    View Slide

  43. LIENS DE PROJETS
    + ActionBarSherlock
    Sur Github : https://github.com/JakeWharton/ActionBarSherlock
    + QuickActions
    Sur Github : https://github.com/lorensiuswlt/NewQuickAction
    + SlidingMenu
    Sur Github : https://github.com/jfeinstein10/SlidingMenu
    + Robospice
    Sur Github : https://github.com/octo-online/robospice

    View Slide

  44. LIENS DE PROJETS
    + RoboGuice
    Sur Google Code : http://code.google.com/p/roboguice/
    + Polaris
    Sur Github : https://github.com/cyrilmottier/Polaris
    + ViewPagerIndicator
    Sur Girhub : https://github.com/JakeWharton/Android-ViewPagerIndicator
    + UrlImageViewHelper
    Sur Github : https://github.com/koush/UrlImageViewHelper

    View Slide