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
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
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
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, ...
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
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
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
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
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
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
ETAPE 14 : DESIGNPATTERN SLIDINGMENU + Ajout d'une classe utilitaire AbstractDevFestSlidingActivity Modification de AbstractDevFestRoboActivity + Ajout d'un Fragment HomeFragment
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
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
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
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
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
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
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
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
ETAPE 16-5 : PAGEADAPTER + Création d'un pageAdapter SessionsPageAdapter com.binomed.devfest.adapters.pager hérite de FragmentPagerAdapter + Modification de l'activity
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
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
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
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...
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
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
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