第一章中簡單瞭解了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的核心組件等一些知識。
歡迎拍磚。。。