¿Puedes desarrollar aplicaciones Linux con Xamarin?

81

¿Es posible desarrollar y crear aplicaciones Linux con Xamarin con la misma base de código?

Después de unos años con Ubuntu, mi sistema operativo principal ahora es Windows nuevamente. Pero no es imposible que pueda cambiarme a Mac.

En este momento tengo un poco de experiencia con Qt y ninguna experiencia con Xamarin. Con Qt puedes desarrollar en Windows, Linux y Mac y para Windows, Linux, Mac, iOS, Android, Windows Mobile, ... Lo tienen bastante claro.

Dado que Xamarin es gratuito y de código abierto ahora y todavía no tengo mucha experiencia en Qt, estoy considerando probar Xamarin para el desarrollo multiplataforma en lugar de Qt.

No poder lanzar mi software para Linux sería un factor decisivo para mí. Ser capaz de desarrollar en Linux estaría bien, pero es opcional. Pero después de toda mi investigación en Google, solo pude encontrar información y personas que solicitaban apoyo para desarrollar en Linux y no en Linux.

Hasta donde yo sé, esto no debería ser un problema solo con Mono. Pero hasta donde yo sé, Xamarin> Mono y no obtengo todo en Mono que podría obtener en Xamarin.

Tampoco estoy seguro de qué tan bien soportado será Mono en el futuro. Para mí, parece que Xamarin es mucho más importante para Microsoft que el propio Mono.

No estoy seguro de si es posible, ya que Xamarin se basa en Mono, pero ¿es posible que Microsoft en algún momento decida no admitir Mono con compatibilidad .NET de la misma manera que Xamarin, o incluso cancelar Mono como independiente por completo? ?

Así que estoy buscando un marco único para todas las plataformas de escritorio y móviles en las que pueda confiar, y quiero saber si Xamarin y / o Mono y / o Xamarin + Mono podrían ser una alternativa a Qt antes de profundizar en cualquier de esas soluciones.

JuSchu
fuente

Respuestas:

61

En caso de que alguien más se cruce con esta pregunta: la situación ha cambiado. Con Xamarin.Forms 3.0, Gtk # es compatible (como vista previa, en este momento). Por lo tanto, está habilitado el soporte completo de GUI de Linux.

Entonces, Xamarin ahora cubre:

Lo único que queda por desear: plataforma de destino JS / HTML5 Web App, como parte de Xamarin :)

HardyVeles
fuente
Otras cosas que desear en Xamarin: capacidad para llamar y devolver funciones c # desde js ...
Alexander
1
Creo que Xamarin.Mac también cubre macOS.
Franklin Yu
1
No estoy seguro de si es posible cubrir su deseo de "plataforma de destino de la aplicación web JS / HTML5" de una manera adecuada, por lo que el contenido sigue siendo HTML limpio y es posible que lo procese un webcrawler y cosas por el estilo. pero una interfaz de usuario JS / HTML5 / WebAssembly que simplemente "funciona de alguna manera" ya sería un beneficio. para obtener una experiencia HTML nativa real, debe consultar Blazor
Thomas Haller
1
GTK # no es compatible (por microsoft), es un esfuerzo exclusivo de la comunidad al que Microsoft no contribuye ni le importa. No es posible desarrollarlo en Linux, solo usarlo en Linux después de construirlo en Windows. El diseñador de interfaz de usuario de Xamarin.Forms no está disponible en Linux en absoluto. Microsoft simplemente no se preocupa por esto.
Trampster
46

No, Xamarin no está disponible para Linux. Esta fue una decisión consciente tomada por el equipo de Xamarin hace varios años:

Miguel de Icaza 2011-08-04 11:52:37 UTC

Enfrentamos un problema de control de calidad aquí.

El problema de admitir Linux es que necesitaríamos crear un paquete Mono autónomo para todos los bits que enviamos, ya que la mayoría de las distribuciones de Linux están un poco desviadas cuando se trata de Mono.

También significa que si anunciamos "Linux", necesitaríamos realizar un control de calidad en una docena de combinaciones diferentes debido a las diferentes distribuciones de Linux y las diferentes ediciones de cada distribución.

Quizás admitiríamos una sola distribución y una sola versión, que se acerca más a lo que tenemos que hacer hoy en Windows / Mac.

Para aclarar, la gama de productos de Xamarin no está disponible en Linux (Xamarin Studio, Xamarin.iOS y Xamarin.Android), pero MonoDevelop, la base de Xamarin Studio, y Mono, el tiempo de ejecución de .NET multiplataforma, definitivamente lo está.

