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 进行开发。


图 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 的设备上运行。


更多相关文章

  1. NDK r21b 编译FFmpeg 、x264 提供Android集成
  2. 让Android应用程序支持安装到SD卡(APP2SD)
  3. android droiddraw 这么简单的功能都实现不了么?JAVA真不是人写的
  4. 2010最佳Android和iPhone/iPad游戏应用出炉
  5. Android-UI 开源控件
  6. Android开发者指南(12) —— Android(安卓)Supported Media For.
  7. Oprofile分析(android oprofile性能分析)
  8. Poco库使用 CMake 编译,支持 NetSSL
  9. 关于Android(安卓)NDK如何成功调用stl的使用分析

随机推荐

  1. android 弹出对话框
  2. Android的前世今生
  3. Android(安卓)核心分析 之六 -----IPC框
  4. android 笔记:判断手机是否显示虚拟按键
  5. android 教程
  6. android实现渐变效果
  7. Android记事本的开发
  8. Android NetworkLocationProvider and Ge
  9. Android手机开发:图片的放大和缩小显示Ima
  10. android学习笔记之--android中各种java包