MonoForAndroid 第二章 Mono For Android 简介
第一章中简单了解了Mono以及移动设备的相关知识,回顾下上一章中主要介绍的内容:
对.NET Framework 和 Mono进行了一下简单的比较
移动开发、Android以及跨平台工具应该注意的事项和一些简短的介绍
这一章 我们对Mono For Android做一个简单的介绍,本章的主要内容有:
1. Mono 和 Mono for Android 简介
2. 配置开发环境
3. 针对Visual Studio的Mono for Android 工具
4. 调试和部署
----------------------------------------------------------------------我是华丽的分割线----------------------------------------------------------------------------------------------
一、开始开发前的准备工作
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.Android.dll | 包含了绑定到Android API 的C# |
Mono.CompileServices.SymbolWriter.dll | 主要针对编译器编写者 |
Mono.Data.Sqlite.dll | 针对SQLite的ADO.NET提供程序 |
Mono.Data.Tds.dll | 对TDS协议的支持,主要用于为System.Data内的System.Data.SqlClient提供支持 |
Mono.Security.dll | 加密API |
mscorlib.dll | Silverlight |
OpenTK.dll | OpenGL/OpenAL面向对象API,可对其进行扩展以提供Android设备支持 |
System.dll |
Silverlight,再加上来自下列命名空间中的类型: System.Collections.Specialized System。ComponentModel System.ComponentModel.Design System.Diagnostics System.IO.Compression System.Net System.Net.Cache System.Net.Mail System.Net.Mime System.Net.NetworkInformation System.Net.Security System.Net.Sockets System.Security.Authentication System.Security.Cryptography System.Timers |
System.Core.dll | Silverlight |
System.Data.dll | 删除了部分功能的.NET 3.5 |
System.Json.dll | Silverlight |
System.Runtime.Serialization.dll | Silverlight |
System.ServiceModel.dll | Silverlight Alpha 中所呈现的WCF堆栈 |
System.ServiceModel.Web.dll |
Silverlight,再加上来自于下列命名空间: System System.ServiceModel.Channels System.ServiceModel.Description System.ServiceModel.Web Alpha 品质 |
System.Transactions.dll | |
System.Web.Services.dll | |
System.Xml.dll | 。NET 3.5 |
System.Xml.Linq.dll | 。NET 3.5 |
在使用Mono for Android 时需要权衡的事项
1 等待更新,也就是说如果Android SDK中增加了新的功能或增强了性能,必须等待Mono for Android 的下一个相应的版本
2 潜在的性能影响
3 内存管理:许多由Mono for Android所分配的对象都是对这些对象所表示的Java对象的包装,每当分配一个包装了相应的java类型的类型时,都会创建两个对象:
(1) 位于Java堆中的Java对象
(2)位于Mono堆中的Mono“代理”对象
Mono for Android进行了相应的处理,以确保当某一对象引用另一对象时,这两个对象都保持活动状态。
二、利用 Mono for Android 进行开发
装好针对VS的插件后,在新建项目的时候会看到 Android 的一个选项,但是一般VS是加载不了的 ,破解程序也破解不了VS中的插件,很蛋疼的一个事情,哎。。。
如图:
所以我直接用的Xamarin Studio来创建:
从图中就能看到默认生成的代码,我就不多解释了,因为都能理解。。。
默认生成的是一个按钮点击的功能,并且累加点击次数。如果环境什么的都配置好了,直接点击Debug就可以看到效果了。
如图:
简单介绍下按钮放置的位置,按钮被放置在Resources文件夹下的layout文件夹下的Main.axml文件中。
日志记录:
通过引用Android.Util可以使用Android的日志记录功能。
Log.Info ("","");记录信息
Log.Error ("","");记录错误
Log.Warn ("", "");记录警告
测试:
最好的测试自己开发的应用程序的方法莫过于构造单元测试了 ,使用NUnit。
部署:
将HelloAndroid应用程序部署到移动设备中非常的简单,分为三个步骤:
(1)通过USB连接手机
(2)将手机设置为开发模式
(3)点击Debug按钮,当发现你的设备后,选择它,安装过程会通过USB在所选的设备上运行。
这一章到这里就结束了,在下一章中我们开始学习Android的核心组件等一些知识。
欢迎拍砖。。。