Google Android prendra-t-il jamais en charge .NET? [fermé]

253

Maintenant que le G1 avec le système d'exploitation Android de Google est maintenant disponible (bientôt), la plate-forme Android prendra-t-elle jamais en charge .Net?

JarrettV
la source
24
Maintenant, ce serait quelque chose!
Calanus
plus important encore, Microsoft portera-t-il jamais .NET sur une plate-forme autre que Windows?
Kerry

Réponses:

325

Mise à jour : depuis que j'ai écrit cette réponse il y a deux ans, nous avons produit Mono pour fonctionner sur Android. Le travail comprenait quelques étapes: porter Mono sur Android, l'intégrer à Visual Studio, créer des plugins pour MonoDevelop sur Mac et Windows et exposer les API Java Android aux langages .NET. Ceci est maintenant disponible sur http://monodroid.net

Mono sur Android est basé sur le runtime Mono 2.10 et utilise par défaut le profil 4.0 avec le compilateur C # 4.0 et utilise le nouveau moteur de collecte de déchets SGen de Mono, ainsi que notre nouveau système de collecte de déchets distribué qui exécute le GC sur Java et Mono.


Les liens ci-dessous reflètent Mono sur Android depuis janvier 2009, je les ai conservés pour le contexte historique

Mono fonctionne désormais sur Android grâce au travail de Koushik Dutta et Marc Crichton.

Vous pouvez voir une vidéo de celui-ci en cours d'exécution ici: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html

Et vous pouvez obtenir les instructions pour construire Mono vous-même ici: http://www.koushikdutta.com/2009/01/building-mono-for-android.html

Vous pouvez obtenir une référence comparant le JIT de Mono à l'interprète de Dalvik ici: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html

Et bien sûr, vous pouvez obtenir une image préconfigurée avec Mono ici (allez au bas de l'article pour plus de détails sur son utilisation): http://www.koushikdutta.com/2009/01/building-mono-for- android.html

miguel.de.icaza
la source
1
Eh bien, j'ai dit, pas MS ni Google mais probablement Miguel et vous voilà (enfin je sais que ce n'était pas vous, mais en quelque sorte proche) Grands liens Miguel. Pensez-vous que Google soutiendrait jamais cela? Je veux dire qu'ils prennent le port sous leur capot? :) Si je pouvais, je voterais contre ma propre réponse :)
OscarRyz
6
Uhm, c'est "seulement" exécuté dans Debian fonctionnant sur le même matériel. Pas tout à fait porté sur "android" à mon avis, mais cela ne semble pas être un gros problème pour le porter complètement, il semble.
sandos
1
Je me demande, y a-t-il eu des discussions avec Google pour faciliter l'installation? Peut-être le mettre en téléchargement gratuit sur le marché? Autoriser la mise sur le marché d'applications .Net?
csauve
1
Dommage que cela ne fonctionne pas avec Visual Studio Express ...
Rockcoder
1
Impressionnant. Heureux de voir une réponse mise à jour. +1 Miguel
Steven Evers
78

Oui, ce sera possible et ce ne sera pas si difficile. Tout ce qui est nécessaire à ce stade pour commencer, c'est une sorte de convertisseur qui transformera MSIL en bytecode Dalvik . Étant donné que les deux formats sont open source et bien documentés, il n'y aura aucun problème avec lui.

Ainsi, l'écriture d'applications Android en C # ou VB.NET sera possible, la question est de savoir combien de bibliothèques standard du framework .NET seront prises en charge. Mais c'est un autre problème.

Oscar Reyes a écrit:

Je suis à peu près sûr que si Google avait un intérêt pour .net, il aurait conçu quelque chose pendant qu'Android en était aux premières étapes, pas maintenant quand ils sont en phase de production. Je ne veux pas dire que ce n'est pas possible, ce que je dis, c'est qu'ils ne sont pas intéressés. Peut-être en mmm hhhh 10 ans.

En fait, ce qu'ils ont déjà conçu est très compatible avec Java et .NET

Ils ne peuvent pas tout faire en même temps, mais si vous regardez dans le SDK Android, il existe un outil appelé dx . Cet outil convertit le bytecode Java en bytecode Dalvik, donc en d'autres termes, vous pouvez exécuter des programmes écrits en Java sur Android sans effort aujourd'hui. Maintenant, le même outil est nécessaire pour .NET.

Compte tenu de la similitude de .NET et Java, c'est vraiment une question de temps.

ddimitrov a écrit:

