【发布时间】:2010-09-17 21:29:04
【问题描述】:
现在带有 Google 的 Android 操作系统的 G1 现已推出(很快),Android 平台会支持 .Net 吗?
【问题讨论】:
-
现在可以了!
-
更重要的是,微软是否会将 .NET 移植到 Windows 以外的平台上?
现在带有 Google 的 Android 操作系统的 G1 现已推出(很快),Android 平台会支持 .Net 吗?
【问题讨论】:
更新:自从我两年前写下这个答案以来,我们将 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 bytecode 的转换器。由于这两种格式都是开源的并且有据可查,所以不会有任何问题。
因此,用 C# 或 VB.NET 编写 Android 应用程序将是可能的,问题是将支持多少 .NET 框架标准库。但这是另一个问题。
奥斯卡·雷耶斯写道:
我很确定谷歌是否会提供任何 对 .net 感兴趣,他们会设计 Android 在 第一阶段,而不是现在 生产阶段。我不是说它是 不可能,我要说的是 他们不感兴趣。也许在嗯 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 日在他的blog 上宣布,他们将开始开发用于 android 的 mono,将被称为 MonoDroid。
这将类似于 iphone 上的 MonoTouch,但适用于 android。
它将提供与 android UI 的绑定,因此应用的外观和感觉都是原生 android 应用。这将需要您编写一个特定于 android 的 UI。
但是,您将能够重用现有的较低级别的库,而无需重新编译。
【讨论】:
有适用于 Android 的 Mono,它是为 Android 移植的 .NET 框架。还有 MonoDroid,一个使用 C# 和核心 .NET API 开发基于 Android 的应用程序的开发堆栈。 MonoDroid Preview 1 已于几天前发布。
【讨论】:
由于这是在 Google 上搜索 Android 和 .net 支持时的第一个链接,因此只适合在此处发布。
mono 项目正在开发一个 SDK,以使用 C# 等 CIL 语言开发 Android 应用程序。不利的一面是它将是一个商业产品。 monodroid
【讨论】:
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 图形用户界面,在触摸设备上不是很可用。另一方面,如果您要在 .NET 中编写类似 android 的 GUI,则需要另一组包装器(请注意,包装器与上面提到的包装器正好相反)。
我不确定 .NET 移动应用程序是否会在 android 上感觉是原生的,但我猜它不会。
也许您对另一种方法感兴趣:您可以用 Java 语言编写应用程序。然后,您可以通过 Microsoft J# 将其编译为 .NET(我知道它已停产,但您仍然可以下载并使用它)并在 android 上使用相同的 Java 代码。同样,这是针对核心类,也就是业务逻辑,您必须再次编写两个 GUI。也许您也可以标记 J2ME,如果您使用 .NET,您将无法做到这一点。
【讨论】:
.NET for Android 对我来说似乎是一种真正的可能性。有消息称,微软将发布适用于 Android 的 Silverlight——永远不要低估微软将引导到苹果的优势。一款速度更快、功能更丰富、开发生命周期更快、令人印象深刻的硬件、Flash 和 Silverlight 作为标准安装的智能手机。
Microsoft 对改进 Android 有着既得利益,同时,将为 Android 上的 Silverlight 开发应用程序也将在具有多点触控、GPS 等功能的 Windows Phone 7 操作系统上运行。
【讨论】: