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

    欢迎拍砖。。。

  • 相关阅读:
    核函数矩阵为什么要是positive semidefinite的
    Autoencoders
    Statistics与Machine Learning有什么区别
    [zz]Using SyncTeX with LaTeX
    Metric Learning的一个疑惑
    [zz]Latex中texworks编辑器正向反向跳转搜索
    [zz]Python3.x新特性
    LyX 2.0.5中文排版
    function
    多行文字结尾显示省略号
  • 原文地址:https://www.cnblogs.com/jasonjiang/p/MonoForAndroid_Second.html
Copyright © 2020-2023  润新知