Mat*_*att 18 .net mono android xamarin.ios xamarin.android
我试图了解有关移动/平板电脑开发的更多信息,作为.NET开发人员,我很自然地被Mono所吸引.但我很困惑 - 我认为Mono是免费和开源的; 然而,所有迹象似乎都表明Mono是一种"付费游戏"交易(https://store.xamarin.com/).
有人可以帮我理解哪个是正确的答案?
谢谢!
马特
pou*_*pou 36
更新(2016/03/31)
历史回答
首先让我们清理Mono案例:-)
Mono是免费的,如言论自由,而不是免费的啤酒.您可以免费获得(即无需支付),因为它可以在开源许可下使用.但是你仍然可以为此付费(例如,人们确实在Novell的日子里为某些版本的Mono付费).也有些人不能在免费的开源许可下使用Mono (例如,作为游戏引擎,其中源不可用......).在这种情况下,需要来自版权所有者的商业许可.
Mono for Android是一款基于Mono的商业产品,由Xamarin(有权授权Mono)出售.它重复使用了Mono所取得的许多功能,并且还带来了更多功能,允许.NET开发人员在Android平台上使用他们的技能.
最后,与Android模拟器(不是设备)一起使用时,Mono for Android的评估版本是免费且功能齐全的.所以你仍然可以尝试,学习和享受Android的Mono和Mono,而无需支付一分钱给Xamarin :-)
注意:同样适用于MonoTouch,它允许您从Mac OSX计算机构建基于.NET的iPhone/iPad(iOS)应用程序.
免责声明:我为Xamarin工作
com*_*ech 17
作为一个长期的.Net开发人员(从1.0开始),我可以告诉你,如果你不是一个爱好者,你在MonoTouch和MonoDroid上花的任何钱都会在短期内带来巨大的回报.
UI确实存在学习曲线,第三方控制环境并不像Windows平台那样强大,但是能够针对.Net框架进行编程(即使语言是C#)是一个难以描述的优势,非常值得每一分钱与Xamarin一起度过.
我们能够在不到3个月的时间内将为平板电脑操作系统和PocketPC编写的500,000行VB.Net应用程序移植到iPad,包括本地数据库支持,Web服务交互等.而且创建它需要不到一个月的时间Android的UI现在我们有一个公共服务层.此时,我们将拥有一个应用程序,该应用程序在iOS,Android,Windows桌面,Windows平板电脑和Windows Phone上具有类似的功能.我当然不能用微软生态系统每年花费的数万美元来做到这一点.
Jer*_*ell 11
老帖子,但是poupou的答案需要一些澄清和一些额外的信息.
首先,自Poupou发布以来,Xamarin已经为整个Mono/Android/iOS堆栈添加了一个新的Community Edition许可证,允许关闭源代码分发,但此许可证仅限于二进制文件的大小.在实践中,甚至一些Hello World应用程序超出了社区版二进制大小限制,因此在我看来,这不是任何实际定义的真正选择.
话虽这么说,核心Mono运行时和运行时库是根据LGPL许可的.这使得很难在不购买Xamarin商业许可的情况下使用单声道运行时在应用商店中发布闭源软件,但并非不可能.根据我的理解,LGPL允许的一个选项是为您的应用程序提供目标文件.这将允许用户将应用程序的目标文件重新链接到不同版本的单声道运行时,然后将该重新链接的应用程序安装到他们的设备上.他们仍然可以访问目标文件,但如果您愿意,仍然可以保持源关闭.我不是律师,但我认为您可以对这些目标文件收费,并仅按要求分发.
如果你想使用mono发布一个开源应用程序,那么你就可以这么做了,因为你当然不仅可以释放对象代码,还可以发布应用程序的完整源代码,从而允许用户将mono重新插入他们自己的版本应用程序,从而满足LGPL的要求.
现在,这是问题所在.虽然我上面说的是真的,但它仅适用于核心单声道运行时.那是因为核心单声道运行时具有开源许可证.您可能会惊讶地发现没有任何平台特定的BINDINGS,它们是Xamarin提供的用于将您的.net单声道代码连接到Android和iOS的平台UI /系统库的库和开发人员工具,是开源的一点都不 那么,Mono for Android和MonoTouch(以及monomac?)既不是免费语言也不是免费,也不像免费啤酒那样免费.它们都是100%商业产品.现在,我被告知您可以私下请求开源兼容许可证,但您的开源项目必须预先批准,这意味着您将无法利用对象代码选项来完成闭源项目,而且不知道Xamarin会对这样的许可证施加什么样的限制(我怀疑对社区版本有类似的限制).
编辑:更正上述 - Xamarin不会为您提供开源项目的开源兼容许可证.相反,他们会给你(如开发人员希望在其中一个应用程序商店上发布一个开源应用程序的版本),如果他们可以验证你的应用程序是合法开源的,则可以免费获得完整的Xamarin许可证.这仍然是商业许可(对于一个开发人员),而不是开源兼容许可,因此该许可不适用于为您的项目下载代码并构建它的任何其他开发人员.他们需要购买自己的Xamarin许可证才能发布他们的开源应用程序版本.
这意味着,利用LGPL目标代码选项进行封闭源代码分发的唯一方法(或者,实际上,在没有Xamarin许可的情况下发布兼容LGPL的开源应用程序),您需要编写所有自己的平台绑定使您的应用程序可以以任何有意义的方式与系统或UI进行交互.来自ClockworkMod的Koushik Dutta最初开始了这样一个项目,至少在Android绑定方面,在Xamarin发布Mono for Android之前.在Xamarin发布后,他放弃了该项目,但代码仍然可以在这里找到:https: //github.com/koush/androidmono
如果要为Mono创建一组android/iOS绑定并在许可的开源许可证(如MIT/X11)下发布它们,那么应用程序可以绕过Xamarin并在目标文件选项下发布应用程序以符合LGPL(或者只是发布代码,如果它是一个开源应用程序).
进一步迈出一步 - 如果你看一下核心单声道授权细分,你会发现只有核心单声道运行时及其库在LGPL下获得许可.几乎所有的类库都已经使用了像MIT/X11这样的许可许可证,或者某种形式的Apache或MS-PL.这意味着,如果假设除了为android/iOS创建一些许可的开源绑定之外,还有人要从头开始并使用更宽松的内容重写核心单声道运行时和运行时库(所有LGPL的单声道部分)许可证,然后那个假设版本的mono(我称之为"MonoLibre",当我做白日梦时)可以免费嵌入一个封闭的源应用程序,无需发布目标文件,开源应用程序,支付Xamarin任何东西,或者必须请求Xamarin分发您的开源应用程序.Xamarin可以继续销售"商业化"单声道运行时,但MonoLibre可以继续使用所有相同的类库甚至相同的编译器.
Mono本身是免费的.这并不意味着所有用mono编写的都是免费的.就像用于Android的单声道一样.有人花时间编写软件,使单声道工作与android.仅仅因为它是用单声道写的并不意味着它们必须免费共享它.他们唯一要分享的是对单声道本身所做的任何改变.仅仅因为android是免费和开放的,并不意味着我不能制作应用程序并要求人们购买它们才能使用它们.
| 归档时间: |
|
| 查看次数: |
13458 次 |
| 最近记录: |