Answers:
更新:自从两年前我写了这个答案以来,我们将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
是的,有可能,而且不会那么困难。从这一点开始,需要的只是某种转换器,它将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)的产品。
.NET紧凑框架已移植到Symbian OS(http://www.redfivelabs.com/)。如果.NET作为“封闭”平台可以移植到该平台,我看不出任何原因无法在Android上完成。
我认为,将CLI字节码转换为Dalvik,并为某些核心功能(例如集合,文件访问等)编写包装器类在技术上是可能的,即使这很辛苦。
但是,在Android上运行的.NET桌面应用程序会感觉有些陌生,因为它具有经典的Windows风格的GUI(在触摸设备上不太可用)。另一方面,如果要在.NET中编写类似于android的GUI,则需要另一套包装器(请注意,包装与上述包装器相反。)
我不确定.NET移动应用程序是否会在android上感觉很原生,但我想可能不会。
也许您对另一种方法感兴趣:您可以使用Java语言编写应用程序。然后,您可以通过Microsoft J#将其编译为.NET(我知道它已经停产,但您仍然可以下载和使用它),并在android上使用相同的Java代码。同样,这是针对核心类(又称为业务逻辑)的,并且您还必须编写两个GUI。也许您也可以标记J2ME,如果使用.NET,则将无法对其进行标记。