【问题标题】:Will Google Android ever support .NET? [closed]Google Android 会支持 .NET 吗? [关闭]
【发布时间】:2010-09-17 21:29:04
【问题描述】:

现在带有 Google 的 Android 操作系统的 G1 现已推出(很快),Android 平台会支持 .Net 吗?

【问题讨论】:

  • 现在可以了!
  • 更重要的是,微软是否会将 .NET 移植到 Windows 以外的平台上?

标签: android .net mono


【解决方案1】:

更新:自从我两年前写下这个答案以来,我们将 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

【讨论】:

  • 好吧,我说,不是 MS 也不是 Google,但可能是 Miguel,你在这里(我知道不是你,但不知何故接近)伟大的链接 Miguel。你认为谷歌会支持这个吗?我的意思是他们把端口放在他们的引擎盖下? :) 如果可以的话,我会否决自己的答案:)
  • 嗯,那是“仅”在同一硬件上运行的 debian 中运行。在我看来,还没有完全移植到“android”,但听起来完全移植似乎不是什么大问题。
  • 我想知道,是否与 Google 进行过任何谈判以使其更易于安装?也许把它作为从市场免费下载的形式?允许 .Net 应用投放市场吗?
  • 太糟糕了,它不适用于 Visual Studio Express...
  • 太棒了。很高兴看到更新的答案。 +1 米格尔
【解决方案2】:

是的,这是可能的,而且不会那么困难。此时开始需要的只是某种将 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) 产品。

【讨论】:

  • 是的,我们永远不知道......也许,也许......好吧,让它 4 年而不是 10 年......:P
  • 我不同意。你所说的一切在技术上都是可行的,但我认为你低估了一个数量级所需的工作。像交叉编译的 hello 词这样在几个小时内完成概念验证总是很容易的。但是为所有类设置包装器是很多工作。
  • @Brian,你发布的视频是关于 iPhone 而不是 Android。
  • 好吧,考虑到 Google 对 Java 的亲和性,他们没有为此选择 .NET 也就不足为奇了。是的,使用 Mono 可能是可行的,但我几乎可以肯定 Google 会避免使用 .NET,就像微软会避免使用 Linux 一样。
  • “小公司不会把他们的未来押在它上面,除非一些大公司在它背后投入一些力量。” Novell 已经赞助了它。微软通过提供编解码器和测试套件来支持衍生项目 Moonlight。
【解决方案3】:

Miguel de Icaza 于 2010 年 2 月 17 日在他的blog 上宣布,他们将开始开发用于 android 的 mono,将被称为 MonoDroid。

这将类似于 iphone 上的 MonoTouch,但适用于 android。

它将提供与 android UI 的绑定,因此应用的外观和感觉都是原生 android 应用。这将需要您编写一个特定于 android 的 UI。

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

