Respuestas:
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
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.
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.
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
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.
Un puerto modificado de Mono también es completamente posible.
.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.
.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.
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.
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.
.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.