應用程序發展的腳步, 歷來沒有停過. 從早期的Windows 應用程序, 到網絡時代的web 應用程序, 再到近幾年至關盛行的行動裝置應用程序(Mobile Application), 身爲C#的開發人員與Visual Studio的使用者. Windows Phone與Windows Store App的開發是否已知足不了你了呢? 若是能夠讓你使用C#及Visual Studio 來開發iOS及Android的app. 是否能再度喚醒你的開發魂? Xamain 正是爲了這樣的需求而誕生的framework.web
Xamarin 是由早期的Mono專案演 變而來, 本來是在Linux上執行C#程序的一個開放原始碼專案. 後來陸續發表支持iOS的Mono Touch framework以及Mono For Android Framework. 所以它在市場上並非一個新的產品. 2011年, 本來在Novell的Mono專案團隊獨立成立一家公司, 正式將名稱改成Xamarin, 此爲Xamarin的由來. Xamarin 具備如下特色:網絡
不管是在Windows或是MAC上安裝Xamarin都至關簡單, 只要在http://xamarin.com/download上填入名稱及Email帳號, 即可以進行下載. 而只要依照安裝精靈點選下一步, 就能夠將Android SDK等相關元件安裝好.架構
Windows 版安裝畫面:app
MAC版安裝畫面:ide
Xamarin 是一個商業的Framework, 但您能夠完整試用30天, 或是使用免費版本. 但免費版本限制開發人員編譯後的IL code大小不能超過32K, 且沒法使用Visual Studio進行開發(只能使用Xamarin提供的Xamarin Studio).工具
安裝好Xamarin以後, 須要註冊一個Xamarin帳號進行啓動.佈局
1. 開啓Visual Studio, 點選工具=>Xamarin Account開發工具
2. 若先前已經註冊過Xamarin帳號(請注意, Xamarin帳號與先前下載所填的Email不一樣), 請直接輸入帳號密碼登入,若您是第一次使用, 請申請新的Xamarin帳號.測試
登入後即可以開始開發Android及iOS應用程序!! ui
使用Xamarin 開發Android應用程序能夠說是至關的方便, 不只支持在Visual Studio中使用拖曳的方式設計使用者界面, 還整合瞭如AVD及SDK Manager等工具. 廢話很少說, 開始咱們在Visual Studio上的第1個Android程序吧~
1. 在Visual Studio中新增專案, 在專案範本中, 請展開C#節點, 你會發現專案範本會多出Android及iOS類型的專案範本, 咱們在這個範例中選擇」Android Application」, 並在名稱中輸入"HelloDroid」 (固然您能夠改爲任何您想要的名稱)
2. 專案創建後, 您會發現工具列中多出幾個項目:
說明以下(由左至右):
3. 預設的專案中會內建一個Button控制項並寫着"Hello World, Click Me!」, 開啓專案下的Resources->Layout->Main.axml能夠進行頁面的設計。
4. 而此範例的主要程序代碼則是Activity1.cs, 直接經過下圖的註解來講明:
看到這樣的程序代碼, 我想你們應該都不會感到陌生. 筆者有一些學員跟我說, 感受跟開發Windows Form應用程序很像~~
Activity1.cs 至關於MVC分層的Controller. 經過SetContentView方法, 告訴系統要載入哪個頁面. 接着經過FindViewById方法取得畫面上按鈕的物件實體. 接着即可以針對按鈕的屬性或方法撰寫相關的程序代碼, 或是處理按鈕的事件. 如上圖所示, 預設的範例是使用匿名方法, 咱們將它註解後, 改用Lambda Expression來撰寫.
5. 接着按下F5, 即可以開始進行除錯, 若沒有預先開啓Android模擬器, 則Running devices列表會是空的, 這時能夠點擊下方的"Start emulator image」連接來啓動模擬器.
6. 執行結果以下:
是否是至關簡單呢? 接下來咱們來開始iOS的Hello World.
與開發Android不一樣, 目前Xamarin還沒有支持在Visual Studio中設計應用程序頁面, 但官方表示目前已在研發當中, 並會在不久以後的版本提供此功能. 所以目前iOS專案的UI設計必須經過MAC的Interface Builder (XCode的一部份), 或是直接在程序中宣告控制項的位置及大小, Visual Studio中的HelloWorld Application即是使用此方法.
1. 在Visual Studio 中新增專案, 在專案範本中選擇iOS下的iPhone, 並在右邊的範本中選擇HelloWorld Application, 接着指定專案名稱(此處爲HelloIOS)
2. 第一次開啓iOS專案時, Xamarin會提示使用者只有在商業版或更高的版本才能在Visual Studio中開發iOS專案.
接着Xamarin便會自動啓用試用版本的受權, 啓動完畢後, 會提示使用者Visual Studio將會從新啓動.
若您MAC上的Xamarin受權還沒有啓動, 將會看到系統提示, 說明Build Server(也就是MAC)還沒有啓用受權. 此時按下Activate按鈕可能沒有做用, 請依照下面的步驟, 在MAC上啓用Xamarin受權.
3. 因爲Xamarin在MAC上預設是以避免費版本開啓. 所以能夠經過如下方法強制啓用Xamarin試用受權. 首先在MAC的Finder開啓Xamarin Studio
新增一個專案, 選擇iPhone =>Single View Application. 專案創建後, 點擊功能表中的專案=>Profile - Mono
此時會看到受權啓用的畫面. 當完成啓用後, 咱們就能夠回到Visual Studio來指定咱們的Build Host.
4. 在Visual Studio的工具=>選項中, 能夠看到多出了一個Xamarin節點, 點擊Xamarin下的iOS Settings, 在右邊能夠指定Mac Build Host.您能夠直接輸入MAC的電腦名稱或IP位址, 或按下Configure 進行設定.
在設定視窗中, Xamarin會搜尋同一網段中已安裝並啓用Xamarin的MAC機器. 若狀態顯示爲"Ready", 請按下Connect進行連線.
若狀態不是"Ready」, 能夠按下Diagnose按鈕進行連線診斷. 以下圖所示, 若某一個或多個項目沒法經過連線診斷, 則會出現failed, 您能夠展開failed的項目瞭解失敗的緣由.
5. 請在組態管理中, 將平臺設定爲iPhoneSimulator,預設爲部署至實體機器, 但這須要向Apple申請付費的開發者帳號.
接着在工具列中, 能夠選擇iOS 模擬器的版本, 右邊綠色打勾的符號表示已與MAC Build Host的連線正常, 如果反灰的狀態, 請按一下右邊的圖示從新與指定的Build Host連線.
5. 開啓專案中的MyViewConrtoller.cs文檔. 在此範例中, 一樣是在畫面中間放置一個Button控制項(在iOS中的類別名稱爲UIButton)並顯示點擊的次數. 因爲咱們是在程序中產生控制項, 所以有部份程序代碼是在聲明物件的佈局屬性, 請參考下圖中程序代碼的註解:
6. 接下來纔是範例程序的重點, 若您是在XCode中設計好UI, 則能夠取代上面的程序.
如同先前Android的HelloWorld, 在iOS中, 按鈕的點擊事件不叫Click, 而是TouchUpInside, 所以咱們經過此事件的處理, 在使用者點擊了按鈕後, 改邊按鈕的顯示文字(使用UIButton的SetTitle方法). 最後將Button控制項經過View.AddSubview方法加入到畫面當中.
執行結果以下:
做爲一個跨平臺的解決方案, 使用Visual Studio 搭配Xamarin開發行動裝置應用程序具備如下特點:
程序代碼共享:在設計時, 將與平臺無關的商業邏輯、服務存取、資料存取以及資料層從界面抽離出來, 以下圖所示:
底下說明如何才能達成上述的專案整合以及程序代碼共用, 首先來看看架構示意圖:
從上述的示意圖, 咱們能夠看到, 左半邊是能夠抽離出來的共用程序代碼, 這部份將獨立成一個專案, 並只加入經常使用的組件(如Base Class Library), 如有部份程序代碼使用到與平臺相關的組件或技術, 能夠在程序代碼中加入條件式編譯的指示詞, 供各平臺直接使用, 不須要進行修改.
而在各平臺的專案中, 能夠經過檔案鏈接的方式, 將共用程序代碼的部份鏈接到各平臺專案. 但因爲目前Visual Studio並無提供能夠同時設定多個檔案或整個資料夾鏈接的方式, 所以若每一個檔案都要手動鏈接, 實際上是較不實際的. 並且往後共用程序代碼專案如有檔案的異動, 如新增或刪除. 各平臺專案並不會同步更新. 此時咱們能夠經過1個叫作」Project Linker 2012」的擴充功能進行協助(它也有對應Visual Studio 2010的版本).
安裝好Project Linker後, 咱們即可以在各平臺專案點擊滑鼠右鍵=>Add project link
接着選擇來源專案, 以後便會爲來源專案的每一個資料夾及檔案進行連結.
連結的檔案在Visual Studio中都會有個藍色箭頭的圖示
經過上述的設定後, 即可以在各平臺專案共用程序代碼. 在開發平臺專案時, 只要對使用者界面以及針對控制項的操做撰寫程序便可. 對於商業邏輯, 資料存取的部份則能夠在各平臺共用, 這是使用原生的開發方式(Objective-C, Java)所沒法達到的. 實際執行結果以下:
結語
本文說明了Xamarin 的特點以及開發架構. 但願經過簡單的範例讓第一次接觸的開發人員可以當即着手進行安裝及開發. 在接下來的系列文章中, 將會介紹如何使用Xamarin及Visual Studio 使用iOS以及Android的基本控制項及多頁面的串接.