¿Google Android admitirá alguna vez .NET? [cerrado]

253

Ahora que el G1 con el sistema operativo Android de Google ya está disponible (pronto), ¿la plataforma Android admitirá alguna vez .Net?

JarrettV
fuente
24
¡Ahora eso sería algo!
Calanus
más importante aún, ¿alguna vez Microsoft portará .NET a una plataforma que no sea Windows?
Kerry

Respuestas:

325

Actualización : desde que escribí esta respuesta hace dos años, creamos Mono para que se ejecute en Android. El trabajo incluyó algunos pasos: portar Mono a Android, integrarlo con Visual Studio, crear complementos para MonoDevelop en Mac y Windows y exponer las API de Android de Java a lenguajes .NET. Esto ahora está disponible en http://monodroid.net

Mono en Android se basa en el tiempo de ejecución de Mono 2.10, y su valor predeterminado es 4.0 con el compilador C # 4.0 y utiliza el nuevo motor de recolección de basura SGen de Mono, así como nuestro nuevo sistema de recolección de basura distribuida que realiza GC en Java y Mono.


Los enlaces a continuación reflejan Mono en Android a partir de enero de 2009, los he guardado para el contexto histórico

Mono ahora funciona en Android gracias al trabajo de Koushik Dutta y Marc Crichton.

Puedes ver un video de él corriendo aquí: http://www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html

Y puede obtener las instrucciones para construir Mono usted mismo aquí: http://www.koushikdutta.com/2009/01/building-mono-for-android.html

Puede obtener un punto de referencia comparando el JIT de Mono con el intérprete de Dalvik aquí: http://www.koushikdutta.com/2009/01/dalvik-vs-mono.html

Y, por supuesto, puede obtener una imagen preconfigurada con Mono aquí (vaya al final de la publicación para obtener detalles sobre el uso de eso): http://www.koushikdutta.com/2009/01/building-mono-for- android.html

miguel.de.icaza
fuente
1
Bueno, dije, no MS ni Google sino probablemente Miguel y aquí estás (bueno, sé que no eras tú, pero de alguna manera cerca) Grandes enlaces Miguel. ¿Crees que Google alguna vez apoyaría esto? ¿Quiero decir que están tomando el puerto bajo su capucha? :) Si pudiera, votaría mi propia respuesta :)
OscarRyz
66
Uhm, eso es "solo" corriendo en Debian corriendo en el mismo hardware. En mi opinión, no se ha portado del todo a "Android", pero parece que no es un gran problema portarlo por completo.
sandos
1
Me pregunto, ¿se ha hablado con Google para facilitar la instalación? Tal vez ponerlo como una descarga gratuita desde el mercado? ¿Permitir que las aplicaciones .Net se comercialicen?
csauve
1
Lástima que no funcione con Visual Studio Express ...
Rockcoder
1
Increíble. Me alegra ver una respuesta actualizada. +1 Miguel
Steven Evers
78

Sí, será posible y no será tan difícil. Para empezar, todo lo que se necesita en este punto es algún tipo de convertidor que convierta MSIL en código de bytes de Dalvik . Dado que ambos formatos son de código abierto y están bien documentados, no habrá ningún problema con él.

Por lo tanto, será posible escribir aplicaciones de Android en C # o VB.NET, la pregunta es qué cantidad de bibliotecas estándar de .NET Framework serán compatibles. Pero ese es otro problema.

Oscar Reyes escribió:

Estoy bastante seguro de que si Google tiene CUALQUIER interés en .net, habrían diseñado algo mientras Android estaba en las primeras etapas, no ahora cuando están en las etapas de producción. No quiero decir que no sea posible, lo que digo es que no están interesados. Tal vez en mmm hhhh 10 años.

En realidad, lo que ya han diseñado es muy compatible con Java y .NET

No pueden hacer todo a la vez, pero si observa el SDK de Android, existe una herramienta llamada dx . Esta herramienta convierte el bytecode de Java en el bytecode de Dalvik, por lo que, en otras palabras, hoy puede ejecutar programas escritos en Java en Android sin ningún esfuerzo. Ahora se necesita la misma herramienta para .NET.

Teniendo en cuenta lo similares que son .NET y Java, es realmente cuestión de tiempo.

ddimitrov escribió:

