现在带有 Google 的 Android 操作系统的 G1 现已上市(很快),Android 平台会支持 .Net 吗?
13 回答
更新:自从两年前我写了这个答案以来,我们将 Mono 产品化为在 Android 上运行。这项工作包括几个步骤:将 Mono 移植到 Android,将其与 Visual Studio 集成,在 Mac 和 Windows 上为 MonoDevelop 构建插件,并将 Java Android API 公开给 .NET 语言。现在可以在http://monodroid.net
- 入门: http: //monodroid.net/Welcome
- 文档: http: //monodroid.net/Documentation
- 教程: http: //monodroid.net/Tutorials
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 框架标准库。但这是另一个问题。
奥斯卡雷耶斯写道:
我很确定如果谷歌对 .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 ) 产品。
Miguel de Icaza 于 2010 年 2 月 17 日在他的博客上宣布,他们正在着手开发用于 android 的 mono,将被称为 MonoDroid。
这将类似于 iphone 上的 MonoTouch,但适用于 android。
它将提供与 android UI 的绑定,因此应用程序的外观和感觉都是实时的原生 android 应用程序。这将要求您编写一个特定于 android 的 UI。
但是,您将能够重用现有的较低级别的库,而无需重新编译。
由于这是在 Google 上搜索 Android 和 .net 支持时的第一个链接,因此只适合在此处发布。
mono 项目正在开发一个 SDK,以使用 C# 等 CIL 语言开发 Android 应用程序。不利的一面是它将是一个商业产品。单机器人
有适用于 Android 的 Mono,它是为 Android 移植的 .NET 框架。还有 MonoDroid,一个使用 C# 和核心 .NET API 开发基于 Android 的应用程序的开发堆栈。MonoDroid Preview 1 已于几天前发布。
MonoDroid 可供预览。我认为这将弥合差距。然而,MonoDroid 可能是一个昂贵的开发选择。他们的其他开发工具的价格在 199 美元到 4000 美元之间(MonoTouch .. iPhone 开发工具……的价格在 399 美元到 3999 美元之间)。如果人们使用这些工具开发应用程序,他们需要一个非常强大的商业模式才能看到一些回报。
Mono的修改端口也是完全可能的。
.NET 紧凑框架已移植到 Symbian OS ( http://www.redfivelabs.com/ )。如果 .NET 作为一个“封闭”平台可以移植到这个平台,我看不出有什么理由不能为 Android 做。
.NET 和 Mono 是很好的环境,有许多工具和知道如何使用它们的人的优秀技能基础。
我认为 Mono 有机会成为首选的移动跨平台开发环境,因为它们是 iPhone 上 Objective-C 的唯一替代品,并且应该可以移植到 Android,而 .NET 已经在 Windows Mobile 上。
我真的希望在 Android 上看到 Mono 的可靠实现,以及 Android API 的包装器和 Monotouch 一样,并且愿意为此付费,因为我自己无法做到这一点。
您更有可能看到 Silverlight 的 Android 实现。微软代表已经确认这是可能的,与代表说有问题的 iPhone 相比。
但是.Net 框架的一个版本是可能的。只需要有人这么关心它:)
但实际上,从 C# 迁移到 Java 并不是什么大问题,考虑到这两个平台(PC 与 G1)之间的巨大差异,您似乎不太可能为任何应用程序使用一个代码库。你想在两者上运行。
在我看来,将 CLI 字节码转换为 Dalvik,并为一些核心功能(如集合、文件访问等)编写包装类在技术上是可行的,即使这将是一项艰苦的工作。
但是在 android 上运行的 .NET 桌面应用程序会让人感觉很陌生,因为它会有一个经典的类似 Windows 的 GUI,在触摸设备上不太可用。另一方面,如果您要在 .NET 中编写类似 android 的 GUI,则需要另一组包装器(请注意,包装器与上面提到的包装器相反)。
我不确定 .NET 移动应用程序是否会在 android 上感觉是原生的,但我猜它不会。
也许您对另一种方法感兴趣:您可以用 Java 语言编写应用程序。然后,您可以通过 Microsoft J# 将其编译为 .NET(我知道它已停产,但您仍然可以下载并使用它)并在 android 上使用相同的 Java 代码。同样,这是针对核心类,也就是业务逻辑,您必须再次编写两个 GUI。也许您也可以标记 J2ME,如果您使用 .NET,您将无法做到这一点。
.NET for Android 对我来说似乎是一种真正的可能性。有消息称,微软将发布适用于 Android 的 Silverlight——永远不要低估微软将引导到苹果的优势。一款速度更快、功能更丰富、开发生命周期更快、令人印象深刻的硬件、Flash 和 Silverlight 作为标准安装的智能手机。
微软对改进 Android 有着既得利益,同时,将为 Android 上的 Silverlight 开发应用程序也将在具有多点触控、GPS 等功能的 Windows Phone 7 操作系统上运行。