什么是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 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 的设备上运行。


你可能感兴趣的:(android,软件开发,iPhone,应用程序,工具包)