Google Android会支持.NET吗?[关闭]


253

现在,带有Google Android OS的G1现已面市(很快),Android平台是否将支持.Net?


24
现在就可以了!
Calanus

更重要的是,微软是否会将.NET移植到Windows以外的平台上?
凯瑞

Answers:


325

更新:自从两年前我写了这个答案以来,我们将Mono产品化为可在Android上运行。该工作包括几个步骤:将Mono移植到Android,将其与Visual Studio集成,在Mac和Windows上构建MonoDevelop的插件,以及将Java Android API暴露于.NET语言。现在可以从http://monodroid.net获得

Android上的Mono基于Mono 2.10运行时,并且使用C#4.0编译器默认为4.0配置文件,并使用Mono的新SGen垃圾收集引擎以及我们的跨Java和Mono执行GC的新的分布式垃圾收集系统。


以下链接反映了截至2009年1月在Android上的Mono,我将其保留为历史背景

由于Koushik Dutta和Marc Crichton的努力,Mono现在可以在Android上使用。

您可以在此处观看其运行的视频:http : //www.koushikdutta.com/2009/01/mono-on-android-with-gratuitous-shaky.html

您可以在此处获取有关自行构建Mono的说明:http : //www.koushikdutta.com/2009/01/building-mono-for-android.html

您可以在此处获得比较Mono的JIT与Dalvik的解释器的基准:http : //www.koushikdutta.com/2009/01/dalvik-vs-mono.html

当然,您还可以在此处获取带有Mono的预配置映像(有关使用该映像的详细信息,请转到文章底部):http : //www.koushikdutta.com/2009/01/building-mono-for- android.html


1
好吧,我说过,不是MS也不是Google,而是Miguel,而您在这里(我知道不是您,但在某种程度上很亲密)Miguel的良好链接。您认为Google会支持吗?我是说他们把港口藏在了身后?:)如果可以的话,我会否决我自己的答案:)
OscarRyz

6
嗯,多数民众赞成“只有”在相同硬件上运行的debian中运行。我认为还没有完全移植到“ android”上,但是看起来完全移植它并不是一个大问题。
sandos'2

1
我想知道,是否与Google进行过任何对话,以使其更易于安装?也许可以从市场上免费下载?是否允许将.Net应用程序投放市场?
csauve 2010年

1
太糟糕了,它不适用于Visual Studio Express ...
Rockcoder

1
太棒了 很高兴能找到更新的答案。+1 Miguel
史蒂文·埃弗斯

78

是的,有可能,而且不会那么困难。从这一点开始,需要的只是某种转换器,它将MSIL转换为Dalvik字节码。由于这两种格式都是开源的并且有据可查,因此不会有任何问题。

因此,可以使用C#或VB.NET编写Android应用程序,问题是将支持多少.NET Framework标准库。但这是另一个问题。

奥斯卡·雷耶斯(Oscar Reyes)写道:

我非常确定,如果Google对.net有任何兴趣,他们会在Android处于初期阶段而不是现在进入生产阶段时进行某些设计。我并不是说这是不可能的,我是说他们不感兴趣。也许在mmm hhhh 10年。

实际上,他们已经设计的与Java和.NET 非常兼容

他们无法一次完成所有操作,但是如果您查看Android SDK,就会有一个名为dx的工具。该工具将Java字节码转换为Dalvik字节码,换句话说,您现在可以毫不费力地在Android上运行用Java编写的程序。现在,.NET需要相同的工具。

考虑到.NET和Java有多么相似,这实际上是一个时间问题。

ddimitrov写道:

