Une semaine avec Xamarin Forms

Partager cet article

Dans le cadre d'un projet interne, j'ai pu m'essayer sérieusement à Xamarin Forms, un framework permettant de créer des applications iOS, Android et Windows à partir d'un code unique en C#/XAML. Voici mon retour d'expérience sur cette découverte.

Challenge : 5 jours pour réaliser une application mobile connectée

Les fonctionnalités déclinées dans le cadre de cette expérimentation Xamrin forms:

  • Connexion utilisateur ;
  • Formulaire de Prospect ;
  • Liste d'article ;
  • Détail d'un article.

Avec en cible prioritaire Android et Windows Phone, iOS étant toujours plus délicat car nécessitant un Mac pour compiler. En elle-même l'application est très simple, pour un développeur C#/XAML cette réalisation sous Windows Phone est plus que triviale.

Difficultés rencontrées

Mise à jour en Xamarin Forms 2.0

Première difficulté, la création du projet (template par défaut) s'effectue en Xamarin Forms 1.3 et nécessite donc la mise à jour vers la dernière version 2.0. Là, j'ai pu rencontrer des problèmes avec Android et différents packages nuget (ex Design ou AppCompat) qui n'étaient pas systématiquement compatibles.

Perte de temps à la création de la solution : 2h

Emulateur Android

Le SDK Android installe par défaut 2 émulateurs mais ceux-ci sont clairement loin d’être efficaces. S'offrent à nous plusieurs alternatives, soit déployer directement sur téléphone (si on en possède un), soit utiliser d'autres émulateurs.

De ce coté-là, Genymotion est une solution reconnue pour proposer des émulateurs Android sous Windows. Genymotion est basé sur VirtualBox et permet de choisir plusieurs émulateurs selon leur taille d'écran et version d'API Android souhaitée. Pour moi, ce fut une première expérience mitigée, les performances étaient plutôt bonnes mais les émulateurs disparaissaient souvent de façon inexpliquée de Visual Studio comme Xamarin Studio et perdaient régulièrement la connexion à Internet.

Troisième essai, Xamarin Android Player, basé aussi sur VirtualBox, j'ai très rapidement eu les mêmes soucis qu'avec Genymotion, et devoir redémarrer l'ordinateur pour récupérer la connexion internet et les émulateurs est plus que contre-productif.

Dernière tentative. Je me suis rappelé que Microsoft proposait depuis quelques mois sa propre solution d'émulateurs Android, Visual Studio Emulator for Android, un nom à rallonge comme les aime Microsoft, mais qui se base sur Hyper-V!. Et pour ma part, se fut une révélation, même si le catalogue est moins riche (une douzaine d'émulateurs), les performances sont au rendez-vous. C'est tout simplement vraiment fluide.

Perte de temps pour le changement d'émulateurs : 6h

Support de Xamarin Forms au sein de Visual Studio

Troisième point à aborder dans les difficultés rencontrées, même si Xamarin Forms est supporté dans Visual Studio, on est encore assez loin d'une expérience complète. Xamarin développe en parallèle son propre IDE, Xamarin Studio, et certains éléments ne sont tout bonnement pas accessibles sans Xamarin Studio. Exemple, certaines exceptions sont vides dans Visual Studio. Voici côte à côte la même exception sous les 2 IDE.

Exception Xamarin Forms

Jeunesse du système

Dernier point faible que je remonterais, c'est la jeunesse du système. Xamarin Forms n'a même pas 2ans et apporte déjà énormément. Mais il manque pas mal de features et contrôles. Par exemple, seules les Gestures Tap et Pinch sont supportées nativement, pour les autres, il faut faire un développement spécifique. Ou encore la ListView qui ne permet pas de faire une liste horizontale.

Voyons maintenant les points positifs que j'ai pu relever durant cette semaine.

Les côtés positifs

Communauté

Premier point positif, la communauté. La communauté développeurs de Xamarin est très active et n'hésite pas à proposer et combler certains manques de Xamarin Forms. Que ce soit en terme de Plugins (Share, Settings) ou de librairies complètes (ex : Xamarin Forms Labs). J'ai notamment eu besoin de réaliser une image "ronde" type avatar, le contrôle Circle Image est déjà disponible sur toutes les plateformes.

Documentation et Samples

Un autre point positif quand on commence le développement Xamarin Forms, ce sont toutes les ressources à notre disposition.

La documentation Xamarin Forms permet d'avoir un aperçu des possibilités et de répondre aux questions basiques rapidement. Comment gérer la navigation, quels sont ses effets sur chaque plateforme ou encore comment afficher une ListView.

Xamarin propose aussi une énorme liste de Samples, des samples basiques comme une galerie d'images, un exemple de navigation ou encore la gestion des WebServices. Mais on peut retrouver des samples d'applications complètes avec l'implémentation iOS, Android et Windows Phone. MobileCRM, EmployeeDirectory ou ToDo.

Conclusion

Xamarin Forms est encore jeune, mais on voit très rapidement les possibilités de cette approche. Pour un développeur Xaml/C#, avec un peu d'entrainement on peut produire 3 applications sans connaître ni Java ni Objectif-C. On met en commun tout le code métier, code d'accès aux services, pareil pour les tests unitaires. Par contre, si l'on souhaite une application au design 100% équivalent entre les 3 plateformes, il faut s'orienter vers la solution Cordova qui correspond plus à ce besoin.

Pour moi l'expérience Xamarin Forms est plutôt concluante, en partant de presque zéro et en quelques jours j'ai pu obtenir 2 applications sur Windows Phone et Android. Reste à transformer l'essai avec iOS sur une prochaine période.

Quelques Tips et rappel des ressources

Erreur "CopyIfChanged" à la compilation Android

  • Survient quand on utilise un SourceControl qui bloque en écriture le fichier Resource.Designer.Cs. Il suffit de l'ouvrir et d'écrire un espace n'importe où. Cela aura pour effet d'ouvrir le fichier en écriture et de permettre le build du projet Android.

Nommage des ressources Android

  • Attention, pour toutes les ressources Android (dossiers drawable), il ne faut pas de tiret "-" dedans. A remplacer par underscore "_" par exemple.

Ressources complémentaires

Article publié le 29 mars 2016 dans la catégorie Technologies digitales
(Publié le 10 janvier 2016 sur le blog de Florian)

Partager cet article
Florian Rousselet

Florian Rousselet

Développeur .Net

Vous souhaitez en savoir plus et échanger avec nous sur le développement mobile, contactez-nous