Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS/Android的Mono打开还是关闭?付费还是免费?_Android_.net_Mono_Xamarin.ios_Xamarin.android - Fatal编程技术网

iOS/Android的Mono打开还是关闭?付费还是免费?

iOS/Android的Mono打开还是关闭?付费还是免费?,android,.net,mono,xamarin.ios,xamarin.android,Android,.net,Mono,Xamarin.ios,Xamarin.android,我正试图学习更多关于移动/平板电脑开发的知识,作为一名.NET开发人员,我自然会被Mono吸引。但我很困惑——我以为Mono是免费的开源的;然而,所有迹象似乎都表明Mono是一个“付费游戏”的交易(https://store.xamarin.com/) 有人能帮我理解哪个是正确答案吗 谢谢 马特单声道本身是免费的。这并不意味着所有用mono编写的东西都是免费的。android的mono也是如此。有人花时间编写软件,使mono与android一起工作。仅仅因为它是用mono编写的,并不意味着他们必

我正试图学习更多关于移动/平板电脑开发的知识,作为一名.NET开发人员,我自然会被Mono吸引。但我很困惑——我以为Mono是免费的开源的;然而,所有迹象似乎都表明Mono是一个“付费游戏”的交易(https://store.xamarin.com/)

有人能帮我理解哪个是正确答案吗

谢谢


马特

单声道本身是免费的。这并不意味着所有用mono编写的东西都是免费的。android的mono也是如此。有人花时间编写软件,使mono与android一起工作。仅仅因为它是用mono编写的,并不意味着他们必须免费分享它。他们唯一需要分享的是mono本身的任何变化。仅仅因为android是免费开放的,并不意味着我不能制作应用程序,也不能要求人们购买它们来使用它们。

更新(2016/03/31)

  • )

  • )

历史答案

首先让我们澄清一下Mono的情况:-)

Mono是言论自由的,而不是免费啤酒。您可以免费(即不付费)获得它,因为它是在开放源代码许可证下提供的。但你也可以为此付费(例如,在Novell的时代,人们确实为某些版本的Mono付费)。此外,一些人不能在免费开源许可证下使用Mono(例如,作为源代码不可用的游戏引擎…)。在这种情况下,需要版权持有人的商业许可证

Mono for Android是基于Mono的商业产品,由Xamarin(拥有Mono许可权)销售。它重复使用了Mono所取得的许多成就,还带来了更多的功能,允许.NET开发者在Android平台上使用他们的技能

最后,Android版Mono的评估版是免费的,与Android仿真器一起使用时功能齐全(不与设备一起使用)。因此,您仍然可以尝试、学习和享受Mono和Mono for Android,而无需向Xamarin支付一分钱:-)

注意:MonoTouch也适用于此,它允许您从MacOSX计算机构建基于.NET的iPhone/iPad(iOS)应用程序


免责声明:我为Xamarin工作

作为一名长期的.Net开发者(从1.0开始),我可以告诉你,如果你不是一个爱好者,你在MonoTouch和MonoDroid上花的任何钱都会在很短的时间内带来巨大的回报

用户界面当然有一个学习曲线,第三方控制环境的健壮性远不如Windows平台,但针对.Net framework编程的能力(即使语言是C#)是一个无法形容的优势,值得花在Xamarin上的每一分钱


我们能够在不到3个月的时间内将一个为平板操作系统和PocketPC编写的50万行VB.Net应用程序移植到iPad上,包括本地数据库支持、web服务交互等。现在我们有了一个公共服务层,为Android创建UI应该需要不到一个月的时间。届时,我们将拥有一个应用程序,该应用程序将在iOS、Android、Windows桌面、Windows平板电脑和Windows Phone上具有类似的功能。用我每年在微软生态系统中花费的数万美元,我当然做不到这一点。

老帖子,但poupou的回答需要一些澄清和补充信息

首先,自从Poupou发布后,Xamarin在整个Mono/Android/iOS堆栈中添加了一个新的社区版许可证,允许应用程序的封闭源代码分发,但该许可证仅限于二进制文件的大小。在实践中,甚至一些Hello World应用程序也超过了community edition二进制大小限制,因此在我看来,根据任何实际定义,这都不是一个真正的选择

也就是说,核心Mono运行时和运行时库是在LGPL下授权的。这使得在应用商店中使用mono运行时而不从Xamarin购买商业许可证就很难发布封闭源代码软件,但并非不可能。据我所知,LGPL允许的一个选项是为应用程序提供对象文件。这将允许用户将应用程序的对象文件重新链接到不同版本的mono运行时,然后将重新链接的应用程序安装到他们的设备上。他们仍然可以访问对象文件,但如果愿意,您仍然可以关闭源代码。我不是律师,但我认为你可以为这些目标文件收费,并仅根据请求分发它们

如果你想使用mono发布一个开源应用程序,你将处于有利地位,因为你当然可以发布应用程序的目标代码,还可以发布应用程序的完整源代码,允许用户将mono重新链接到自己的应用程序版本中,从而满足LGPL的要求

现在,问题来了。虽然我上面说的是真的,但它只适用于核心mono运行时。这是因为核心mono运行时拥有开源许可证。您可能会惊讶地发现,Xamarin提供的用于将.net mono代码连接到android和iOS平台UI/系统库的特定于平台的绑定(即库和开发工具)都不是开源的。所以,Android的Mono和MonoTouch(还有monomac?)既不像言论自由那样自由,也不像免费啤酒那样自由。它们都是100%的商业产品。现在,我被告知您可以私下申请与开源兼容的许可证,但您的开源项目必须事先获得批准,这意味着您将无法利用封闭源代码项目的目标代码选项,我不知道Xamarin会对此类许可证施加何种限制(我怀疑类似于社区版的限制)。