什么是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 进行开发。
那么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 的设备上运行。
更多相关文章
- NDK r21b 编译FFmpeg 、x264 提供Android集成
- 让Android应用程序支持安装到SD卡(APP2SD)
- android droiddraw 这么简单的功能都实现不了么?JAVA真不是人写的
- 2010最佳Android和iPhone/iPad游戏应用出炉
- Android-UI 开源控件
- Android开发者指南(12) —— Android(安卓)Supported Media For.
- Oprofile分析(android oprofile性能分析)
- Poco库使用 CMake 编译,支持 NetSSL
- 关于Android(安卓)NDK如何成功调用stl的使用分析