首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >iOS/Android的Mono是开放的还是关闭的?付费还是免费?

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

Stack Overflow用户
提问于 2011-10-29 00:09:29
回答 5查看 13.7K关注 0票数 18

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

谁能帮我理解一下哪一个是正确的答案?

谢谢!

哑光

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-29 00:28:38

更新(2016/03/31)

历史记录答案

首先,让我们弄清楚Mono案例:-)

Mono在free speech中是免费的,而不是free beer。你可以免费获得它(即不需要付费),因为它是在允许这样做的开源许可证下提供的。但你仍然可以为它付费(例如,在Novell时代,人们确实为Mono的一些版本付费)。此外,有些人不能在免费开源许可证下使用Mono (例如,在源代码不可用的情况下作为游戏引擎...)。在这种情况下,需要从版权所有者那里获得商业许可。

Mono for Android是一个基于Mono的商业产品,由Xamarin销售(他拥有Mono的许可权)。它重用了许多Mono已经实现的东西,还带来了 lot 更多功能,以允许.NET开发人员在安卓平台上使用他们的技能。

最后,Mono for Android的评估版本在与Android模拟器(而不是设备)一起使用时,是不含,并且功能齐全。所以你仍然可以尝试,学习和享受Mono和Mono for Android,而不需要向Xamarin支付一分钱:-)

注意:这同样适用于MonoTouch,它允许您从Mac计算机构建基于.NET的iPhone/iPad (iOS)应用程序。

免责声明:我为Xamarin工作

票数 36
EN

Stack Overflow用户

发布于 2011-10-29 00:31:57

作为一个长期的.Net开发人员(从1.0开始),我可以告诉你,如果你不是一个业余爱好者,你在MonoTouch和MonoDroid上花费的任何钱在短期内都会有巨大的回报。