【讨论】:

  • Monodroid 测试版现在可供提前注册测试版计划的人使用。
  • 是的,它目前处于私人测试阶段,我确实注册过,但到目前为止错过了邀请:(
【解决方案4】:

有适用于 Android 的 Mono,它是为 Android 移植的 .NET 框架。还有 MonoDroid,一个使用 C# 和核心 .NET API 开发基于 Android 的应用程序的开发堆栈。 MonoDroid Preview 1 已于几天前发布。

【讨论】:

    【解决方案5】:

    由于这是在 Google 上搜索 Android 和 .net 支持时的第一个链接,因此只适合在此处发布。

    mono 项目正在开发一个 SDK,以使用 C# 等 CIL 语言开发 Android 应用程序。不利的一面是它将是一个商业产品。 monodroid

    【讨论】:

      【解决方案6】:

      MonoDroid 可供预览。我认为这将弥合差距。然而,MonoDroid 可能是一个昂贵的开发选择。他们的其他开发工具的价格在 199 美元到 4000 美元之间(MonoTouch .. iPhone 开发工具……的价格在 399 美元到 3999 美元之间)。如果人们使用这些工具开发应用程序,他们需要一个非常强大的商业模式才能看到一些回报。

      【讨论】:

        【解决方案7】:

        检查一下xmlvm 我认为这是可能的。可能也可以查看这个video

        【讨论】:

        • 我喜欢这个答案。它表明这是可能的,但如果您观看该视频,它还会显示仍有多少问题有待解决,以及这一切背后有多少工作要做。
        【解决方案8】:

        Mono 的修改端口也是完全可能的。

        【讨论】:

        • @akdom,您有将软件从桌面/服务器操作系统移植到嵌入式的经验吗?我有一些移动开发经验(Java 和 Brew),恕我直言,你严重低估了我的努力。这可能是可能的,但在未来 3 年内肯定不会。
        • @ddmitrov:问题是安卓平台是否支持.NET,而不是未来三年内是否支持。我只是假设由于 Mono 是 .NET 的开源实现,因此构建 Mono 的 android 版本比从头开始更容易。
        • 最终用不了三年。 Xamarin 的人们计划在不到六个月的时间内再做一次。
        【解决方案9】:

        .NET 紧凑型框架已移植到 Symbian OS (http://www.redfivelabs.com/)。如果 .NET 作为一个“封闭”平台可以移植到这个平台,我看不出有什么理由不能为 Android 做。

        【讨论】:

        • 你用过紧凑型框架吗?我每天都在工作,MonoDroid 形式的单声道端口会更好。
        【解决方案10】:

        .NET 和 Mono 是很好的环境,有许多工具和知道如何使用它们的人的优秀技能基础。

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

        我真的希望在 Android 上看到 Mono 的可靠实现,以及 Android API 的包装器,就像 Monotouch 一样,并且愿意为此付费,因为我自己无法做到这一点。

        【讨论】:

          【解决方案11】:

          您更有可能看到 Silverlight 的 Android 实现。微软代表已经确认这是可能的,与代表说有问题的 iPhone 相比。

          但是.Net 框架的一个版本是可能的。只是需要有人这么关心它:)

          但实际上,从 C# 迁移到 Java 并不是什么大问题,考虑到两个平台(PC 与 G1)之间的巨大差异,您似乎不太可能使用一个代码库来解决您想在两者上运行的任何应用程序。

          【讨论】:

            【解决方案12】:

            在我看来,将 CLI 字节码转换为 Dalvik,并为一些核心功能(如集合、文件访问等)编写包装类在技术上是可行的,即使这将是一项艰苦的工作。

            但是在 android 上运行的 .NET 桌面应用程序会让人感觉很陌生,因为它会有一个经典的类 Windows 图形用户界面,在触摸设备上不是很可用。另一方面,如果您要在 .NET 中编写类似 android 的 GUI,则需要另一组包装器(请注意,包装器与上面提到的包装器正好相反)。

            我不确定 .NET 移动应用程序是否会在 android 上感觉是原生的,但我猜它不会。

            也许您对另一种方法感兴趣:您可以用 Java 语言编写应用程序。然后,您可以通过 Microsoft J# 将其编译为 .NET(我知道它已停产,但您仍然可以下载并使用它)并在 android 上使用相同的 Java 代码。同样,这是针对核心类,也就是业务逻辑,您必须再次编写两个 GUI。也许您也可以标记 J2ME,如果您使用 .NET,您将无法做到这一点。

            【讨论】:

            • 不,您不会假设将移植 win 表单,这是一个非常糟糕的主意,MonoDroid 将绑定到 android UI 小部件,因此它看起来就像一个原生 android 应用程序,用户甚至不需要知道它正在 MonoDroid 上运行
            • Dalvik 的 CLI 字节码也是一个坏主意,mono 运行时和 VM 已经在 ARM 上运行,让它在 android 上运行也不成问题。并且看到 mono 是 JIT 编译的,而 Dalvik 是解释的。在单声道运行时运行会快得多。
            【解决方案13】:

            .NET for Android 对我来说似乎是一种真正的可能性。有消息称,微软将发布适用于 Android 的 Silverlight——永远不要低估微软将引导到苹果的优势。一款速度更快、功能更丰富、开发生命周期更快、令人印象深刻的硬件、Flash 和 Silverlight 作为标准安装的智能手机。

            Microsoft 对改进 Android 有着既得利益,同时,将为 Android 上的 Silverlight 开发应用程序也将在具有多点触控、GPS 等功能的 Windows Phone 7 操作系统上运行。

            【讨论】:

              猜你喜欢
              • 2011-11-06
              • 1970-01-01
              • 1970-01-01
              • 2010-09-14
              • 1970-01-01
              • 1970-01-01
              • 2021-01-09
              • 2019-04-28
              • 1970-01-01
              相关资源
              最近更新 更多