Quel langage dois-je apprendre pour réaliser des applications Android et iPhone à la fois ?


Vous pouvez utiliser le html et le JavaScript pour faire une application hybride en utilisant des outils comme Cordova ou Phone gap. Vous obtiendrez ainsi une application native avec seulement une webview qui contient votre page web. Cette application est appelée hybride car elle n'utilise pas le sdk android ou ios&apos ; pour créer les vues. C'est la meilleure approche si vous connaissez déjà le développement web, si vous n'utilisez pas trop de fonctionnalités de l'OS (car leur intégration peut parfois s'avérer difficile) et si vous n'avez pas besoin de l'apparence exacte d'une application native. Notez qu'avec cette méthode, vous devez coder le graphique une seule fois.


Vous pouvez également écrire en c# une applicafion native enveloppée en utilisant Xamarin. Xamarin est livré avec un wrapper 1to1 complet du SDK android et iOS, vous devrez donc utiliser les vues natives pour réaliser votre écran. A mon avis, c'est la meilleure approche car vous gagnerez du temps en partageant la logique métier et vous utiliserez 100% du potentiel du sdk natif et des bibliothèques tierces.

Xamarin est également livré avec un wrapper supplémentaire appelé xamarin forms qui enveloppe les graphiques natifs. Cela vous obligera à écrire le graphique pour les deux plates-formes une seule fois (le wrapper utilisera la vue native correspondante), mais c'est très limité et ne devrait être utilisé qu'à des fins de prototype ou pour une application dans laquelle la beauté de l'interface utilisateur n'est pas un gros problème.


En tout cas, si la logique métier de votre application'est très peu importante, vous feriez mieux de réfléchir à deux fois avant d'utiliser un développement partagé, car xamarin arrive avec un très grand nombre d'abstractions qui peuvent nécessiter plus de temps qu'écrire les applications deux fois ! Vous aurez un projet contenant la logique de base et deux projets différents pour les autres plateformes et tout devra avoir une interface dans le noyau et deux implémentations (sauf pour la solution de formulaire bien sûr). Ces temps vont diminuer si vous utilisez une bibliothèque d'injection comme Ninject mais c'est quelque chose que vous devrez pratiquer !

Une autre approche peut être de développer des applications natives (java et swift) et de partager la logique métier dans une bibliothèque c++, mais c'est très difficile car vous devrez connaître 3 langages en plus de JNI pour permettre à c++ de parler avec java

Donc, pour récapituler :

Application hybride

  • La logique partagée
  • Le graphique html partagé
  • Difficile d'intégrer l'appel OS

Xamarin

  • La logique partagée
  • Les vues natives séparées
  • ..but every thing in c#

Xamarin forms

  • Shared logic
  • Shared native view in c#
  • Less view customisation (but you can always mix form with native)

C++

  • Shared logic
  • Hard to wrap
  • Separate native views in java and objc/swift

EDIT: there is also React Native that uses html and give birth to a true native app, not hybrid. I never used it but from this input it can be worth trying if you already know html!