.Net-> Java-> Dalvik的翻译现在甚至可以完成(http://dev.mainsoft.com/),但是我认为您低估了.Net库的不足。当然有人可以移植Mono,但这绝对不是一件容易的事。

无需移植Mono。Android已经具有VM和一些基本的API。所有需要的是CIL-> Dalvik转换器和适用于Android API的微型.NET包装器(以及某些标准.NET类的一些基本实现)。而已。

更新: .NET在Android上已经可以使用- 如上所述,您将需要名为Monodroid(http://monodroid.net)的产品。


是的,我们永远不知道...也许,也许...好吧,将它变成4年而不是10年...:P
OscarRyz

16
我不同意 您说的一切在技术上都是可行的,但我认为您低估了所需的工作量。在几个小时内将概念证明(如交叉编译的问候词)组合在一起总是很容易的。但是为所有类设置包装器是一项繁重的工作。
Lena Schimmel,

4
@Brian,您发布的视频是关于iPhone而非Android的。
lubos hasko 09年

14
好吧,鉴于Google具有Java亲和力,因此他们选择.NET 也就不足为奇了。是的,使用Mono可能是可行的,但我几乎可以肯定,Google将避免以与Microsoft避免使用Linux类似的热情来使用.NET。
乔伊(Joey)

2
“除非一些大公司给它一些支持,否则小公司不会将未来押注在它上面。” Novell已经赞助了它。微软通过提供编解码器和测试套件来支持衍生项目Moonlight。
sblom

23

Miguel de Icaza于2010年2月17日在他的博客上宣布,他们将开始在Mono上开发适用于Android的Mono,即MonoDroid。

这类似于iPhone上的MonoTouch,但适用于android。

它将提供与android UI的绑定,因此应用程序将具有实时本机android应用程序的外观。这将需要您编写一个特定于android的UI。

但是,您将可以重用现有的较低级库,而无需重新编译。


现在,早期注册Beta计划的人都可以使用Monodroid beta。
达米安

是的,它目前处于私人测试版中,我确实注册了该版本,但到目前为止
仍未

9

有适用于Android的Mono,它是为Android移植的.NET框架。还有MonoDroid,这是一个使用C#和核心.NET API来开发基于Android的应用程序的开发堆栈。MonoDroid Preview 1已在几天前发布。


9

由于这是搜索Android和.net支持时Google上的第一个链接之一,因此仅适合在此处发布。

mono项目正在开发一个SDK,以使用诸如C#之类的CIL语言开发Android应用程序。不利的一面是它将是一种商业产品。独角兽


7

MonoDroid可用于预览。我认为这将弥合差距。但是,MonoDroid可能是开发的昂贵选择。他们的其他开发工具的价格在199美元至4000美元之间(MonoTouch .. iPhone开发工具...的价格在399美元至3999美元之间)。如果人们使用这些工具开发应用程序,那么他们需要一个非常强大的业务模型才能看到一些回报。


6

检查这个xmlvm我认为这是可能的。可能还可以查看此视频


我喜欢那个答案。它表明这是可能的,但是如果您观看该视频,它还表明仍有多少问题尚待解决,而所有这些工作仍在进行。
Lena Schimmel,

4

修改过的Mono端口也完全可能。


@akdom,您在将软件从台式机/服务器操作系统移植到嵌入式系统方面是否有经验?我有一些移动开发经验(Java和Brew)和恕我直言,您严重低估了这项工作。有可能,但绝对不会在未来3年内。
ddimitrov

@ddmitrov:问题是带有EVER的android平台是否支持.NET,而不是在未来三年内是否会支持。我只是认为,由于Mono是.NET的开源实现,因此构造Android版本的Mono而不是从头开始会更容易。
akdom

2
最终并没有花三年的时间。Xamarin的人们计划在不到六个月的时间内再次这样做。
贾斯汀

4

.NET紧凑框架已移植到Symbian OS(http://www.redfivelabs.com/)。如果.NET作为“封闭”平台可以移植到该平台,我看不出任何原因无法在Android上完成。


您是否使用过紧凑的框架?我每天都在工作,MonoDroid形式的单声道端口会更好。
流浪汉

4

.NET和Mono是绝佳的环境,拥有许多工具和丰富的技能基础,这些人都知道如何使用它们。

我认为Mono有机会成为首选的移动跨平台开发环境,因为它们是iPhone上Objective-C的唯一替代品,应该可以移植到Android,而.NET已经在Windows Mobile上。

我真的希望看到在Android上实现Mono的可靠实现,以及与Monotouch一起使用Android API的包装器,并且由于我本人无法自己做,因此愿意为此付费。


3

您更有可能看到Android实现的Silverlight。微软代表已经证实这是有可能的,而iPhone代表则认为这是有问题的。

但是.Net框架的版本是可能的。只需要有人在乎它:)

但是,实际上,从C#迁移到Java并不是什么大问题,考虑到两个平台(PC与G1)之间的巨大差异,您似乎不可能为任何一款应用程序都使用一个代码库您想同时运行两者。


3

我认为,将CLI字节码转换为Dalvik,并为某些核心功能(例如集合,文件访问等)编写包装器类在技术上是可能的,即使这很辛苦。

但是,在Android上运行的.NET桌面应用程序会感觉有些陌生,因为它具有经典的Windows风格的GUI(在触摸设备上不太可用)。另一方面,如果要在.NET中编写类似于android的GUI,则需要另一套包装器(请注意,包装与上述包装器相反。)

我不确定.NET移动应用程序是否会在android上感觉很原生,但我想可能不会。

也许您对另一种方法感兴趣:您可以使用Java语言编写应用程序。然后,您可以通过Microsoft J#将其编译为.NET(我知道它已经停产,但您仍然可以下载和使用它),并在android上使用相同的Java代码。同样,这是针对核心类(又称为业务逻辑)的,并且您还必须编写两个GUI。也许您也可以标记J2ME,如果使用.NET,则将无法对其进行标记。


不,您不是假设将移植胜利表格,这是一个非常糟糕的主意,MonoDroid将具有与android UI小部件的绑定,因此它看起来就像一个本机android应用程序,用户甚至不需要知道它在MonoDroid上运行
流浪者

将CLI字节码发送给Dalvik也不是一个好主意,mono运行时和VM已在ARM上运行,因此使其在android上运行将不是问题。并且看到JIT已编译为mono,而Dalvik被解释为。在mono运行时上运行会更快。
蹦床

2

.NET for Android在我看来是一种真正的可能性。有消息称,微软将发布适用于Android的适当Silverlight-永远不要低估微软将其引入苹果的优势。速度更快,功能更丰富,开发生命周期更快,硬件令人印象深刻的智能手机,Flash和Silverlight可作为标准安装程序。

微软对改善Android有着既得利益,与此同时,将在Android上开发适用于Silverlight的应用程序,还将在具有多点触控,GPS等的Windows Phone 7 OS上运行。

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.