Mono for Android, C# for Android,Monodroid初尝鲜-[Hello, MonoAndroid]

    首先了解一下什么是Mono:Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了 ADO NET和ASP NET。能够使得开发人员在Linux用C#开发程序。)
    Mono现由Novell持有双重许可,Qt和这和Mozilla应用程序套件的情况相似。Mono的 C#编译器及其相关工具发布于GNU General Public License (GPL)之下,其运行时库发布于GNU Lesser General Public License (LGPL)之下,其类库发布于MIT License之下。这些均是开源协议因此Mono是一个开源软件。如果你打算向Mono贡献你的源码,则你须签署一个版权分派给Novell以允许它将这些代码在其它协议下再申请许可,从而允许Novell保留其双重许可的能力来持有Mono的商业协议.
    Mono虚拟机包含一个实时编译引擎,该引擎可用于如下处理器: x86, SPARC, PowerPC, ARM, S390 (32位模式和64位模式), x86-x64, IA64和64位模式的SPARC.该虚拟机可以将代码实时编译或者预先编译到原生代码。对于那些没有列出来的系统,则使用的是代码解释器。
    更多介绍。

    然后看到Mono for Android,MFA是一款于Android的Mono虚拟机,让开发者可以用C#开发Android应用程序。另外,Dalvik API已经被绑定至C#,你可以用C#方便地调用Android内置的很多类库。OpenTK类库也被移值过来,你可以在Windows, Linux与iPhone三个不同的平台上共享同样的OpenGL代码。值得注意得是,与Mono的开源不同的同Mono for Android的使用是需要购买授权的,最便宜的For Student也要99刀,除非你单单是在模拟器上开发。 


    本来今晚想尝试一下Mono for Android,用C#来写个Android小程序,可是这悲剧的校园网怎么也连不上monodevelop.com,先把工具下载下来,再记录下自己搭配环境的过程,以及对Mono for Android的个人的看法。
    首先记录下Mono for android SDK的安装过程,有两种方式可以安装MFA,第一种是直接在MonoDevelop上更新插件的形式,还有一种是以Visual Studio插件形式来安装,本来想在MonoDevelop上直接安装,避免弄得本来就那么臃肿的Visual Studio更大,结果发现校园网环境里连接不到Mono的更新服务器,只能通过Visual Studio插件的形式来试下开发的过程。

    安装很简单,只要下面简单的四步:
  •     1、Install the Java SDK
  •     2、Install the Android SDK
  •     3、Configure your simulator
  •     4、Install the Mono for Android Visual Studio 2010 Plugin
    Java SDK应该都会装有吧,没有的话点击下载安装。接着安装Android SDK,安装Android SDK是件让人头疼的事,特别是在校园网,通过installer来在线安装,速度是很慢的,幸亏之前有直接在同学电脑里拷了下载好的SDK过来,点击下载安装。
    接着就是配置Android模拟器,打开下载好的SDK文件夹里SDK Manager,New一个新的Visual Device.     

    最后安装MonoDroid For Visual Studio就可以,点击下载。注意在安装的时候记得要关闭所有打开的Visual Studio窗口。到这里基本的环境已经配置好,打开Visual Studio就可以看开有新建Mono For Android的选项了。


    接下来就是我的"Hello,MonoAndroid"演示了。
    打开Visual Studio新建项目,可以看到,我们选择一个"Mono for Android Application"。
   

    输入项目名,OK。

    这时看到自动生成的代码:
  
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace HelloMonoAndroid
{
[Activity(Label
= " HelloMonoAndroid " , MainLauncher = true , Icon = " @drawable/icon " )]
public class Activity1 : Activity
{
int count = 1 ; protected override void OnCreate(Bundle bundle)
{
base .OnCreate(bundle);
// Set our view from the "main" layout resource

SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it

Button button
= FindViewById < Button > (Resource.Id.MyButton);
button.Click
+= delegate { button.Text = string .Format( " {0} clicks! " , count ++ ); };
}
}
}

    是不是又熟悉又陌生呢。这就要了解Android一些相关的背景知识,虽然说我们是用C#来开发Android应用程序,但也要知道Android程序的构成以及程序框架,Android应用程序由4个模块构造而成:Activity,Intent,Content Provider,Service。其中Activity是最基本的模块,一个Activity通常是一个单独的屏幕,更详细的知识请查看相关书籍,该代码生成了一个按钮,通过点击按钮显示出累积的点击次数。
    我们再看看资源管理器:
    Mono for Android, C# for Android,Monodroid初尝鲜-[Hello, MonoAndroid]
    可以看到引用里有Mono.Android命名空间,这是Mono For Android得以实现的基础,还有几个文件夹,之前如果有接触过Android开发的人一定会感觉非常的熟悉,Drawable是放置图片资源,像背景图片,图标等,Layout是放置布局文件,Values里有个string.xml,可以定义字符串。
    这样就是一个基本可运行的Mono For Android程序了。


你可能感兴趣的:(android)