什么是Mono for Android?


 

2010 年 4 月,Apple 对其软件开发工具包(SDK)授权进行改变,这给移动开发市场带来了恐惧、不确定性和疑惑。这一变化使许多开发人员对 iPhone和 iOS 开发产生了疑问。而与此同时,Mono 团队正在尝试为 Android 创建一个类似于 MonoTouch 的 Mono 产品。由于Apple SDK的变化,Mono团队宣布了 Mono  for Android 产品,并为其投入了大量资源。2011年春季Mono 团队正式发布Mono for Android。虽然 Apple 最终解决了其 SDK问题,但是Mono团队却在这 5个月的时间里投入大量的资源来开发 Mono  for  Android。其结果是,如果不是 Apple 在 2010 年几个月里将 MonoTouch 逼入绝境,Mono  for  Android也不会得到如此大的发展。

        Mono for Android 允许.NET 开发人员创建可在 Android 上运行的本机应用程序。这些应用程序看似在Dalvik 上运行的本机Java 应用程序。通过使用 Mono for Android,可将应用程序编译为可在 Android 设备上运行的可执行代码。其意义不应该被低估:如图 1-2 所示,.NET/Mono 开发人员通过使用 Mono for Android 可以针对 Android 进行开发。  

 

2013-04-22_125312.png

 

图 1-2      



      那么Mono for Android是如何完成这个过程的呢?它允许对Windows Froms应用程序进行转换或者再编译并将其部署到 Android 上吗?Mono for Android 在Android OS 的本机编程层之上提供了一个.NET 层。而针对 Dalvik 进行开发的开发人员则使用 Java 编写应用程序。虽然Mono for Android 没有提供跨 Windows Forms应用程序进行编译的机制,但它允许开发人员构建在Android 上运行的应用程序。

      总之,Mono for Android所公开的 API是.NET 4 Framework 核心功能、Silverlight API以及本机Dalvik  Java  VM 的组合。Mono  for  Android 在Android 的本机API与.NET 以及C#开发人员所熟悉的 API之间提供了一个桥梁(互操作)层。

1. Mono for Android 组件 

     Mono  for  Android 由一组针对移动平台进行优化的程序集、命名空间以及类组成。其代码是.NET  4、Silverlight和Windows  Phone 配置文件的组合,同时还包括允许开发人员充分利用Android 平台的代码。 

命名空间和类 

    Mono  for  Android 提供了一组丰富的命名空间和类来支持为 Android 设备构建应用程序。

Mono的含义:Mono是一个有Xamarin所发起的开源项目,主要用于创建.NET CLI、C#编译器以及开放的开发堆栈的Ecma标准的实现。

目前Mono的实现主要有三个目标:

(1) 开源的CLI

(2)C#编译器

(3)公开的开发堆栈

Mono遵循Ecma标准。Ecma国际于1961年成立,主要任务是为信息和通信技术的标准提供支持。

Mono for Android 的含义:Mono for Android 是一个运行时和开发堆栈,使.NET开发人员可以充分利用他们现有的Visual Studio 和C#知识为基于Android的设备开发应用程序。

(1)运行时:Mono for Android 运行时是一个在Android堆栈的Linux内核上运行的应用程序,负责解释Mono字节代码,并与Java VM进行通信,以便于调用本机Android API

(2)开发堆栈:Mono for Android 也是一个开发堆栈,他提供了创建和打包Android设备应用程序所需的工具。

为什么使用Mono for Android:

(1) 熟悉的开发环境

(2)熟悉的API和库结构,下表显示了mono  for  android 4.0.1中的部分程序集




下面列出了一些 Mono for Android所提供的最流行的程序集和功能: 

●  Mono.Android.dll:该程序集提供了与 Android  API 的 C#绑定。其中包括了支持Android.*命名空间的命名空间。 

●  System.dll:该程序集为 Mono for Android 提供了许多.NET Framework 功能。 

●  Mono.data.Sqlite.dll:该程序集是针对本机 SQLite 数据库的 ADO.NET 提供程序。 

●  Mono.Data.Tds.dll:该程序集提供了对 TDS 协议的支持,而该协议主要用于连接SQL Server。 

●  OpenTK.dll:该程序集提供了对 OpenGL的支持。 

●  System.Json.dll:该程序集提供了对使用JSON 的支持。 

●  System.ServiceModel.dll:该程序集提供了对 WCF的支持。 

●  System.Xml.dll:该程序集提供了对 XML的支持。 

●  System.Xml.Linq.dll:该程序集提供了从 LINQ 到 XML的支持。



在这些程序集中,Mono for Android 还提供了一些非常重要的命名空间。它们是: 

●  Android:Android.*命名空间提供了对资源、类以及应用程序权限的支持。 

●  Android.Bluetooth:该命名空间提供了对蓝牙的支持。 

●  Android.Database:该命名空间提供了对设备上SQLite 数据库的支持。 

●  Android.Graphics:该命名空间提供了对图形显示的支持。 

●  Android.Hardware:该命名空间提供了对Android 设备上硬件(比如照相机)的支持。  

●  Android.Location:该命名空间提供了对位置的必要支持。 

●  Android.Net:该命名空间提供了对网络的支持,其中包括对 VoIP(Voice over IP)和WiFi的支持。 

这些命名空间只是 Mono for Android 中可用命名空间中很小的一部分,它们的功能不言自明。此外,这些命名空间是特定于 Android 的。使用它们所编写的代码只能在基于Android 的设备上运行。

http://blog.winmono.com/445.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值