Puede crear software de escritorio con MonoDevelop. El sitio de MonoDevelop tiene muchas instrucciones para comenzar:

matthewrdev
fuente
Gracias. Por supuesto, ahora sería interesante lo que me estoy perdiendo cuando solo uso Mono. Parece que Mono también es compatible con Android e iOS. ¿Es la ventaja de Xamarin solo su IDE (para el caso, es una ventaja) y algo así como Xamarin Test Cloud?
JuSchu
¿O sería posible usar Xamarin para todo lo que se puede usar y luego compilarlo para Linux con la misma base de código?
JuSchu
5
@JuSchu Mono no es compatible con iOS y Android. Es por eso que Xamarin cambió el nombre de MonoTouch a Xamarin.iOS y Mono para Android a Xamarin.Android. Y .NET / Mono no pretende permitirle utilizar una base de código para admitir todas las plataformas. Puede compartir código pero no sueñe con compartir todas las líneas.
Lex Li
1
@JuSchu sí, la lógica de negocios se puede compartir en todas partes, aunque el mecanismo de intercambio ahora está bajo un gran cambio (de PCL a .NET Standard Library) si ya revisa las sesiones de compilación relacionadas.
Lex Li
7
Parece que el equipo de Miguel de Icaza decidió dar soporte a Xamarin para linux :)
Upol Ryskulova
9

Parece que existe la posibilidad de que Xamarin Forms funcione en distribuciones de Linux. En este hilo de reddit Miguel de Icaza dice:

Algunos de los miembros de nuestro equipo se desarrollan en Linux. La razón por la que nunca lanzamos las herramientas de Linux es porque estábamos cobrando mucho dinero y la gente esperaba legítimamente que el software fuera totalmente compatible. Ya teníamos suficiente para mantener contentos a nuestros usuarios de Mac y Windows, y agregar un número desconocido de distribuciones de Linux parecía una tarea difícil. Ahora que estamos utilizando el código abierto de los SDK y ya no me sentiré mal si algo no funciona bajo una configuración particular de Linux, estaré feliz de lanzar las compilaciones de Linux.

Es decir: el hecho de que Forms sea una herramienta de código abierto actualmente abre esta posibilidad.

Bruno Peres
fuente
5

Sí, a partir de mediados de 2018, es posible desarrollar aplicaciones GUI multiplataforma destinadas a windows / mac / linux / android / ios utilizando la biblioteca "Xamarin.Forms". Básicamente, tiene un proyecto de biblioteca compartida a partir de código multiplataforma (UI y otras cosas multiplataforma) y un proyecto por plataforma para código específico de plataforma (Xamarin.Forms tiene una implementación de backend para cada plataforma. En Linux, esto está usando GTK ).

Sin embargo, con MonoDevelop solo puede desarrollar / construir el proyecto multiplataforma y el proyecto específico de Linux de la aplicación. Aún necesitará usar Visual Studio o Rider para desarrollar / compilar para las otras plataformas.

Consulte la siguiente respuesta: https://stackoverflow.com/a/53317021/298005

Gabriel Cuvillier
fuente
4

https://github.com/0xFireball/xamarin-android-linux

Como dijo matthewrdev, Xamarin.Studio, Xamarin.iOS y Xamarin.Android no son compatibles "oficialmente"; sin embargo, Xamarin.iOS usa un emulador virtual de todos modos (y no creo que haya una solución para que Xamarin.iOS se ejecute en Linux), pero para Xamarin Studio (MonoDevelop en Linux o Jetbrain's Riders (cómo ejecutarlo en linux sin soporte oficial también se proporciona en el enlace) Se puede ejecutar en Linux como una alternativa para Xamarin.Studio, y ese enlace que compartí explica cómo instalar Xamarin.Android en Linux, por lo que solo para Xamarin.iOS necesitará migrar o arranque dual o algo así, ¡espero que ayude! (¡Dejé de usar Xamarin yo mismo, sin embargo, este entorno ayuda a desarrollar para Xamarin en Linux!)

Youssef Mohammed
fuente
2
Hola, mantengo esa guía que enlazaste; se había roto durante algún tiempo porque se habían cambiado algunos de los caminos, a día de hoy se ha actualizado y se ha confirmado que funciona.
n3n7
Puedo confirmar que todavía funciona. El único problema fue con los errores libzip.so.4. No lo tenía en primer lugar, así que tuve que instalarlo a través de: sudo apt-get install libzip4
ignacardel