La traduction .Net-> Java-> Dalvik peut être effectuée même maintenant ( http://dev.mainsoft.com/ ), mais je pense que vous sous-estimez le manque de bibliothèques .Net. Bien sûr, quelqu'un peut porter Mono, mais c'est certainement un effort non trivial.

Pas besoin de porter Mono. Android a déjà une VM et une API de base. Tout ce dont vous avez besoin est un convertisseur CIL-> Dalvik et un minuscule wrapper .NET pour l'API Android (et peut-être une implémentation de base de certaines classes .NET standard). C'est tout.

Mise à jour: .NET fonctionne déjà sur Android - vous aurez besoin d'un produit appelé Monodroid ( http://monodroid.net ) comme indiqué ci-dessus.

lubos hasko
la source
Oui, nous ne savons jamais ... peut-être, peut-être ... Eh bien, faites-le 4 ans au lieu de 10 ...: P
OscarRyz
16
Je ne suis pas d'accord. Tout ce que vous dites EST techniquement possible, mais je pense que vous sous-estimez le travail requis par un ordre de grandeur. Il est toujours facile de rassembler une preuve de concept comme un mot bonjour compilé en quelques heures. Mais pour configurer des wrappers pour toutes les classes, c'est beaucoup de travail.
Lena Schimmel
4
@Brian, la vidéo que vous avez publiée concerne iPhone et non Android.
lubos hasko
14
Eh bien, étant donné l'affinité Java de Google, il n'est pas trop surprenant qu'ils n'aient pas opté pour .NET avec cela. Oui, l'utilisation de Mono pourrait être possible, mais je suis presque sûr que Google éviterait d'utiliser .NET avec un zèle similaire à celui de Microsoft pour éviter d'utiliser Linux.
Joey
2
"Les petites entreprises ne vont pas parier leur avenir à ce sujet, à moins que les plus grandes n'y mettent du poids." Novell le parraine déjà. Et Microsoft prend en charge le projet dérivé Moonlight à la fois en fournissant des codecs et des suites de tests.
sblom
23

Miguel de Icaza a annoncé sur son blog le 17 février 2010 qu'ils commencent à travailler sur mono pour Android qui s'appellera MonoDroid.

Ce sera similaire à MonoTouch sur l'iphone mais pour Android à la place.

Il fournira une liaison à l'interface utilisateur Android, de sorte que les applications regarderont et se sentiront les applications Android natives en direct. Cela vous obligera à écrire une interface utilisateur spécifique à Android.

Vous pourrez cependant réutiliser vos bibliothèques de niveau inférieur existantes sans avoir besoin de recompiler.

vagabond
la source
La version bêta de Monodroid est désormais disponible pour les personnes qui se sont inscrites tôt au programme bêta.
Damian
oui, il est actuellement en version bêta privée, pour laquelle je me suis inscrit mais jusqu'à présent, j'ai manqué une invitation :(
trampster
9

Il existe Mono pour Android, le framework .NET porté pour Android. Et il y a MonoDroid, une pile de développement pour utiliser C # et les principales API .NET pour développer des applications basées sur Android. MonoDroid Preview 1 est sorti il ​​y a quelques jours.

MonoDroid
la source
9

Étant donné qu'il s'agit de l'un des premiers liens sur Google lors de la recherche de support pour Android et .net, il convient de le publier ici.

Le projet mono travaille sur un SDK pour développer des applications Android en utilisant des langages CIL tels que C #. L'inconvénient est que ce sera un produit commercial. monodroid

Tony
la source
7

MonoDroid est disponible pour un aperçu. Je pense que cela comblera l'écart. Cependant, MonoDroid pourrait être une option coûteuse pour le développement. Leurs autres outils de développement coûtent entre 199 $ et 4000 $ (l'outil de développement iPhone MonoTouch .. est proposé entre 399 $ et 3999 $). Si les gens développent des applications avec ces outils, ils ont besoin d'un modèle commercial très solide pour voir des rendements.

GSree
la source
6

Check this out xmlvm Je pense que c'est possible. Peut-être peut également consulter cette vidéo

Poorna
la source
J'aime que les réponses. Cela montre que c'est possible, mais si vous regardez cette vidéo, cela montre également combien de problèmes sont encore à résoudre et combien de travail est derrière tout cela.
Lena Schimmel
4

Un port modifié de Mono est également tout à fait possible.

akdom
la source
@akdom, avez-vous de l'expérience avec le portage de logiciels d'un OS de bureau / serveur vers un système embarqué? J'ai une certaine expérience en développement mobile (Java et Brew) et à mon humble avis, vous sous-estimez considérablement l'effort. Cela pourrait être possible, mais certainement pas dans les 3 prochaines années.
ddimitrov
@ddmitrov: La question était de savoir si la plate-forme Android avec EVER prend en charge .NET, et non si elle le sera dans les trois prochaines années. Je posais simplement que puisque Mono est une implémentation open source de .NET, il serait plus facile de construire une version Android de Mono que de partir de zéro.
akdom
2
Cela n'a finalement pas pris trois ans. Et les gens de Xamarin prévoient de recommencer dans moins de six mois.
Justin
4

Le framework compact .NET a été porté sur Symbian OS ( http://www.redfivelabs.com/ ). Si .NET en tant que plate-forme «fermée» peut être porté sur cette plate-forme, je ne vois aucune raison pour laquelle cela ne peut pas être fait pour Android.

KevinD
la source
Avez-vous utilisé le cadre compact? Je fais tous les jours à mon travail et un port mono en forme de MonoDroid sera bien meilleur.
trampster
4

.NET et Mono sont d'excellents environnements, avec de nombreux outils et une excellente base de compétences de personnes qui savent les utiliser.

Je pense que Mono a la possibilité d'être l'environnement de développement multiplateforme mobile de choix, car ils sont la seule alternative à Objective-C sur iPhone et devraient être portables sur Android, et .NET est déjà sur Windows Mobile.

J'espère vraiment voir une implémentation solide de Mono sur Android, avec des wrappers pour l'API Android comme avec Monotouch, et je serais prêt à payer pour cela car je ne suis pas en mesure de le faire moi-même.

Peter
la source
3

Vous êtes plus susceptible de voir une implémentation Android de Silverlight. Le représentant de Microsoft a confirmé que c'était possible, contre l'iPhone où le représentant a dit que c'était problématique.

Mais une version du framework .Net est possible. J'ai juste besoin que quelqu'un s'en soucie autant :)

Mais vraiment, passer de C # à Java n'est pas si grave et compte tenu des différences drastiques entre les deux plates-formes (PC vs G1), il semble peu probable que vous puissiez vous débrouiller avec une seule base de code pour une application qui vous vouliez courir sur les deux.

jcollum
la source
3

À mon avis, il serait techniquement possible de convertir le Bytecode CLI en Dalvik, et d'écrire des classes wrapper pour certaines fonctionnalités de base telles que les collections, l'accès aux fichiers, etc., même ce serait un travail difficile.

Mais une application de bureau .NET exécutée sur Android se sentirait étrangère, car elle aurait une interface graphique similaire à Windows qui n'est pas très utilisable sur un appareil tactile. Si, d'autre part, vous deviez coder une interface graphique de type Android dans .NET, vous auriez besoin d'un autre ensemble de wrappers (notez que le wrapping est juste l'inverse des wrappers mentionnés ci-dessus).

Je ne sais pas si une application mobile .NET se sentirait native sur Android, mais je suppose que non.

Peut-être que vous êtes intéressé par une autre approche: vous pouvez écrire votre application en langage Java. Vous pouvez ensuite le compiler en .NET via Microsoft J # (je sais qu'il est interrompu mais vous pouvez toujours le télécharger et l'utiliser) et utiliser le même code Java sur Android. Encore une fois, c'est pour les classes de base aka la logique métier et encore une fois, vous devrez écrire des interfaces graphiques de remorquage. Peut-être que vous pouvez également utiliser J2ME, ce que vous ne pourrez pas faire si vous utilisez .NET.

Lena Schimmel
la source
non, vous ne supposeriez pas que les formulaires de gain seraient portés, ce qui est une très mauvaise idée, MonoDroid aura des liaisons avec les widgets de l'interface utilisateur Android, de sorte qu'il ressemblera exactement à une application Android native, l'utilisateur n'a même pas besoin de le savoir fonctionne sur MonoDroid
trampster
Un Bytecode CLI pour Dalvik est également une mauvaise idée, le runtime mono et la VM fonctionnent déjà sur ARM, ce qui le fera fonctionner sur Android ne sera pas un problème. Et comme mono est compilé JIT et Dalvik est interprété. L'exécution sur le mono runtime sera beaucoup plus rapide.
trampster
2

.NET pour Android me semble une réelle possibilité. Il y a des nouvelles que Microsoft publiera la bonne Silverlight pour Android - Ne sous-estimez jamais les avantages pour Microsoft de mettre le démarrage dans Apple. Un smartphone plus rapide, plus riche en fonctionnalités, un cycle de vie de développement plus rapide, un matériel impressionnant, Flash et Silverlight en tant qu'installable standard.

Microsoft a tout intérêt à améliorer Android, et en même temps, les applications seront développées pour Silverlight sur Android fonctionnera également sur Windows Phone 7 OS avec multi-touch, GPS, etc., etc.

marque
la source