可以使用Xamarin开发Linux应用程序吗?


81

是否可以使用具有相同代码库的Xamarin开发和构建Linux应用程序?

使用Ubuntu几年后,我现在的主要操作系统再次是Windows。但是我可以切换到Mac并非不可能。

现在,我对Qt有一点经验,而对Xamarin则没有任何经验。有了Qt可以开发的Windows,Linux和Mac以及用于Windows,Linux和Mac上,的iOS,安卓,Windows Mobile的,......他们对此感到非常清楚。

由于Xamarin现在是免费和开源的,而且我在Qt方面还没有太多经验,因此我正在考虑尝试使用Xamarin而不是Qt进行跨平台开发。

无法为Linux发布我的软件对我来说是一个大难题。能够在Linux上进行开发很不错,但这是可选的。但是经过我对Google的所有研究之后,我只能找到信息和人们在寻求支持以Linux而非Linux进行开发。

据我所知,单单Mono并不是一个问题。但据我所知Xamarin> Mono,但我并没有在Mono中得到一切,而在Xamarin中却可以得到。

我也不确定将来Mono会得到怎样的支持。对我来说,Xamarin对Microsoft而言比Mono本身更为重要。

我不确定是否有可能,因为Xamarin是基于Mono的,但是微软是否有可能在某个时候决定不以与Xamarin相同的方式支持具有.NET兼容性的Mono,甚至完全取消Mono的独立性。 ?

因此,我正在寻找一个我可以依靠的所有台式机和移动平台的单一框架,并且我想在进一步探讨Xamarin和/或Mono和/或Xamarin + Mono是否可以替代Qt之前,这些解决方案中。

Answers:


61

以防万一有人遇到这个问题:情况已经改变。使用Xamarin.Forms 3.0,支持Gtk#(此刻为预览)。因此,启用了完整的Linux GUI支持。

因此,Xamarin现在涵盖:

剩下的唯一希望是:作为Xamarin一部分的JS / HTML5 Web App目标平台:)


Xamarin中希望实现的其他功能:能够从js实际调用和返回c#函数的功能...
亚历山大

1
我认为Xamarin.Mac也涵盖macOS吗?
富兰克林于

1
不确定是否可以通过适当的方式涵盖您希望的“ JS / HTML5 Web应用程序目标平台”,因此内容仍然是干净的HTML,并且可以由网络爬虫和类似的东西处理。但是只是“以某种方式工作”的JS / HTML5 / WebAssembly UI已经是一个好处。要获得真正的原生HTML体验,您应该在Blazor
Thomas Haller中

1
(Microsoft不支持GTK#)这是Microsoft不贡献或关心的仅社区活动。无法在Linux上进行开发,只能在Windows上构建后才能在Linux上使用。Xamarin.Forms UI设计器在Linux上根本不可用。Microsoft根本不关心这一点。
蹦床

46

不可以,Xamarin无法用于Linux。这是Xamarin团队几年前做出的有意识的决定

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

我们在这里面临质量检查问题。

支持Linux的问题在于,由于大多数Linux发行版在Mono上的发布都略有减少,因此我们需要为所有交付的比特创建一个自包含的Mono打包。

这也意味着,如果我们宣传“ Linux”,则由于Linux发行版不同以及每个发行版的版本不同,我们需要对12种不同的组合进行质量检查。

也许我们只支持单一发行版和单一版本,这与我们今天在Windows / Mac上要做的工作更加接近。

需要说明的是,Xamarin产品系列在Linux(Xamarin Studio,Xamarin.iOS和Xamarin.Android)上不可用,但Xamarin Studio的基础MonoDevelop和跨平台的.NET运行时Mono绝对没有。

您可以使用MonoDevelop构建桌面软件。MonoDevelop网站上有许多入门指南:


谢谢。当然,现在当我仅使用Mono时会丢失什么会很有趣?看来Mono也支持Android和iOS。Xamarin的优势是否只是它的IDE(在这种情况下是一个优势)以及诸如Xamarin Test Cloud之类的东西?
JuSchu

还是有可能将Xamarin用于所有可用的东西,然后以相同的代码库在Linux上构建它?
JuSchu

5
@JuSchu Mono不支持iOS和Android。这就是Xamarin将MonoTouch重命名为Xamarin.iOS和将Mono Mono重命名为Xamarin.Android的原因。而且,.NET / Mono并非旨在允许您使用一个代码库来支持所有平台。您可以共享代码,但不要梦想共享每一行。
Lex Li

1
@JuSchu是的,尽管现在已经签出了相关的Build会话,但是共享机制正在发生很大的变化(从PCL到.NET标准库),因此业务逻辑可以在任何地方共享。
Lex Li

7
看来Miguel de Icaza的团队决定支持Xamarin for Linux :)
Upol Ryskulova

9

似乎Xamarin Forms可以在Linux发行版上工作了。Miguel de Icaza在这个reddit主题中说:

我们的一些团队成员实际上是在Linux中开发的。我们之所以从未发布过Linux工具,是因为我们要收取很多钱,人们理所当然地希望该软件得到完全支持。我们已经足够让Mac和Windows用户满意,并且添加数量未知的Linux发行版听起来是一项艰巨的任务。现在我们已经开放了SDK的采购,如果在特定的Linux配置下无法正常工作,我将不再感到难过,我很乐意发布Linux版本。

也就是说:Forms是一个开源工具,这一事实当前打开了这种可能性。


5

是的,从2018年中期开始,可以使用“ Xamarin.Forms”库开发针对Windows / mac / linux / android / ios的跨平台GUI应用程序。基本上,您有一个跨平台代码的共享库项目(UI和其他跨平台的东西),每个平台一个项目的特定于平台的代码(Xamarin.Forms每个平台都有一个后端实现。在Linux上,这是使用GTK )。

但是,使用MonoDevelop,您只能开发/构建应用程序的跨平台项目和特定于linux的项目。您仍然需要使用Visual Studio或Rider为其他平台进行开发/构建。

请参阅以下答案:https : //stackoverflow.com/a/53317021/298005


4

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

正如matthewrdev所说,不“正式”支持Xamarin.Studio,Xamarin.iOS和Xamarin.Android。但是,Xamarin.iOS仍然使用虚拟仿真器(我认为Xamarin.iOS无法在Linux上运行),但是Xamarin Studio(Linux上的MonoDevelop或Jetbrain的Riders(如何在Linux上运行)没有解决方法。链接中也没有提供官方支持)可以作为Xamarin.Studio的替代版本在Linux上运行,我共享的链接说明了如何在Linux上安装Xamarin.Android,因此仅对于Xamarin.iOS,您需要迁移或双重引导或其他功能,希望对您有所帮助(我停止使用Xamarin我自己,但是,此环境有助于在Linux上为Xamarin开发!)


2
您好,我认为该指南与您联系在一起;由于某些路径已更改,它已经中断了一段时间,到今天为止,它已被更新并确认可以正常工作。
n3n7 '18

我可以确认它仍然有效。唯一的问题是libzip.so.4错误。我最初没有它,所以我必须通过安装它:sudo apt-get install libzip4
ignacardel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.