La traducción .Net-> Java-> Dalvik se puede hacer incluso ahora ( http://dev.mainsoft.com/ ), pero creo que subestimas la falta de bibliotecas .Net. Por supuesto, alguien puede portar Mono, pero definitivamente es un esfuerzo no trivial.

No es necesario portar Mono. Android ya tiene VM y algunas API básicas. Todo lo que se necesita es convertidor CIL-> Dalvik y un pequeño contenedor .NET para la API de Android (y tal vez alguna implementación básica de algunas clases estándar de .NET). Eso es.

Actualización: .NET ya funciona en Android; necesitará un producto llamado Monodroid ( http://monodroid.net ) como se indicó anteriormente.

lubos hasko
fuente
Sí, nunca sabemos ... tal vez, tal vez ... Bueno, que sea 4 años en lugar de 10 ...: P
OscarRyz
16
No estoy de acuerdo Todo lo que dices ES técnicamente posible, pero creo que subestimas el trabajo que necesita un orden de magnitud. Siempre es fácil armar una prueba de concepto como una palabra de saludo cruzada en pocas horas. Pero configurar envoltorios para todas las clases es MUCHO trabajo.
Lena Schimmel el
44
@Brian, el video que has publicado es sobre iPhone, no Android.
lubos hasko
14
Bueno, dada la afinidad de Google con Java, no es sorprendente que no hayan elegido .NET con esto. Sí, usar Mono podría ser factible, pero estoy casi seguro de que Google evitaría usar .NET con un celo similar al que Microsoft evitaría usar Linux.
Joey el
2
"Las pequeñas empresas no van a apostar su futuro a menos que algunas más grandes le den algo de peso". Novell ya lo patrocina. Y Microsoft apoya el proyecto derivado Moonlight, tanto al proporcionar códecs como conjuntos de pruebas.
sblom
23

Miguel de Icaza anunció en su blog el 17 de febrero de 2010 que están comenzando a trabajar en mono para Android, que se llamará MonoDroid.

Esto será similar a MonoTouch en el iPhone, pero para Android en su lugar.

Proporcionará enlace a la interfaz de usuario de Android, por lo que las aplicaciones se verán y sentirán en vivo. Esto requerirá que escribas una interfaz de usuario específica de Android.

Sin embargo, podrá reutilizar las bibliotecas de nivel inferior existentes sin la necesidad de volver a compilar.

vagabundo
fuente
La versión beta de Monodroid ahora está disponible para las personas que se inscribieron temprano en el programa beta.
Damián
sí, actualmente se encuentra en versión beta privada, en la que me
inscribí,
9

Existe Mono para Android, el marco .NET portado para Android. Y está MonoDroid, una pila de desarrollo para usar C # y las API principales de .NET para desarrollar aplicaciones basadas en Android. MonoDroid Preview 1 se lanzó hace un par de días.

MonoDroid
fuente
9

Dado que este es uno de los primeros enlaces en Google cuando busca soporte para Android y .net, es apropiado publicar esto aquí.

El proyecto mono está trabajando en un SDK para desarrollar aplicaciones de Android utilizando lenguajes CIL como C #. La desventaja es que será un producto comercial. monodroid

Tony
fuente
7

MonoDroid está disponible para la vista previa. Creo que eso cerrará la brecha. Sin embargo, MonoDroid podría ser una opción costosa para el desarrollo. Sus otras herramientas de desarrollo cuestan entre $ 199 y $ 4000 (la herramienta de desarrollo MonoTouch .. iPhone ... tiene un precio entre $ 399 y $ 3999). Si las personas desarrollan aplicaciones con estas herramientas, necesitan un modelo de negocio muy sólido para ver algunos retornos.

GSree
fuente
6

Mira esto xmlvm Creo que esto es posible. Puede ser también puede ver este video

Pobre
fuente
Me gustan las respuestas. Muestra que es posible, pero si ve ese video, también muestra cuántos problemas aún están abiertos para resolver y cuánto trabajo hay detrás de todo eso.
Lena Schimmel
4

Un puerto modificado de Mono también es completamente posible.

akdom
fuente
@akdom, ¿tiene experiencia con la transferencia de software desde el sistema operativo de escritorio / servidor a embebido? Tengo algo de experiencia en desarrollo móvil (Java y Brew) y, en mi humilde opinión, está subestimando enormemente el esfuerzo. Puede ser posible, pero definitivamente no en los próximos 3 años.
ddimitrov
@ddmitrov: La pregunta era si la plataforma Android con NUNCA admite .NET, no si lo hará en los próximos tres años. Simplemente estaba postulando que, dado que Mono es una implementación de código abierto de .NET, sería más fácil construir una versión para Android de Mono que comenzar desde cero.
akdom
2
No tomó tres años al final. Y la gente de Xamarin planea hacerlo nuevamente en menos de seis meses.
Justin
4

.NET compact framework ha sido portado a Symbian OS ( http://www.redfivelabs.com/ ). Si .NET como plataforma "cerrada" se puede portar a esta plataforma, no puedo ver ninguna razón por la que no se puede hacer para Android.

KevinD
fuente
¿Has utilizado el marco compacto? Lo hago todos los días en mi trabajo y un puerto mono en forma de MonoDroid será mucho mejor.
Trampster
4

.NET y Mono son excelentes entornos, con muchas herramientas y una excelente base de habilidades de personas que saben cómo usarlos.

Creo que Mono tiene la oportunidad de ser el entorno de desarrollo multiplataforma móvil elegido, ya que son la única alternativa a Objective-C en el iPhone y deberían ser portátiles para Android, y .NET ya está en Windows Mobile.

Realmente espero ver una implementación sólida de Mono en Android, con envoltorios para la API de Android como con Monotouch, y estaría preparado para pagarlo ya que no estoy en condiciones de hacerlo yo mismo.

Peter
fuente
3

Es más probable que vea una implementación de Android de Silverlight. El representante de Microsoft ha confirmado que es posible, en comparación con el iPhone, donde el representante dijo que era problemático.

Pero es posible una versión del marco .Net. Solo necesito que alguien se preocupe mucho por eso :)

Pero en realidad, pasar de C # a Java no es un gran problema y teniendo en cuenta las diferencias drásticas entre las dos plataformas (PC frente a G1), parece poco probable que pueda funcionar con una base de código para cualquier aplicación que querías correr en ambos.

jcollum
fuente
3

En mi opinión, sería técnicamente posible convertir el Bytecode CLI a Dalvik, y escribir clases de envoltura para algunas características centrales como Colecciones, Acceso a archivos, etc., incluso sería un trabajo duro.

Pero una aplicación de escritorio .NET ejecutada en Android se sentiría extraña, ya que tendría una GUI clásica similar a Windows que no es muy útil en un dispositivo táctil. Si, por otro lado, tuviera que codificar una GUI similar a Android en .NET, necesitaría otro conjunto de envoltorios (tenga en cuenta que el envoltorio es al contrario que los envoltorios mencionados anteriormente).

No estoy seguro de si una aplicación móvil .NET se sentiría nativa en Android, pero supongo que no.

Tal vez le interese otro enfoque: puede escribir su aplicación en el lenguaje Java. Luego puede compilarlo en .NET a través de Microsoft J # (sé que está descontinuado, pero aún puede descargarlo y usarlo) y usar el mismo código Java en Android. Una vez más, eso es para las clases principales, también conocido como lógica de negocios, y nuevamente tendría que escribir las GUI de remolque. Quizás también pueda usar J2ME, lo que no podrá hacer si usa .NET.

Lena Schimmel
fuente
no, no estaría asumiendo que los formularios ganadores serían portados, lo cual es una muy mala idea, MonoDroid tendrá enlaces a los widgets de la interfaz de usuario de Android, por lo que se verá exactamente como una aplicación nativa de Android, el usuario ni siquiera necesita saberlo se ejecuta en MonoDroid
trampster
También un código de bytes CLI para Dalvik es una mala idea, el tiempo de ejecución mono y VM ya funcionan en ARM, por lo que ejecutarlo en Android no será un problema. Y viendo como mono se compila JIT y se interpreta Dalvik. Ejecutar en el tiempo de ejecución mono será mucho más rápido.
Trampster
2

.NET para Android me parece una posibilidad real. Hay noticias de que Microsoft lanzará Silverlight apropiado para Android. Nunca subestimes las ventajas de Microsoft para poner el arranque en Apple. Un teléfono inteligente que es más rápido, más rico en funciones, ciclo de vida de desarrollo más rápido, hardware impresionante, Flash y Silverlight como estándar instalable.

Microsoft tiene un gran interés en mejorar Android, y al mismo tiempo, las aplicaciones serán desarrolladas para Silverlight en Android, también funcionará en el sistema operativo Windows Phone 7 con multitáctil, GPS, etc., etc.

marca
fuente