首先瞭解一下什麼是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虛擬機器包含一個Just-In-Time 編譯引擎,該引擎可用於如下處理器: x86, SPARC, PowerPC, ARM, S390 (32位元模式和64位元模式), x86-x64, IA64和64位元模式的SPARC.該虛擬機器可以將代碼Just-In-Time 編譯或者預先編譯到原生代碼。對於那些沒有列出來的系統,則使用的是代碼解譯器。
更多介紹。
然後看到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.Android命名空間,這是Mono For Android得以實現的基礎,還有幾個檔案夾,之前如果有接觸過Android開發的人一定會感覺非常的熟悉,Drawable是放置圖片資源,像背景圖片,表徵圖等,Layout是放置布局檔案,Values裡有個string.xml,可以定義字串。
這樣就是一個基本可啟動並執行Mono For Android程式了。