Rien de spécial
Le blog de Régis

Envie de faire un peu de développement Android?

Un ami me demande

J’ai subitement envie de me remettre un peu à faire du dev. Je commencerais bien par un application Android qui se connecte à un service REST. Tu me conseilles quoi?

Gestion de source

Avant de démarrer le projet, ce n’est pas parce que tu fais un truc dans ton coin, qu’il ne faut pas gérer sérieusement les sources. Je te recommande bitbucket, qui offre un dépôt git (à la mode) ou Mercurial (que je trouvais meilleur) avec intégration sur le bug tracker. L’hébergement peut être privé, même dans l’offre gratuite.

Client-Serveur

Encapsulation, …; ou pas

Pour les échanges de données entre le client mobile et le serveur, REST me semble une évidence.

Il n’y a pas de support SOAP dans Android, si tu veux absolument en faire tu es bon pour du out.print(“")</tt>.

Et SOAP n’est plus pérenne, de toute façon…;

Format d’échange

Ensuite, tu peux faire du XML ou du Json. Les 2 fonctionnent bien.

Serveur

Soit tu utiliser un service tiers existant, soit tu développes le tien.

Un service existant

Dans ce cas, rien à développer, évidemment 🙂 L’avantage, est que tu te concentres sur ton client, avec des web-services qui fonctionnent déjà, et qui répondent à un certain besoin.

Mon expérience est qu’en étant pas maître du service, tu peux être confronté à des limitations fonctionnelles.

Ton propre service

Tu as le choix de la technologie, évidemment…;

Mon expérience récente, c’est que Python est un super langage côté serveur: Concis, efficace, simple.

Pour GAE, il faut bien comprendre que le DataStore n’est pas une base de données relationnelle, avec toutes les conséquences que cela entraîne1. De plus, les restrictions et limitations imposées par Google font que la plupart des frameworks ne marchent pas ou marchent mal, ce qui se traduit souvent par une belle perte de temps — ça va mieux depuis que certains frameworks sont forkés pour GAE.

Client Android

Environnement de développement

Pour Android, dans tous les cas, il faut le DSK SDK.

Concernant l’environnement de développement, le choix est assez restreint, et la seule plateforme outillée est Eclipse + Google ADT (Android development tools) que l’on trouve sur le « plugin site » https://dl-ssl.google.com/android/eclipse/

Tu peux jouer l’aventurier fortuné, et tenter IntelliJ for Android

Sur Netbeans, il n’y a pas d’outil de conception d’interface graphique. Donc, à moins de ne pas supporter les autres IDE, je ne vois pas d’intérêt à Netbeans.

Si tu penses toujours que Maven ne fait pas perdre de temps, il y a un plugin. Mais je ne te recommande pas cette option — on n’est pas sensé avoir 36 dépendances non plus dans une appli mobile.

Viser l’API Level 7

Tu sais que les systèmes Android sont fragmentés, et je conseille de te prendre minVersion=7. Sur la javadoc d’Android, il est possible de masquer les éléments qui ne fonctionnent que sur des niveaux plus élevés.

La complexité du développement Android

Côté Android, le framework s’est complexifié à chaque version (API Level 15 pour l’état de l’art), mais les composants de bases n’ont pas changé: et tu commenceras par les fondamentaux: l’Activity, qui correspond à un écran et l’Intent qui permet de démarrer un autre composant.

Dans ton exemple, pour synchroniser des données serveurs, tu vas devoir faire une connexion réseau longue:

Je ne t’ai mis que quelques pointeurs, mais tu constates déjà qu’il y a un certain nombre de choses à ingurgiter…;

Gloablement

Tout ceci n’est pas fait pour te décourager, mais tout ça n’a rien de simple, surtout si tu veux faire les choses correctement.

Les commentaires sont bienvenus!

  1. Je viens de découvrir l’existence d’un Google Cloud SQL []