谷歌Android是否会支持.NET?

253

现在,搭载Google Android操作系统的G1即将推出,那么安卓平台会支持.Net吗?


24
那将是一件了不起的事情! - Calanus
13个回答

324

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

Mono on Android基于Mono 2.10运行时,默认使用C# 4.0编译器和4.0配置文件,并使用Mono的新SGen垃圾回收引擎,以及我们的新分布式垃圾回收系统,可在Java和Mono之间执行垃圾回收。


以下链接反映了2009年1月的Mono on Android情况,出于历史背景考虑,我保留了它们

感谢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
好的,我说过,不是微软也不是谷歌,很可能是米格尔,现在你就在这里了(我知道不是你,但有点像)。米格尔,非常棒的链接。你认为谷歌会支持这个吗?我的意思是,他们会将端口托管到自己的平台上吗?:) 如果可以的话,我会给自己的答案投反对票 :) - OscarRyz
6
嗯,这只是在相同硬件上运行的 Debian 系统。在我看来还没有完全移植到 Android,但听起来完全移植似乎不是一个大问题。 - sandos
1
我在想,是否有与谷歌讨论过使安装更容易的话题?也许可以将其作为市场上的免费下载提供?允许将 .Net 应用程序放到市场上? - csauve
1
太糟糕了,它不能与Visual Studio Express一起使用... - Rockcoder
1
太棒了。很高兴看到更新的答案。+1 Miguel - Steven Evers
显示剩余3条评论

77
是的,这是可能的,而且也不会很难。现在所需要的只是一种将MSIL转换为Dalvik bytecode的转换器。由于这两种格式都是开放源代码和文档齐全的,所以不会有任何问题。
因此,用C#或VB.NET编写Android应用程序是可能的,问题是会支持多少.NET框架标准库。但那是另一个问题。
“如果谷歌对.NET有任何兴趣,他们在Android处于第一阶段时就会设计出来,而不是在生产阶段。”奥斯卡·雷耶斯写道。
实际上,他们已经设计了与Java和.NET非常兼容的东西。
他们不能一下子做到所有事情,但如果您查看Android SDK,那里有一个名为“dx”的工具。该工具将Java字节码转换为Dalvik字节码,因此换句话说,您今天可以毫不费力地在Android上运行使用Java编写的程序。现在需要同样的工具来处理.NET。
考虑到.NET和Java有多相似,这只是时间问题。

.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)。


16
我不同意。从技术角度来看,你所说的一切都是可能的,但我认为你低估了需要的工作量。像交叉编译"hello world"这样的概念验证总是很容易的,在几个小时内就能完成。但是要为所有类设置包装器需要大量的工作。 - Lena Schimmel
4
你所发布的视频是关于iPhone而不是Android。 - lubos hasko
14
考虑到Google对Java的偏好,他们没有选择使用.NET并不令人惊讶。尽管使用Mono可能是可行的,但我几乎确信,Google会像Microsoft避免使用Linux一样极力避免使用.NET。 - Joey
2
除非一些更大的公司给予支持,否则小公司不会把自己的未来押在这上面。Novell已经赞助了它。微软也通过提供编解码器和测试套件来支持其衍生项目Moonlight。 - sblom
我认为已经有一种将IL转换为Java字节码的转换器了。如果是这样的话,dx可以将Java字节码转换为Dalvik字节码,那么根据您关于只需要一个转换器的陈述,这应该已经在技术上可行了。.NET应用程序只需编译为Java字节码,然后作为Java应用程序交给Android,由dx进行转换。但肯定不可能这么简单。 - jpierson
显示剩余3条评论

22

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

这将类似于iPhone上的MonoTouch,但针对的是Android。

它将提供与Android UI的绑定,因此应用程序看起来和感觉像本地的Android应用程序。这将需要您编写特定于Android的UI。

但是,您将能够重复使用现有的低级库,而无需重新编译。


Monodroid beta现在已经对早期注册beta计划的人开放。 - Damian
是的,它目前处于私人测试版阶段,我已经注册了,但是到目前为止还没有收到邀请 :( - trampster

8

由于这是在谷歌搜索Android和.net支持时显示的第一个链接,因此在此发布此内容非常合适。

mono项目正在开发一款SDK,以使用CIL语言(如C#)开发Android应用程序。缺点是它将是一款商业产品。monodroid


8

现在有Mono for Android,这是.NET框架移植到Android上的版本。还有MonoDroid,它是一个开发堆栈,可以使用C#和核心.NET API来开发基于Android的应用程序。几天前发布了MonoDroid预览版1。


6

MonoDroid已经推出预览版。我认为这将填补空白。然而,对于开发来说,MonoDroid可能是一个昂贵的选择。他们的其他开发工具价格在199美元至4000美元之间(MonoTouch .. iPhone dev tool ... 的定价在399美元至3999美元之间)。如果人们使用这些工具开发应用程序,他们需要一个非常强大的商业模式才能获得一些回报。


5

请看这个 xmlvm ,我认为这是可能的。也许你可以看看这个视频


我喜欢那些答案。它表明这是可能的,但如果你观看那个视频,它也展示了仍有多少问题需要解决以及所有这一切背后的工作量。 - Lena Schimmel

3
.NET 紧凑框架已被移植到 Symbian 操作系统 (http://www.redfivelabs.com/)。如果作为“封闭”的平台的 .NET 可以移植到这个平台,我看不出为什么不能在 Android 上实现。

你用过紧凑框架吗?我在工作中每天都使用它,而MonoDroid形式的单机端口将更加出色。 - trampster

3

.NET和Mono是非常好的环境,有许多工具和优秀的技术人才知道如何使用它们。

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

我真的很希望看到在Android上实现稳定的Mono,带有类似于Monotouch的Android API包装器,并且愿意为此付费,因为我自己无法做到。


3

也完全可以修改Mono的端口。


@akdom,你有将软件从桌面/服务器操作系统移植到嵌入式系统的经验吗?我有一些移动开发经验(Java和Brew),但我认为你严重低估了这个工作的难度。虽然可能是可行的,但在未来3年内肯定不行。 - ddimitrov
@ddmitrov:问题是安卓平台是否支持.NET,而不是在未来三年内是否会支持。我只是提出了一个假设,因为Mono是.NET的开源实现,所以构建安卓版本的Mono比从头开始要容易得多。 - akdom
2
最终并没有花费三年的时间。Xamarin的团队计划在不到六个月内再次完成这项任务。 - Justin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接