mardi 28 octobre 2014

Développer sur plusieurs plateformes mobiles


Les OS nomades


Si dans le marché de la mobilité les terminaux Android et iOS (iPod, iPhone, iPad) restent les vedettes incontestées, dans le domaine des smartphones, Windows phone de Microsoft n'est pas forcément à écarter, ni Blackberry même si on peut s'interroger sur la pérennité de ce dernier.

On retrouve à peu près les mêmes OS dans les tablettes tactiles et les smartphones, même si Microsoft propose deux OS différents : Windows 8 pour les tablettes et Windows phone pour les smartphones. Pourtant la frontière entre ces deux mondes est de plus en plus floue en particulier depuis l'arrivée des fablets (ou phablets), qui sont des smartphones avec une taille d'écran entre 5 et 7 pouces.

Certains OS sont dérivés d'Android, comme Amazon Fire OS, qui est une adaptation par Amazon pour ses tablettes et son smart phone (http://en.wikipedia.org/wiki/Fire_Phone). Sans aller aussi loin, les constructeurs qui utilisent Android ont aussi des spécificités qui peuvent aller  au delà de la taille et de la résolution de l'écran. Aussi, lorsque l'on envisage le test d'une application, on ne peut pas se contenter de faire les tests uniquement sur la plateforme de développement.

Selon l'OS retenu, la plateforme de développement n'est pas la même et les coûts non plus (licence développeur, matériel). Par exemple:
  • Apple fournit X-Code qui ne fonctionne que sous MacOS. Il faut donc posséder un Mac et s'acquitter d'une licence d'au moins 99$ par an pour pouvoir tester sur iPod, iPhone ou iPad, et publier sur l'App store.
  • Pour Android, Google fournit ADT qui est un environnement basé sur eclipse. Celui-ci n'est pas lié à un OS spécifique (Windows, Linux, ...). La licence est de 25$, pour pouvoir publier les applications sur Google Play.
Chaque plateforme a son ou ses langages de prédilection, par exemple Objective C pour iOS, Java pour Android, Java pour Blackberry, et pour Windows Phone VB.NET, C#,...

Notez qu'Android possède l'avantage de permettre à une même application d'adapter automatiquement son affichage au terminal avec la technologie des fragments. Avec iOS, il faut développer une interface spécifique pour chaque type de terminal ce qui a un coût supplémentaire.

Que choisir ?


Selon le marché ciblé, on peut être amené à choisir un OS particulier. Souvent on développe une application pour un OS, puis on développe l'équivalent pour un autre OS. Néanmoins, il est possible de faire un développement qui s'adaptera en grande partie aux différents OS et aux différents types de terminaux. C'est ce que permet notamment Apache Cordova (http://cordova.apache.org/).

Le principe est que l'on développe l'application cliente comme une application WEB, en utilisant les technologies similaires : HTML5, JavaScript, CSS3, le tout en intégrant vos librairies JavaScript favorites (jQuery, Mojo, ...). Puis on génère l'application pour l'OS cible. Il est même possible de faire du « responsive design » autrement dit d'avoir une application qui s'adapte à l'écran du terminal en termes de surface et de résolution.

Possibilités et limitations


Si utiliser Apache Cordova peut permettre de gagner du temps, il vaut mieux regarder de plus près les restrictions.

Tout d'abord on ne peut accéder à toutes les fonctionnalités de chaque OS. Par exemple la gestion de système de fichiers étant totalement différente sous Android et iOS, il ne sera pas possible de gérer des fichiers dans l'application à moins de faire des développements spécifiques ou d'opter pour un contournement, comme l'utilisation d'une base de donnée (SQLite dans les deux cas) pour stocker les données.

L'accès aux APIs spécifiques de chaque OS, se fait via des plugins. Néanmoins, il n'existe pas forcément un plugin pour chaque API dont on a besoin. Les applications doivent donc être assez simples.

Apache Cordova permet de développer des applications avec une interface de type WEB, donc assez passe-partout non spécifique à l'OS. Si vous voulez respecter l'ergonomie propre à chaque OS, il faudra faire des développements spécifiques.

Enfin les applications conçues avec Cordova seront moins rapides qu'un développement natif, qui lui, sera bien plus optimisé. Donc pas question de faire d'animation trop évoluée, de faire des jeux, ou d'utiliser intensivement les capteurs du terminal. Un accès simple à un CMS, par exemple, est plus adapté.
 

Le test des applications


Le test sur chaque plateforme cible est fortement conseillé car une même application ne se comporte pas totalement de la même façon selon l'OS mobile mais aussi selon la marque du mobile. Par exemple sous Android, les constructeurs peuvent ajoutent ou implémentent des couches qui leurs sont propres. Il peut donc y avoir des bugs et des comportements spécifiques à la version d'Android mais aussi au constructeur.

Si on automatise les tests, ce qui est aussi conseillé, il faut noter que les frameworks de tests proposent en général le support d'Android et d'iOS. Attention toutefois, car certains ne s'exécutent que dans le simulateur de terminal qui s’exécute sur la plateforme de développement... Hors ces tests qui tournent sur un PC ou un Mac même s'ils sont utiles, ne garantissent pas à 100% la bonne exécution et le bon rendu, sur les appareils cibles.

Conclusion


Un framework comme Apache Cordova qui permet de développer « une fois » pour plusieurs plateformes, peut s'avérer être un choix judicieux pour une application avec une interface de type WEB. Il convient de tenir compte du contenu fonctionnel de l'application à développer, des performances requises, et de l'ergonomie souhaitée.

Des développements spécifiques peuvent être nécessaires pour s'adapter correctement à chaque OS cible. Dès lors, si on gagne du temps en faisant des développements communs aux OS, il faudra quand même avoir des sous projets spécifiques à chacun et faire les tests correspondants.

La problématique se pose aussi en termes de compétences. Car Apache Cordova nécessite des compétences WEB et mobile. Hors en cas de développements spécifiques selon la plateforme, il faudra que les développeurs connaissent suffisamment chacun des OS et langages associés.

Une évaluation préalable est donc nécessaire pour déterminer l'intérêt d'un tel type de framework par rapport au projet de développement ainsi qu'à l'entreprise. On pourra ainsi choisir en connaissance de cause soit de faire autant de développements entièrement spécifiques à chaque OS cible, soit d'utiliser un framework comme Apache Cordova.


Quelques liens pour aller plus loin:


http://www.nextinpact.com/news/89231-android-ecrase-marche-smartphones-tire-par-succes-forks.htm

Les parts de marché des OS
http://www.zdnet.fr/actualites/chiffres-cles-les-os-pour-smartphones-39790245.htm

Responsive design / Responsiveness
http://www.wired.com/2013/11/responsive-html5-apps-write-once-run-anywhere-where-is-anywhere/
http://fr.wikipedia.org/wiki/Site_web_adaptatif

98% des applications Android tournent sur Blackberry:
http://www.blackberry-fr.com/blackberry-10-98-applications-android-compatibles/



Aucun commentaire:

Enregistrer un commentaire