8
votes

Comment Xamarin pour Android (Mono pour Android) se compare-t-elle au développement Android Native?

J'ai récemment choisi d'apprendre C # et de développer des applications mobiles à l'aide de C # sur Xamarin. En particulier pour le développement de Windows Phone et Android. Je sais que le développement de l'application Windows Phone est principalement C # et que Xamarin peut compiler un code natif pour Android, mais comment se compare-t-il au développement indigène en Java? Serose-je pouvoir utiliser chaque ou au moins la plupart (comme 90% +) du SDK Android et des extensions à l'aide de Xamarin?


4 commentaires

Vous pouvez probablement passer du temps à lire la documentation de Xamarin. Voici le lien- xamarin.com .


Rien ne peut avoir lieu de code natif :)


Xamarin sur leur site Web: Xamarin.android offre un accès complet aux API d'Android standard.


Qu'en est-il du temps qu'il faut pour compiler et exécuter une application? Comment cela se compare-t-il entre Native et Xamarin? Un cycle lent d'exécution de la compilation peut faire une différence significative de la vitesse de développement car elle crée de nombreuses interruptions dans la pensée et la concentration du développeur. Utilise Xamarin affecte-t-il l'heure de compilation? À quel point?


3 Réponses :


1
votes

Vous pouvez utiliser toutes les fonctionnalités Android et la bibliothèque Java Interop. En outre, vous obtenez l'avantage de non Windows spécifique .NET, y compris LINQ.


0 commentaires

3
votes

Je n'ai pas fait de statistiques ni d'étude de la couverture de Xamarin C # de l'API Android Java, mais dans mon travail, tout ce dont j'avais besoin lorsque le code portant le code de Java à C # était là. En outre, Xamarin dit que pour les nouveaux versions de SDK Android, ils ont généralement des contreparties C # libérés dans les 24 heures. Et, comme @dottostring remarqua, vous pouvez ajouter des bibliothèques Java Jar au projet XAMARIN C # et les apporter des appels si nécessaire.

La performance est une autre affaire - je ne crois pas qu'il fonctionne de manière natale sur Android. Mono Runtime est plutôt l'interprétation d'une manière ou d'une autre manière. J'ai fait une comparaison des performances de code Java vs. xamarin c # sur le code de la vie réelle, voir plus à:

Est-ce que quelqu'un a des points de repère (code et Résultats) Comparaison des performances des applications Android écrites dans Xamarin C # et Java?

greg


3 commentaires

L'énoncé mono-runtime est d'une manière ou d'une autre interprétation du code d'octet n'est pas vrai.


@MarkLopeZ - Si vous savez mieux, veuillez expliquer ce que cela fait exactement. La compilation de la plus probablement "juste à temps" de .NET PCODE au code natif, devant l'exécution - What - Toute l'application, ou un module particulier, ou une fonction à la fois?


Il existe en fait deux exécutions de points distinctes lors de l'exécution d'une application monodroid, une version dépouillée du CLR de .NET et de l'Android Dalvik VM. Le point d'exécution .NET est hébergé à l'intérieur de la mono-runtime (mono.android.platform.apilevel_xy.apk) qui est déployé avec votre application monodroid. C'est ce temps d'exécution monochandroïde qui conserve le CLR et Dalvik VM en synchronisation (création d'objets et destruction).



7
votes

La principale chose que je pense qu'il est à considérer, c'est votre langage de programmation préféré - lequel dans votre cas est C # - et en utilisant cela. La seule chose qui m'inquiète pour moi lorsque vous construisez une application en C # comme s'opposer à Java, ce n'est pas autant de références de 3e parties à utiliser comme il y a avec Java. Vous vous trouverez en téléchargement des exemples de fichiers et d'inverser les ingénieurs afin d'apprendre à faire de nouvelles fonctionnalités, vous devrez rechercher l'intellisence beaucoup plus pour trouver ce que quelque chose utilise si vous ne pouvez trouver qu'un exemple basé sur Java de quelque chose. Une chose que vous trouverez, c'est que cela peut généralement être la même méthode que ce qui est en Java, mais la première lettre étant capitalisée. LINQ est un avantage majeur que je trouve dans la manipulation de données qui n'est pas disponible en Java.

bonne chance avec tout ce que vous choisissez, James


0 commentaires