Android BootStrap

Rex sur les librairies Android

Qui suis-je ?

Jean-François GARREAU, Consultant IT SQLI

images/jf.jpg

Sommaire

Enjeux

Les librairies à notre secours

Solutions possibles

Cas pratique

Liens

Les enjeux

images/fond_enjeux.png

Les enjeux

images/build_great_apps.jpg

Perte de temps / Productivité / Standards / Open Source / Retro compatibilité

Les librairies à la rescousse

images/fond_lib_rescousse.png

Les librairies Android

images/apklib.png

Les librairies Android

Avantages



images/JesusLoves.png

Respect des standards


Permet de faire ce que l’on veut


Open Source


Souvent modulables

Les librairies Android

Inconvénients



images/facepalm.jpg

Gestion des versions


Gestion des conflits


Agrégation parfois compliquée


Poids de l’application pouvant grimper…


Complication de l’environement de développement

Les librairies Android

Parler des autres à l’oral

Solutions possibles

images/fond_solutions.png

Solutions possibles

Android Bootstrap



Android KickStartR



DIY



Ultimate Android Library / Android ToolBox / Anrdoid UI Patterns

Dire que le dernier n’est plus dispo mais qu’on peut trouver l’apk sur le net

On fait du DIY car pour le moment ces solutions ne sont pas assez complètes…

Cas Pratique

images/fond_cas_utilisations.png

Application BreizhCamp

images/BreizhCamp_logo.png

http://goo.gl/SzhBx


images/breizhcamp_screen1.png images/breizhcamp_screen2.png images/breizhcamp_screen3.png
  • Créons une application Breizhcamp from scratch
  • Manipulons des librairies
  • Retour sur certains pièges
  • Cherchons la solution la plus proche des solutions Google !

Application BreizhCamp

Démo

images/ic_launcher.png

Application BreizhCamp

Besoins

  • Requêtes
  • Cartes
  • Images
  • Popups
  • Pages
  • Gestion des crash
  • IHM unifiée
  • Injection de code
  • ActionBar
  • NavigationDrawer

On cherche un truc proche de Google pour assurer la maintenance

Librairies Utilisées

Etape 1

Déterminer son arbre de dépendances

images/dependances.png

On fait ça pour gérer au mieux les dépendances et donc éviter les doublons !

Etape 2

Maven / pas de maven / Gradle ?

Maven :

  • Bien pour sonar et pour les librairies jar classiques
  • Moins bien pour le poste de développement et pour les apklibs…

Pas de Maven :

  • DIY… faut se structurer, peut être problématique vis à vis de l’intégration continue.

Gradle :

  • Plus pratique sur l’intégration (cependant pas encore testé :) ). Peut se mixer avec Maven pour les dépendances classiques
  • Mauvaise gestion des apklibs (obligé d’avoir le projet à côté de son projet)

Gradle peut être une bonne nouvelle alternative. Je penses choisir ça prochainement Aujourd’hui tout évolue vite.

Support Librairie V4

images/ic_launcher_xhdpi.png

Pour navigation drawer, les fragments sont au coeurs du mécanisme

ACRA

Report de crashs faciles

images/ACRANewLogo.png
  • Contextualisation des crashs
  • Possibiltié de backend graphique
  • Intégration par jar dans /libs

Config Application + options /!\ à la configuration serveur ! Install de couchDB etc… ou backend appengine

ActionBarSherlock

L’actionBar pour tous

images/actionbar_sherlock.png
  • Intégration en tant qu’apklib
  • Basé sur l’héritage

Est à la source de tous les problèmes tout en étant notre sauveur.

HoloEverywhere

Holo

images/holo_every_where_icon.png
  • Intégration en tant qu’apklib
  • Gestion des dépendances !
    HoloEveryWhere -> ActionBarSherlock

Le thème doit hériter de Holo

ViewPageIndicator

De beaux indicateurs !

images/viewpager_indicator.png
  • Intégration en tant qu’apklib
  • Gestion des dépendances !
    ViewPager -> HoloEveryWhere
    BreizhCamp -> ViewPager

Utilisation simple du titleIndicator

RoboSpice Ou Volley ?

images/android_volley.jpg images/Robospice-logo-white-background.png

Pourquoi pas Volley ? à cause de la gestion avec un looper. Va l’emporter à terme

Roboguice

L’injection des dépendances

images/roboguice.png
  • Ajout des librairies dans libs
    guice-3.0-no_aop
    javax.inject-1
    roboguice-2.0
  • Ajout des classes utilitaires
  • Opposants : Dagger / Android Annoations !
images/dagger_logo.png images/android_anotation_logo.png

Pb d’intégration avec ABS ! Obliger de recréer les classes ! Sinon alternatives peuvent poser des soucis ! _ pour androidannotations… as t-on besoin d’une injection forte… ?

Maps V2

Réellement Google play services

images/google_play_services.png
  • à Intégrer en tant qu’apklib
  • Clé Maps obligatoire !
    Api Console
    Paramétrage d'une clé de hashage !

/!\ si plusieurs cartes ! dans des fragments ⇒ pas d’instanciation depuis le XML !!

UrlImageViewHelper

images/ic_launcher_xhdpi.png

Attente en natif du BitmapUrlCache ! car nécessite un helper

NewQuickactions

Les popups faciles

images/ic_launcher_xhdpi.png
  • à intégrer en tant qu’apklib
  • Création facile de popups.
  • Au niveau du thème est maintenant dépassé

Pièges

ABS est au cours des problèmes mais est indispensable

Maps : Utilisation de getChildFragmentManager, on ne peut pas intégrer par le XML dans ce cas !

Bonne pratique d'évolution

AndroidBootStrap AndroidKickStartR

Conclusion

images/fond_conclusion.png

Conlusion

Les librairies sont nos amies

Conlusion

images/insectes_amis.jpg

Conlusion

Oui mais…

Attention à l’intégration !

Important d’indentifier son besoin !

Important de connaître les parades d’intégration !

Le poids n’est pas un problème ! progard à la rescousse.

Liens

Merci

images/fond_merci.png

http://goo.gl/XFT0Y

images/twitter-icon.png images/google-Plus-icon.png