当然,UI有一个学习曲线,第三方控制环境远不如Windows平台那么健壮,但能够在.Net框架下编程(即使语言是C#)是一个难以描述的优势,值得花在Xamarin上的每一分钱。

我们能够在不到3个月的时间内将一个针对平板电脑操作系统和PocketPC编写的500,000行VB.Net应用程序移植到iPad上,包括本地数据库支持、web服务交互等。现在我们有了一个公共服务层,应该不到一个月就可以为安卓创建UI了。到那时,我们将拥有一个跨iOS、安卓、Windows桌面、Windows tablet和Windows Phone的应用程序。我肯定不能用我每年在微软生态系统中花费的数万美元做到这一点。

票数 17
EN

Stack Overflow用户

发布于 2013-04-29 17:16:37

旧帖子,但poupou的答案需要一些澄清和一些额外的信息。

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

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

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

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

编辑:更正上述内容- Xamarin不会为您提供开源项目的开源兼容许可证。相反,如果他们能验证你的应用程序是合法开源的,他们会给你一个免费的完整的Xamarin许可证(例如,开发者想要在其中一个应用程序商店上发布一个开源应用程序的版本)。这仍然是商业许可(对于一个开发人员),而不是开放源码兼容许可,因此该许可不适用于为您的项目下载代码并构建它的任何其他开发人员。他们需要购买自己的Xamarin许可证才能发布自己版本的开源应用程序。

这意味着,利用封闭源代码分发的LGPL对象代码选项的唯一方法(或者,实际上,在没有Xamarin许可的情况下发布兼容LGPL的开源应用程序),您需要编写所有您自己的平台绑定,以使您的应用程序能够以任何有意义的方式与系统或UI交互。来自ClockworkMod的Koushik Dutta在Xamarin发布用于安卓的Mono之前就开始了这样一个项目,至少在安卓绑定方面是这样。在Xamarin发布之后,他放弃了这个项目,但代码仍然可以在这里找到:https://github.com/koush/androidmono

如果要为Mono创建一组android/iOS绑定,并在MIT/X11等许可的开源许可证下发布它们,那么应用程序可以绕过Xamarin,在符合LGPL的对象文件选项下发布应用程序(如果是开源应用程序,也可以直接发布代码)。

更进一步-如果您查看核心mono许可细目,您将注意到只有核心mono运行时及其库在LGPL下获得许可。几乎所有的类库都已经在使用许可许可,如MIT/X11或其他某种形式的Apache或MS-PL。这意味着,假设除了为android/iOS创建一些允许的开源绑定之外,有人从头开始并使用更宽松的许可重写核心mono运行时和运行时库( mono的所有LGPL‘’ed部分),那么这个假设版本的mono(我幻想它时称为"MonoLibre“)可以免费嵌入到封闭源代码应用程序中,而无需释放目标文件、开放您的应用程序、支付Xamarin任何东西,或者必须向Xamarin请求许可才能分发您的开源应用程序。Xamarin可以继续销售“商业化”的mono运行时,但MonoLibre可以继续使用所有相同的类库,甚至相同的编译器。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7936066

复制
相关文章
ElementUI的DatePicker(日期选择器)限定范围的玩法
1.ElementUI的DatePicker(日期选择器)时间范围只能在一个月 效果 222 代码 <template> <div class="page"> <el-date-pic
治电小白菜
2020/08/25
5.1K0
ElementUI的DatePicker(日期选择器)限定范围的玩法
WPF 日期选择器和时间选择器
格式有要求,必须是yyyy-MM-dd hh:mm:ss或者yyyy/MM/dd hh:mm:ss
码客说
2023/02/10
6.1K0
日期选择器DatePicker和时间选择器TimePicker
在实际开发中,经常会遇见一些时间选择器、日期选择器、数字选择器等需求,那么从本期开始来学习Android中常用选择器,今天学习的是DatePicker和TimePicker。 一、DatePicker DatePicker是一个比较简单的组件,从FrameLayout派生而来,供用户选择日期。其在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期,如果程序需要获取用户选择的日期则可通过为DatePicker添加 OnDateChangedListener 进行监听来实现。
分享达人秀
2018/02/05
5.2K0
日期选择器DatePicker和时间选择器TimePicker
Datepicker日期选择器插件
这个插件还是比较简单的,而且样式也比较漂亮,可以自定义选择年月日、年月日时分、年月、时间段选择等等。
从入门到进错门
2018/08/21
3.9K0
Datepicker日期选择器插件
css3选择器-选择范围 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
6650
UIDatePicker 日期时间选择器
//星期 月日 时分 上下午 UIDatePicker dk = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 20, 320, 200)]; [self.view addSubview:dk]; //四种 类型 dk.datePickerMode = UIDatePickerModeCountDownTimer; / UIDatePickerModeTime, // Displays hour, m
用户8983410
2021/10/29
2.7K0
uni-app日期选择器
首先是这个picker选择器,mode选择日期,end是写一个范围前日期,:end就是这个日期是动态变化的,还有change函数
叶茂林
2023/08/13
1.5K0
uni-app日期选择器
Android 日期选择器之DatePickerDialog
DatePickerDialog其实就是把CalendarView封装进Dialog中了,调用起来更方便快捷。
yechaoa
2022/06/10
2.2K0
Android 日期选择器之DatePickerDialog
简单清爽的 PowerBI 单日期选择器
上述案例反应了用户选择了一个日期,然后所有的数据计算以该日期为基准,只显示最近 X 天的,X 由滑竿切片器给定。
BI佐罗
2019/12/10
4.8K0
简单清爽的 PowerBI 单日期选择器
Flutter中的日期、格式化日期、日期选择器组件在
所谓时间戳,是指自格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
拉维
2019/08/29
26.1K0
Flutter中的日期、格式化日期、日期选择器组件在
JavaScript 日期选择器 Pikaday 的高级用法
我前面介绍了轻量级的 JavaScript 日期选择器 Pikaday 和其简单的用法,但是在使用当中发现有几个限制:
Denis
2023/04/15
1.3K0
好多Javascript日期选择器呀-4
<Script LANGUAGE="JavaScript">  var months = new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二");  var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31,30, 31, 30, 31);  var days = new Array("日","一", "二", "三","四", "五", "六");  var classTemp;  var today=new getToday();  var year=today.year;  var month=today.month;  var newCal; 
Java架构师必看
2021/03/22
8370
好多Javascript日期选择器呀-6
<script language=javascript> var DS_x,DS_y;
Java架构师必看
2021/03/22
1K0
好多Javascript日期选择器呀–2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"> <html xmlns="<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>"> <head> <title>calender select</title> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <style type='text/css'> body {      font-family:"Lucida sans unicode", sans-serif;      font-size:12px;      margin:0;      padding:0;      height:100%;      } #basis {      display:inline;      position:relative;      } #calender {      position:absolute;      top:30px;      left:0;      width:220px;      background-color:#fff;      border:3px solid #ccc;      padding:10px;      z-index:10;      } #control {      text-align:center;      margin:0 0 5px 0;      } #control select {      font-family:"Lucida sans unicode", sans-serif;      font-size:11px;      margin:0 5px;      vertical-align:middle;      } #calender .controlPlus {      padding:0 5px;      text-decoration:none;      color:#333;      } #calender table {      empty-cells: show;      width:100%;      font-size:11px;      table-layout:fixed;      } #calender .weekdays td{      text-align:right;      padding:1px 5px 1px 1px;      color:#333;      } #calender .week td {      text-align:right;      cursor:pointer;      border:1px solid #fff;      padding:1px 4px 1px 0;      } #calender .week .today {       background-color:#ccf;      border-color:#ccf;      } #calender .week .holiday {      font-weight: bold;      } #calender .week .hoverEle {      border-color:#666;      background-color:#99f;      color:#000;      }
Java架构师必看
2021/03/22
6620
AngularDart Material Design 日期选择器 顶
当用户键入日期时,将专门处理具有2位数年份的日期。 例如。7/7/77被解释为1977年7月7日,而不是77年7月7日。这个逻辑看起来是未来20年:现在(2015年8月),“35”被解释为2035,但“36”被解释为“1936”。 明年,“36”将开始被解释为2036年。
南郭先生
2018/09/30
5.1K0
【开源 UI 组件】Flutter 图表范围选择器
这样当图表的数据量过大,不宜全部展示时,可选择的局部展示就是个不错的解决方案。由于一般的图表库没有提供该功能,这里自己通过绘制来实现以下,操作效果如下所示:
张风捷特烈
2022/09/20
1.3K1
【开源 UI 组件】Flutter 图表范围选择器
好多Javascript日期选择器呀-5
<TITLE>最精致的日历式日期输入控件 (Smart Ver 1.00)</TITLE>
Java架构师必看
2021/03/22
1.1K0
好多Javascript日期选择器呀–3
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0045)<a href="http://e.goldia.cn/plus/calendar/calendar.htm" target="_blank">http://e.goldia.cn/plus/calendar/calendar.htm</a> --> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=gb2312"> <SCRIPT type=text/javascript> String.prototype.Format = function(){ var tmpStr = this; var iLen = arguments.length; for(var i=0;i<iLen;i++){ tmpStr = tmpStr.replace(new RegExp("//{" + i + "//}", "g"), arguments[i]); } return tmpStr; } Calendar = { //region Property today :new Date(), year:2005, month:8, date:21, curPosX:0, curPosY:0, curCapture:null, curDay:null, //endregion
Java架构师必看
2021/03/22
7530
DateTimePicker 日期时间选择器,默认获取当前日期
在vue里面,我们已经用到过单独的TimePicker 时间选择器和DatePicker 日期选择器了,现在需要用到一个可以同时选择年月日时分秒的插件,饿了么的文档里面就有现成可以使用的~~
王小婷
2021/07/19
7.3K0
DateTimePicker 日期时间选择器,默认获取当前日期
点击加载更多

相似问题

我如何知道文件的区域设置?

16

我怎么知道这里需要哪个文件?

22

我想知道文件创建日期

10

我需要知道在过程中保留业务层的缺点

59

我需要知道用于Textmate和SVN的行尾设置

13
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文