Je suis le seul développeur mobile dans mon métier. Avant d'être embauché, mon patron actuel envisageait d'utiliser Xamarin car leur marketing dit les mots code partagé et natif. Je me considère comme un développeur avancé Android depuis que j'ai construit de grands systèmes d'information. En ce moment, je travaille sur des applications simples que je pourrais terminer en une semaine, mais Xamarin me donne des maux de tête depuis aussi buggé, et le code réutilisable est d'environ 10% qui pourrait facilement être copié/collé dans iOS
, et malgré le fait que vous pouvez partager ce code de 10%, parfois vous devez toujours utiliser les directives de compilation #if / #endif
.
Je veux dire, il n'y a pas vraiment d'avantage pour moi, car je connais déjà à la fois Java
et Objective-C
langues. J'ai déjà une grande connaissance de SQLite
et du stockage de données avec Core Data
sur iOS et Android SDK afin que l'apprentissage de Xamarin le ralentisse.
J'ai déjà essayé de les convaincre de ne pas opter pour Xamarin car ce n'est qu'un petit code que vous pouvez partager, mais ils ne semblent pas non plus comprendre.
J'ai besoin d'un bon argument pour les convaincre de ne pas l'acheter, afin que je puisse faire mon travail de manière plus productive et plus rapide. Merci d'avance.
Quelques bons points de Blog de Lee Whitney: Pourquoi je ne recommande pas Xamarin pour le développement mobile :
Frais généraux de l'application
Les applications basées sur Xamarin ont une surcharge intégrée qui les rend plus grandes en moyenne. Cela affecte le temps de téléchargement et le stockage utilisé sur un appareil. La taille supplémentaire minimale est généralement de quelques mégaoctets et peut augmenter proportionnellement à mesure que le code utilise davantage d'API. Cela est dû à la façon dont le code des assemblys .NET est lié statiquement (en tant que code natif) aux applications lorsque les assemblys sont référencés. Sur Android il y a également un délai de démarrage supplémentaire pour les applications pour des raisons spécifiques au système d'exploitation. Au crédit de Xamarin, ces frais généraux étaient beaucoup plus importants et la société a fait de grands progrès pour le réduire. Cependant, l'impact sur les utilisateurs d'applications est toujours mesurable.
Partage limité du code d'interface utilisateur sur iOS et Android
Le développement de l'interface utilisateur n'est pas portable entre iOS et Android.
Cela signifie que les API, la logique des événements, les widgets et les concepteurs doivent être utilisés et codés différemment pour chaque plate-forme. Il existe quelques exceptions à cela pour les opérations courantes de bas niveau.Xamarin dirait qu'essayer d'abstraire des API d'interface utilisateur sur des plateformes très différentes peut créer une complexité inutile ou conduire à une mauvaise expérience utilisateur avec une conception LCD (plus petit dénominateur commun). Ils ont un point ici. Titanium essaie de le faire partiellement, et le résultat a rendu de nombreux développeurs mécontents des résultats incohérents ou imprévisibles. Les applications HTML5 réussissent mieux à retirer cette abstraction de l'interface utilisateur sans forcer une conception LCD LCD, mais elles le font) pas les performances natives de Xamarin.
Les problèmes d'interface utilisateur peuvent être certains des aspects les plus longs à développer des applications mobiles. Malgré une bonne justification, l'important point à retenir est que pour de nombreux problèmes d'interface utilisateur mobile, Xamarin ne fera pas gagner de temps aux développeurs ou aux concepteurs.
Partage limité de code en dehors de Xamarin
Xamarin n'autorise pas la création de composants ou modules réutilisables en dehors de son propre environnement. Par exemple, le code écrit en Xamarin ne peut pas être utilisé dans des applications natives ou HTML5. Cela signifie que tout code développé par une équipe utilisant Xamarin ne peut pas être partagé ou réutilisé avec des équipes utilisant tout autre outil pour iOS et Android. L'importance de tout cela dépend de la situation, mais le problème du développement est que nous ne pouvons pas prévoir toutes nos situations. C'est donc une limitation inconfortable d'avoir le droit de sortir de la porte.
Écosystème et communauté
C'est quelque chose qui n'est pas vraiment la faute de Xamarin. Quelle entreprise possède un écosystème mobile qui correspond à Apple, Google ou HTML5? Mais c'est important. Lorsque les développeurs sont 10 fois plus susceptibles de trouver des résultats lorsqu'ils recherchent un problème sur le Web, cela affecte directement la productivité. L'écosystème de support, de services et de composants tiers disponibles, ainsi que les outils associés, est et continuera d'être considérablement plus petit que pour les applications natives ou HTML5.
La troisième courbe d'apprentissage
Certains concepts et techniques nécessitent des connaissances particulières spécifiques à l'environnement Xamarin. Cela ajoute effectivement une troisième courbe d'apprentissage pour les développeurs au-delà du langage de programmation et des API natives. Par exemple, les développeurs doivent comprendre le comptage des références iOS pour éviter les problèmes avec le garbage collection de Xamarin ( Est-ce un bug dans MonoTouch GC? ). Un autre exemple est celui des structures de données et des génériques qui fonctionnent de manière subtilement différente ( http://docs.xamarin.com/guides/ios/advanced_topics/limitations ). Ce sont les types de problèmes qui sont difficiles à voir avant d'adopter réellement une nouvelle plate-forme, ils méritent donc une attention particulière.
Plus de pièces mobiles
Xamarin présente son propre ensemble de bogues qui affectent la qualité des produits et la productivité des développeurs. Le problème n'est pas que Xamarin a un mauvais produit, mais que l'ajout d'un système volumineux ou complexe à la chaîne d'outils de l'application entraîne des problèmes et des bogues qui n'existent pas dans les applications natives.
L'historique de ces bogues peut être consulté à l'aide du suivi des bogues de Xamarin ( https://bugzilla.xamarin.com ).
Oui, tous les logiciels ont des bugs. Le point est quand vous mesurez l'avantage d'ajouter de nouveaux outils; il faut tenir compte des inconvénients des nouveaux problèmes.
Résumé
En fin de compte, nous devons essayer de quantifier les avantages d'une abstraction de développement comme Xamarin par rapport à d'autres abstractions, ou par rapport au développement natif. C # est-il meilleur qu'Objective-C? Oui, de loin à mon avis, mais ce n’est qu’un facteur. Lorsque vous ajoutez tout, cela éloigne la balance de Xamarin en faveur d'autres approches du développement mobile. À partir de 2013 (ces choses peuvent changer rapidement), j'ai tendance à choisir une solution de code natif ou une solution HTML5/Cordova. J'aime les deux pour des raisons différentes et j'essaierai d'expliquer certains des facteurs de décision dans un autre article.