InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

MonoDroid架起.NET与Android之间的桥梁

作者 Abel Avram 译者 赵劼 发布于 2011年1月9日

领域
架构 & 设计,
语言 & 开发
主题
MonoDroid ,
MonoTouch ,
iOS ,
MonoDevelop ,
Android ,
操作系统 ,
.NET ,
IDE ,
Mono ,
编程 ,
移动

MonoDroid将完整的Mono虚拟机带到了Android上,让.NET开发人员可以为Google的移动操作系统编写应用程序。开发人员现在可以同时面向iOS,Android和Windows Phone 7编写应用程序了。

MonoDroid是一个类似MonoTouch的框架,让开发人员可以使用C#语言和Mono虚拟机为Android移动操作系统编写应用程序。MonoDroid API包含Silverlight所有的核心类库,但UI接口除外,取而代之的是一套针对原生Android Java API的绑定,用于访问设备相关的功能,例如各种感应器,摄像头,蓝牙等等。

在Windows上进行Andorid开发最好使用Visual Studio专业版(或更高)配合SDK和开发用插件,而SDK会引用Android SDK以便使用Java SDK。在Mac OS X上使用MonoDevelop(基于Mono的跨平台IDE)进行开发要等到Preview 10。此外也有计划提供基于MonoDevelop的Linux开发环境。

MonoDroid为.NET开发人员打开了Android世界。人们可以使用.NET和Mono同时开发Windows Phone 7,iPhone OS以及Android应用程序。不过事情也并非开发人员所希望那般直接:不同的平台有不同的设备及UI API,所以各个地方不可能同时运行相同的代码。开发人员需要清晰地分割业务逻辑以及UI逻辑,后者需要为不同的移动操作系统编写有针对性地代码。这是.NET开发人员尽可能打开市场的重要一步。

MonoDroid的路线图并没有提及正式版的发布时间,不过Miguel de Icaza提到他们“正在尽可能快地完成Andorid上的Mono”。MonoDroid 1.0将会使用Mono 2.8,并支持C# 3.0,.NET 3.5,垃圾回收,多线程以及其他标准特性,如LINQ。OpenGL也会通过OpenTK API得到支持,这是个OpenGL的面向对象封装类库。OpenTK同样包含在MonoTouch中,因此OpenGL代码可以在Android和iOS之间共享。

据Icaza称DeltaEngine使用了MonoDroid,这是一个跨平台的游戏开发引擎,可以在iPhone,Android,Windows Phone 7和Xbox 360上运行游戏。此外,在CES 2011上NVidia演示了一个游戏Soul Craft,它运行在LG Optimus 2X,这是一个基于NVidia的Tegra 2双核芯片的Android手机。这个游戏运行在MonoDroid上。

MonoDroid将会是个商业产品,定价还未发布。作为参考,MonoTouch的价格从99美元的学生版开始,到399美元的专业版,还有3999美元的5个企业授权套装。

译者 赵劼 网名为老赵,洋名Jeffrey Zhao,写有技术博客“老赵点滴”。关注前沿技术,并致力于开源社区与微软平台的组合优化。

程序员的黄金年代 发表人 Zhao Jeffrey 发表于
在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞? 发表人 cao wensheng 发表于
Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞? 发表人 Zhao Jeffrey 发表于
Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞? 发表人 unco tup 发表于
Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞? 发表人 Zhao Jeffrey 发表于
很让人向往 发表人 H M 发表于
  1. 返回顶部

    程序员的黄金年代

    发表人 Zhao Jeffrey

    前提是:要有创意。

  2. 返回顶部

    在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞?

    发表人 cao wensheng

    关键是:要有性能。

  3. 返回顶部

    Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞?

    发表人 Zhao Jeffrey

    MonoDroid和MonoTouch都是编译成原生代码的,并不是Java或CLR那样带个虚拟机。

  4. 返回顶部

    Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞?

    发表人 unco tup

    分析下来, 并没有编译成原生代码. 可能执行的时候编译了, 但是新建一个工程编译的apk包, 绝对不是原生代码, 只是一个原生代码结构, 实际的调用还是依赖一个虚拟机或者运行时的东西, invoke 实际的.NET代码.

  5. 返回顶部

    Re: 在嵌入式设备的虚拟机上开发是不是带着镣铐跳舞?

    发表人 Zhao Jeffrey

    那是Preview时故意不加上的,我在Miguel de Icaza的博客评论里问他这个问题,回复是:

    I should have mentioned this on the announcement, I forgot.

    This is one of the three features missing before we give the go-live license. Right now it uses a "shared runtime" which contains the whole Mono. We do not want to go down this path, because it would mean that every app would take a dependency on a shared runtime, and if we introduced a bug in this shared runtime, we could potentially break thousands of applications in one step.

    So we are going to go instead with the MonoTouch model, where a linker embeds just as much Mono as you need. The linker is not ready (it is a copy of the MOnoTouch linker, but it needs to have some custom steps for Monodroid tasks), but expect it to be done in the next couple of weeks.


    所谓“MonoTouch model”就是不带一个虚拟机,编译成原生代码(及必要的类库),就像MonoTouch那样做。

  6. 返回顶部

    很让人向往

    发表人 H M

    程序员要两手都要抓。说到底这其实就是创意产业!可惜很多时候一看到都是模仿尤其是浮躁的心态 希望能抓住这个机会!