轉(zhuǎn)帖|使用教程|編輯:郝浩|2015-03-30 13:55:13.000|閱讀 1642 次
概述:Visual Studio 跨平臺(tái)開發(fā)實(shí)戰(zhàn)系列教程,幫助你使用Xamarin進(jìn)行跨平臺(tái)移動(dòng)開發(fā)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
應(yīng)用程序發(fā)展的腳步, 從來(lái)沒有停過. 從早期的Windows 應(yīng)用程序, 到網(wǎng)絡(luò)時(shí)代的web 應(yīng)用程序, 再到近幾年相當(dāng)盛行的行動(dòng)裝置應(yīng)用程序(Mobile Application), 身為C#的開發(fā)人員與Visual Studio的使用者. Windows Phone與Windows Store App的開發(fā)是否已滿足不了你了呢? 如果能夠讓你使用C#及Visual Studio 來(lái)開發(fā)iOS及Android的app. 是否能再度喚醒你的開發(fā)魂? Xamain 正是為了這樣的需求而誕生的framework.
Xamarin 是由早期的演變而來(lái), 原本是在Linux上執(zhí)行C#程序的一個(gè)開放原始碼專案. 后來(lái)陸續(xù)發(fā)表支持iOS的Mono Touch framework以及Mono For Android Framework. 因此它在市場(chǎng)上并不是一個(gè)新的產(chǎn)品. 2011年, 原本在Novell的Mono專案團(tuán)隊(duì)獨(dú)立成立一家公司, 正式將名稱改為Xamarin, 此為Xamarin的由來(lái). Xamarin 具有以下特點(diǎn):
無(wú)論是在Windows或是MAC上安裝Xamarin都相當(dāng)簡(jiǎn)單, 只要在上填入名稱及Email賬號(hào), 便可以進(jìn)行下載. 而只要依照安裝精靈點(diǎn)選下一步, 就可以將Android SDK等相關(guān)元件安裝好.
Windows 版安裝畫面:
MAC版安裝畫面:
Xamarin 是一個(gè)商業(yè)的Framework, 但您可以完整試用30天, 或是使用免費(fèi)版本. 但免費(fèi)版本限制開發(fā)人員編譯后的IL code大小不能超過32K, 且無(wú)法使用Visual Studio進(jìn)行開發(fā)(只能使用Xamarin提供的Xamarin Studio).
安裝好Xamarin之后, 需要注冊(cè)一個(gè)Xamarin賬號(hào)進(jìn)行啟動(dòng).
1. 開啟Visual Studio, 點(diǎn)選工具=>Xamarin Account
2. 若先前已經(jīng)注冊(cè)過Xamarin賬號(hào)(請(qǐng)注意, Xamarin賬號(hào)與先前下載所填的Email不同), 請(qǐng)直接輸入賬號(hào)密碼登入,若您是第一次使用, 請(qǐng)申請(qǐng)新的Xamarin賬號(hào).
登入后便可以開始開發(fā)Android及iOS應(yīng)用程序!!
使用Xamarin 開發(fā)Android應(yīng)用程序可以說(shuō)是相當(dāng)?shù)姆奖? 不僅支持在Visual Studio中使用拖曳的方式設(shè)計(jì)使用者界面, 還整合了如AVD及SDK Manager等工具. 廢話不多說(shuō), 開始我們?cè)赩isual Studio上的第1個(gè)Android程序吧~
1. 在Visual Studio中新增專案, 在專案范本中, 請(qǐng)展開C#節(jié)點(diǎn), 你會(huì)發(fā)現(xiàn)專案范本會(huì)多出Android及iOS類型的專案范本, 我們?cè)谶@個(gè)范例中選擇”Android Application”, 并在名稱中輸入"HelloDroid” (當(dāng)然您可以改成任何您想要的名稱)
2. 專案建立后, 您會(huì)發(fā)現(xiàn)工具列中多出幾個(gè)項(xiàng)目:
說(shuō)明如下(由左至右):
3. 預(yù)設(shè)的專案中會(huì)內(nèi)建一個(gè)Button控制項(xiàng)并寫著"Hello World, Click Me!”, 開啟專案下的Resources->Layout->Main.axml可以進(jìn)行頁(yè)面的設(shè)計(jì)。
4. 而此范例的主要程序代碼則是Activity1.cs, 直接通過下圖的注解來(lái)說(shuō)明:
看到這樣的程序代碼, 我想大家應(yīng)該都不會(huì)感到陌生. 筆者有一些學(xué)員跟我說(shuō), 感覺跟開發(fā)Windows Form應(yīng)用程序很像~~
Activity1.cs 相當(dāng)于MVC分層的Controller. 通過SetContentView方法, 告訴系統(tǒng)要載入哪一個(gè)頁(yè)面. 接著通過FindViewById方法取得畫面上按鈕的物件實(shí)體. 接著便可以針對(duì)按鈕的屬性或方法撰寫相關(guān)的程序代碼, 或是處理按鈕的事件. 如上圖所示, 預(yù)設(shè)的范例是使用匿名方法, 我們將它注解后, 改用Lambda Expression來(lái)撰寫.
5. 接著按下F5, 便可以開始進(jìn)行除錯(cuò), 若沒有預(yù)先開啟Android模擬器, 則Running devices列表會(huì)是空的, 這時(shí)可以點(diǎn)擊下方的"Start emulator image”鏈接來(lái)啟動(dòng)模擬器.
6. 執(zhí)行結(jié)果如下:
是不是相當(dāng)簡(jiǎn)單呢? 接下來(lái)我們來(lái)開始iOS的Hello World.
與開發(fā)Android不同, 目前Xamarin尚未支持在Visual Studio中設(shè)計(jì)應(yīng)用程序頁(yè)面, 但官方表示目前已在研發(fā)當(dāng)中, 并會(huì)在不久之后的版本提供此功能. 因此目前iOS專案的UI設(shè)計(jì)必須通過MAC的Interface Builder (XCode的一部份), 或是直接在程序中宣告控制項(xiàng)的位置及大小, Visual Studio中的HelloWorld Application便是使用此方法.
1. 在Visual Studio 中新增專案, 在專案范本中選擇iOS下的iPhone, 并在右邊的范本中選擇HelloWorld Application, 接著指定專案名稱(此處為HelloIOS)
2. 第一次開啟iOS專案時(shí), Xamarin會(huì)提示使用者只有在商業(yè)版或更高的版本才能在Visual Studio中開發(fā)iOS專案.
接著Xamarin便會(huì)自動(dòng)啟用試用版本的授權(quán), 啟動(dòng)完畢后, 會(huì)提示使用者Visual Studio將會(huì)重新啟動(dòng).
若您MAC上的Xamarin授權(quán)尚未啟動(dòng), 將會(huì)看到系統(tǒng)提示, 說(shuō)明Build Server(也就是MAC)尚未啟用授權(quán). 此時(shí)按下Activate按鈕可能沒有作用, 請(qǐng)依照下面的步驟, 在MAC上啟用Xamarin授權(quán).
3. 由于Xamarin在MAC上預(yù)設(shè)是以免費(fèi)版本開啟. 因此可以通過以下方法強(qiáng)制啟用Xamarin試用授權(quán). 首先在MAC的Finder開啟Xamarin Studio
新增一個(gè)專案, 選擇iPhone =>Single View Application. 專案建立后, 點(diǎn)擊功能表中的專案=>Profile - Mono
此時(shí)會(huì)看到授權(quán)啟用的畫面. 當(dāng)完成啟用后, 我們就可以回到Visual Studio來(lái)指定我們的Build Host.
4. 在Visual Studio的工具=>選項(xiàng)中, 可以看到多出了一個(gè)Xamarin節(jié)點(diǎn), 點(diǎn)擊Xamarin下的iOS Settings, 在右邊可以指定Mac Build Host.您可以直接輸入MAC的電腦名稱或IP位址, 或按下Configure 進(jìn)行設(shè)定.
在設(shè)定視窗中, Xamarin會(huì)搜尋同一網(wǎng)段中已安裝并啟用Xamarin的MAC機(jī)器. 若狀態(tài)顯示為"Ready", 請(qǐng)按下Connect進(jìn)行連線.
若狀態(tài)不是"Ready”, 可以按下Diagnose按鈕進(jìn)行連線診斷. 如下圖所示, 若某一個(gè)或多個(gè)項(xiàng)目無(wú)法通過連線診斷, 則會(huì)出現(xiàn)failed, 您可以展開failed的項(xiàng)目了解失敗的原因.
5. 請(qǐng)?jiān)诮M態(tài)管理中, 將平臺(tái)設(shè)定為iPhoneSimulator,預(yù)設(shè)為部署至實(shí)體機(jī)器, 但這需要向Apple申請(qǐng)付費(fèi)的開發(fā)者賬號(hào).
接著在工具列中, 可以選擇iOS 模擬器的版本, 右邊綠色打勾的符號(hào)表示已與MAC Build Host的連線正常, 若是反灰的狀態(tài), 請(qǐng)按一下右邊的圖示重新與指定的Build Host連線.
5. 開啟專案中的MyViewConrtoller.cs文檔. 在此范例中, 同樣是在畫面中間放置一個(gè)Button控制項(xiàng)(在iOS中的類別名稱為UIButton)并顯示點(diǎn)擊的次數(shù). 由于我們是在程序中產(chǎn)生控制項(xiàng), 因此有部份程序代碼是在聲明物件的布局屬性, 請(qǐng)參考下圖中程序代碼的注解:
6. 接下來(lái)才是范例程序的重點(diǎn), 若您是在XCode中設(shè)計(jì)好UI, 則可以取代上面的程序.
如同先前Android的HelloWorld, 在iOS中, 按鈕的點(diǎn)擊事件不叫Click, 而是TouchUpInside, 因此我們通過此事件的處理, 在使用者點(diǎn)擊了按鈕后, 改邊按鈕的顯示文字(使用UIButton的SetTitle方法). 最后將Button控制項(xiàng)通過View.AddSubview方法加入到畫面當(dāng)中.
執(zhí)行結(jié)果如下:
作為一個(gè)跨平臺(tái)的解決方案, 使用Visual Studio 搭配Xamarin開發(fā)行動(dòng)裝置應(yīng)用程序具有以下特色:
程序代碼共享:在設(shè)計(jì)時(shí), 將與平臺(tái)無(wú)關(guān)的商業(yè)邏輯、服務(wù)存取、資料存取以及資料層從界面抽離出來(lái), 如下圖所示:
底下說(shuō)明如何才能達(dá)成上述的專案整合以及程序代碼共用, 首先來(lái)看看架構(gòu)示意圖:
從上述的示意圖, 我們可以看到, 左半邊是可以抽離出來(lái)的共用程序代碼, 這部份將獨(dú)立成一個(gè)專案, 并只加入常用的組件(如Base Class Library), 若有部份程序代碼使用到與平臺(tái)相關(guān)的組件或技術(shù), 可以在程序代碼中加入的指示詞, 供各平臺(tái)直接使用, 不需要進(jìn)行修改.
而在各平臺(tái)的專案中, 可以通過檔案連接的方式, 將共用程序代碼的部份連接到各平臺(tái)專案. 但由于目前Visual Studio并沒有提供可以同時(shí)設(shè)定多個(gè)檔案或整個(gè)資料夾連接的方式, 因此若每個(gè)檔案都要手動(dòng)連接, 其實(shí)是較不實(shí)際的. 而且日后共用程序代碼專案若有檔案的異動(dòng), 如新增或刪除. 各平臺(tái)專案并不會(huì)同步更新. 此時(shí)我們可以通過1個(gè)叫做”Project Linker 2012”的擴(kuò)充功能進(jìn)行協(xié)助(它也有對(duì)應(yīng)Visual Studio 2010的版本).
安裝好Project Linker后, 我們便可以在各平臺(tái)專案點(diǎn)擊滑鼠右鍵=>Add project link
接著選擇來(lái)源專案, 之后便會(huì)為來(lái)源專案的每個(gè)資料夾及檔案進(jìn)行連結(jié).
連結(jié)的檔案在Visual Studio中都會(huì)有個(gè)藍(lán)色箭頭的圖示
通過上述的設(shè)定后, 便可以在各平臺(tái)專案共用程序代碼. 在開發(fā)平臺(tái)專案時(shí), 只要對(duì)使用者界面以及針對(duì)控制項(xiàng)的操作撰寫程序即可. 對(duì)于商業(yè)邏輯, 資料存取的部份則可以在各平臺(tái)共用, 這是使用原生的開發(fā)方式(Objective-C, Java)所無(wú)法達(dá)到的. 實(shí)際執(zhí)行結(jié)果如下:
結(jié)語(yǔ)
本文說(shuō)明了Xamarin 的特色以及開發(fā)架構(gòu). 希望通過簡(jiǎn)單的范例讓第一次接觸的開發(fā)人員能夠立即著手進(jìn)行安裝及開發(fā). 在接下來(lái)的系列文章中, 將會(huì)介紹如何使用Xamarin及Visual Studio 使用iOS以及Android的基本控制項(xiàng)及多頁(yè)面的串接.
本文轉(zhuǎn)載自
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:CSDN博客