Développement mobile natif ou multiplateforme, comment choisir ?

 
Frameworks-Innovation en entreprise.png
 

Une question revient année après année: sachant que les principales plateformes mobiles sont iOS et Android, est-il préférable de développer nativement pour chacune, ou d’utiliser un cadriciel hybride (ou framework multiplateforme)?

La réponse n’est pas immédiate, car tout dépend de votre projet, de votre environnement et de vos équipes.  Voici pourquoi.

Premièrement, définissons natif et hybride:
Une application native est développée spécifiquement pour une plateforme en utilisant les langages et méthodes spécifiques à celle-ci. Pour faire une application native à iOS et Android, il faut donc développer deux applications distinctes.

Une application hybride, aussi appelée multiplateforme, est codée dans un seul langage puis encapsulée pour fonctionner sur diverses plateformes. Parmi les cadriciels hybrides les plus populaires, on retrouve: Xamarin, PhoneGap, React Native, Ionic et Unity.  Chez mPhase, nous avons travaillé avec chacun d’eux et nous pouvons témoigner qu’ils ont tous des avantages et des inconvénients.

Les promesses du multiplateforme :

  • Une seule base de code, qui fonctionnera partout, ce qui réduit le temps de développement.
  • L’accès à des fonctions de l’appareils, qui ne sont pas accessibles par un simple site Web (ex: bluetooth, fonction offline, capteurs de l’appareil).
  • Un langage de programmation qui est déjà maîtrisé par vos équipes (C# pour Xamarin, Javascript pour React Native, etc.).

En théorie, cette promesse est idéale si vous avez un projet mobile simple, avec une expérience utilisateur standard, pour une application interne ou une preuve de concept qui n’aura pas à faire face au public, ni vivre plusieurs années.  Si c’est votre cas, ne cherchez pas plus loin, le multiplateforme est parfait pour vous!

Dans les autres cas, tenez compte de ce que les cadriciels évitent de mentionner :

  • Les cadriciels sont conçus pour être compatibles avec les plus récentes versions d’Android et d’iOS.  Or, il y a toujours un délai entre la disponibilité d’un nouvel OS et la mise à jour du cadriciel.
  • Les cadriciels offrent peu d’outils pour investiguer des problèmes complexes, propres à l’utilisation mémoire ou qui ne se produisent que sur un modèle précis d’appareil Android, par exemple.
  • Un fournisseur tiers qui offre des librairies pour mobile (exemple: Stripe, pour ajouter des fonctions de traitement de carte de crédit) va presque toujours offrir une version native avant d’offrir une version pour cadriciel, qui aura un degré de priorité moindre dans ses mises à jour.
  • Tout projet s’appuie en général sur de nombreuses librairies créées par la communauté de développeurs.  Les librairies créées pour cadriciel sont moins bien maintenues, et lors d’une mise à jour annuelle, il est fréquent de constater qu’une librairie n’est plus compatible.

En bref, un projet complexe demande une grande maîtrise et un contrôle des plateformes. L’utilisation d’un cadriciel dans ce contexte représente un risque élevé et des contraintes importantes.

Malgré tout, il n’y a pas de solution universelle. Chaque cas doit être analysé en fonction des objectifs et besoins actuels et futurs. mPhase peut vous aider à prendre la bonne décision!