现在有了谷歌Android操作系统的G1现在可用(很快),Android平台是否会支持.Net?
答案 0 :(得分: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获得预先配置的图像(有关使用Mono的详细信息,请转到帖子的底部):http://www.koushikdutta.com/2009/01/building-mono-for-android.html
答案 1 :(得分:78)
是的,这是可能的,并不会那么困难。此时所需要的只是某种将MSIL转换为Dalvik bytecode的转换器。由于这两种格式都是开源的并且有详细记录,因此不存在任何问题。
因此,用C#或VB.NET编写Android应用程序是可能的,问题是将支持多少.NET框架标准库。但这是另一个问题。
Oscar Reyes写道:
我很确定谷歌是否可以提供任何帮助 对.net感兴趣,他们会设计 Android中的东西 第一阶段,而不是现在他们在 生产阶段。我不是故意的 不可能,我说的是 他们不感兴趣。也许在mmm 嗯10年。
实际上他们已经设计的是与Java和.NET非常兼容
他们无法一次完成所有工作,但如果你研究Android SDK,就会有一个名为 dx 的工具。这个工具将Java字节码转换为Dalvik字节码,换句话说,你可以毫不费力地在Android上运行用Java编写的程序。现在.NET需要相同的工具。
考虑到.NET和Java有多相似,这真的是时间问题。
ddimitrov写道:
.Net-> Java-> Dalvik翻译可以 即使现在也要完成 (http://dev.mainsoft.com/),但我 认为你低估了缺乏 .Net库。当然有人可以 港口单声道,但它绝对是一个 非平凡的努力。
无需移植Mono。 Android已经拥有VM和一些基本API。所需要的只是CIL-> Dalvik转换器和用于Android API的微型.NET包装器(也许是一些标准.NET类的一些基本实现)。就是这样。
更新:.NET已在Android上运行 - 如上所述,您将需要名为Monodroid(http://monodroid.net)的产品。
答案 2 :(得分:23)
Miguel de Icaza于2010年2月17日在他的blog宣布,他们正在开始研究montoDroid的单声道。
这类似于iPhone上的MonoTouch,而不是Android。
它将提供与Android UI的绑定,因此应用程序将外观和感觉实时原生Android应用程序。这将要求您编写特定于Android的UI。
但是,您可以重用现有的低级库,而无需重新编译。
答案 3 :(得分:9)
由于这是搜索Android和.net支持时谷歌上的第一个链接之一,因此只能在此处发布。
mono项目正在开发一个SDK,用于使用C#等CIL语言开发Android应用程序。不利的一面是它将是一种商业产品。 monodroid
答案 4 :(得分:9)
有适用于Android的Mono,适用于Android的.NET框架。 MonoDroid是一个开发堆栈,用于使用C#和核心.NET API来开发基于Android的应用程序。 MonoDroid Preview 1几天前发布。
答案 5 :(得分:7)
MonoDroid可供预览使用。我认为这将填补这一空白。但是,MonoDroid可能是一个昂贵的开发选择。他们的其他开发工具售价在199美元到4000美元之间(MonoTouch .. iPhone开发工具......价格在399美元到3999美元之间)。如果人们使用这些工具开发应用程序,他们需要一个非常强大的商业模式来看到一些回报。
答案 6 :(得分:6)
答案 7 :(得分:4)
Mono的修改端口也是完全可能的。
答案 8 :(得分:4)
.NET compact framework已移植到Symbian OS(http://www.redfivelabs.com/)。如果.NET作为一个“封闭”平台可以移植到这个平台,我看不出为什么不能为Android做到这一点。
答案 9 :(得分:4)
.NET和Mono是一个很好的环境,拥有许多工具和知识如何使用它们的优秀技能。
我认为Mono有机会成为首选的移动跨平台开发环境,因为它们是iPhone上Objective-C的唯一替代品,应该可以移植到Android上,.NET已经在Windows Mobile上
我真的希望在Android上看到一个坚实的Mono实现,与Monotouch一样使用Android API的包装,并准备支付它,因为我自己无法做到这一点。< / p>
答案 10 :(得分:3)
您更有可能看到Silverlight的Android实现。微软代表已经证实,这可能与iPhone的代表说这是有问题的。
但是.Net框架的一个版本是可能的。只需要有人关心它:)
但实际上,从C#迁移到Java并不是什么大不了的事情,考虑到两个平台(PC与G1)之间的巨大差异,您似乎不太可能通过一个代码库来实现你想在两者上运行的任何应用程序。
答案 11 :(得分:3)
在我看来,在技术上可以将CLI字节码转换为Dalvik,并为一些核心功能(如集合,文件访问等)编写包装类,即使这样做也很困难。
但在Android上运行的.NET桌面应用程序会感觉很陌生,因为它会有一个经典的Windows-like GUI,在触控设备上不是很常用。另一方面,如果您要在.NET中编写类似于android的GUI,则需要另一组包装器(请注意,换行是与上面提到的包装器相反的另一种方式)。
我不确定.NET移动应用程序是否会在android上感觉原生,但我猜它不会。
也许您正在尝试另一种方法:您可以使用Java语言编写应用程序。然后,您可以通过Microsoft J#将其编译为.NET(我知道它已经停止但您仍然可以下载并使用它)并在android上使用相同的Java代码。再次,这是核心类,即业务逻辑,再次你必须编写两个GUI。也许你也可以使用J2ME,如果使用.NET,你将无法做到这一点。
答案 12 :(得分:2)
.NET for Android对我来说似乎是一种真正的可能性。有消息称微软将发布针对Android的适当Silverlight-永远不要低估微软将启动引入Apple的优势。智能手机,速度更快,功能更丰富,开发生命周期更快,令人印象深刻的硬件,Flash&amp; Silverlight作为标准可安装。
微软在改进Android方面有着既得利益,与此同时,Android上的Silverlight应用程序也可用于具有多点触控,GPS等的Windows Phone 7操作系统。