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的核心组件等一些知识。

 

欢迎拍砖。。。

posted @ 2013-04-18 15:12 JasonNET 阅读(...) 评论(...) 编辑 收藏