當前位置:
首頁 > 科技 > 微軟Xamarin:採用C#的安卓開發環境搭建

微軟Xamarin:採用C#的安卓開發環境搭建

感謝IT之家網友 DotNet碼農的投稿

1、Xamarin的優勢

對於一家希望擁有移動終端用戶的公司來說,不得不同時考慮兩個(或三個,雖然比較少就是了)平台的移動應用程序開發。然而令這些公司頭疼的是,安卓開發多採用Java、iOS開發多採用Swift(或OC)、Win10UWP開發多採用C#,這意味著這些公司不得不僱傭好幾批工程師,或者讓同一批工程師同時維護多個互不兼容的項目(當然,這些人的工資就得高一點)。

解決這一問題目前唯一成熟的方案是Xamarin,這是微軟旗下的、致力於使.NET框架兼容其它移動端平台上的項目。我在以前的文章里提到過,這個所謂「框架」的東西,能抹平不同系統平台上API的差異,這意味著開發人員將能通過Xamarin在三個平台之間共享核心代碼。

舉個例子:假定某論壇需要多平台移動客戶端,那麼該平台需要維護三個獨立的項目,每一個項目都有一套獨立的業務代碼;每次論壇API升級,三個項目必須分別被更新,否則App就會不可用。假如這個論壇採用Xamarin開發它的客戶端,工程師們就能在三個平台之間共享超過95%的業務代碼;無論是開發時,還是API更新時,只需要將這個共享的業務代碼維護一次,就能同時應用在三個項目上。

2、Xamarin開發環境的搭建(Android

搭建這樣一個採用C#的開發環境並不複雜:它依然可以集成至Visual Studio。下面以Visual Studio 2017作為例子,來講解該如何安裝Xamarin。

找到一個名為VSInstaller的應用程序(不出意外的話,已經安裝過VS2017的朋友可以在開始菜單里找到它),啟動它。你已經安裝的VS產品會被呈現在第一位。單擊產品標識下面的「修改」按鈕,修改程序功能。勾上這一項:

並在右邊的詳細目錄里,去掉Android SDK和Android NDK(因為它們在中國大陸是無法訪問的,這會導致VS功能修改失敗):

微軟Xamarin:採用C#的安卓開發環境搭建

單擊修改按鈕,讓它完成修改過程。

由於剛剛去掉了Android SDK的安裝,我們的Xamarin雖然可以編寫代碼,但是卻不能編譯和調試。現在我們來手動獲取Android SDK。

登錄Android開發工具中國鏡像網站http://www.androiddevtools.cn/,頁面下方會有鏡像站的安卓開發工具下載地址:

微軟Xamarin:採用C#的安卓開發環境搭建

下載那個zip版本的Windows平台下的Android SDK,校驗完畢後解壓至自己平時存放開發工具集的目錄。下面會有這樣一些文件(可能會少幾個目錄,但是在整體配置完畢之後就會有的):

微軟Xamarin:採用C#的安卓開發環境搭建

啟動SDK Manager,我們來配置鏡像伺服器。由於Android SDK的伺服器在中國大陸無法訪問,所以中國很多企業、研究機構和教育機構都建立了Android SDK的鏡像站。下面是目前可用的鏡像站列表(來自Android開發工具中國鏡像網站):

微軟Xamarin:採用C#的安卓開發環境搭建

我們在SDK Manager的菜單欄,選擇Tools->Options,將任一有效地址填入Proxy Settings里,並勾上Others下的第一項,如圖:

微軟Xamarin:採用C#的安卓開發環境搭建

填好之後,Close關掉這個窗口,在主界面菜單欄選擇Packages->Reload,這樣就能獲得工具包列表,並且可以正確執行安裝了。安卓各平台對應的SDK Platform根據需要安裝,但是這幾項是必須安裝的:

等待安裝完成,SDK的配置就完畢了。啟動Visual Studio,在菜單欄選擇工具->選項,在左側找到Xamarin->Android設置,將Android SDK位置設置為你存放SDK的路徑,直至路徑左側顯示綠色對勾:

微軟Xamarin:採用C#的安卓開發環境搭建

這一步完成後,Visual Studio應該就能正確編譯Android應用了(如果您擁有合適版本的安卓手機,並已經打開了USB調試,那麼請直接跳到4,不用看下一節)。但是在測試環境被搭建好之前,我們還無法對其的工作進行測試。

3、測試用虛擬機推薦

本節針對沒有可用的安卓測試機的讀者。

虛擬機是測試的關鍵。目前常用的開發用虛擬機有:谷歌安卓模擬器(官方),VS Emulator for Android(微軟)。但是對於一般的計算機,我並不推薦上述兩種:谷歌安卓模擬器運行效率向當低,而微軟的安卓虛擬機複雜的網路共享方式不僅可能不會正常工作,甚至還會使主機產生麻煩的網路問題。這裡我推薦一種基於Virtual Box的安卓虛擬機:Genymotion。Genymotion的個人版是免費的,而且運行起來相當高效,很適合作為測試用虛擬機。安裝方式很傻瓜,我在此不作贅述,但是需要注意的是,Genymotion攜帶的Virtual Box版本過低不能正確運行在Windows10創意者更新上,所以推薦安裝不攜帶Virtual Box的版本,然後手動安裝Virtual Box的最新版本。

安裝完畢之後,創建一個虛擬機,確保它能正常運行,這樣你就擁有了一個不算專業,但可用的測試環境。

4、Hello, Android!

上述環境搭建完畢,是時候來嘗試編寫我們的第一個採用C#的Android程序了。啟動Visual Studio,新建一個項目,看,Android的所有項目類型都可用了:

微軟Xamarin:採用C#的安卓開發環境搭建

不同的是,它們的語言類型是C#。甚至,你還可以採用Xamarin.Forms技術同時編寫三個平台的應用:

微軟Xamarin:採用C#的安卓開發環境搭建

不過這裡,我們還是新建一個普通的空白Android應用程序,耐心等待解決方案被創建完畢,觀察解決方案管理器,你會發現某些地方,這個項目的結構和一個普通的Android應用很相似:

微軟Xamarin:採用C#的安卓開發環境搭建

不同的是,代碼採用了C#。我們修改那個Main.axml,讓它看起來是這個樣子:

微軟Xamarin:採用C#的安卓開發環境搭建

這和普通的Android UI編寫方式大同小異。我們雙擊打開MainActivity.cs,眼前是熟悉的C#代碼:

微軟Xamarin:採用C#的安卓開發環境搭建

需要指出的是,雖然這個例子我們體會不到跨平台的便利性,但是上面的using指令除了可以引用安卓特有的、位於Android空間下的名稱空間以外,標準的.NET框架所包含的System名稱空間也幾乎全是可用的,這造就了Xamarin最大的優勢,即可以跨平台共享代碼:

微軟Xamarin:採用C#的安卓開發環境搭建

我們編寫OnCreate方法:

微軟Xamarin:採用C#的安卓開發環境搭建

並且編寫一個事件處理程序(技巧:λ表達式):

這樣,我們的第一個用C#編寫的Android應用就編寫好了。啟動虛擬機,或者把測試用手機連接至計算機(記得打開USB調試,虛擬機就不用了),等待正確連接之後,打開「運行」按鈕右側的下拉菜單選擇你的設備,理論上,正常連接後它會顯示你設備的名字:

執行我們的應用。編譯過程和部署過程可能需要花費一定的時間,依各人計算機性能決定:

微軟Xamarin:採用C#的安卓開發環境搭建

微軟Xamarin:採用C#的安卓開發環境搭建

你可以像調試一個普通的C#程序一樣給它加斷點、監視和使用其它強大的調試工具:

微軟Xamarin:採用C#的安卓開發環境搭建

如果你能做到上述幾點,那麼恭喜你,你的採用C#的安卓開發環境搭建完成了。你可以嘗試在代碼文件里編寫你熟悉的C#語言,即使你完全沒接觸過Android開發,你也能輕易做出一個頗具規模的Android應用程序。iOS可以採用相同的方式開發,但是你必須擁有一台Mac作為渲染和調試伺服器,這也許是蘋果公司的策略導致的。

如果你需要在Android和iOS平台上(也許會包括UWP平台)同時維護移動應用,Xamarin絕對是個省時省力的選擇;即使你只需要開發某一個特定平台的應用,Xamarin也不失為一個優秀的平台。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT之家 的精彩文章:

小米手環3要來?米家眾籌運動新品4月27日揭曉
小米MIX 2手機再曝:屏幕發聲,通話音質大提升
《CS:GO》國服首封,網友:沒了一個支付寶
微軟照片應用測試新功能:故事標籤代替相冊

TAG:IT之家 |

您可能感興趣

使用 Visual Studio Code 搭建 C/C+開發和調試環境
Windows下安裝和配置Julia開發環境
亞馬遜推Alexa汽車軟體開發包 抗衡蘋果CarPlay和安卓Auto
《Nginx完全開發指南:使用C、C+和OpenResty》
Unity為iOS和安卓打造AR開發軟體:AR Foundation
微軟正開發Windows Lite系統:用於雙屏電腦和Chromebook競品
DeepMind和Unity合作,開發虛擬環境訓練AI
換裝Chromium內核 微軟發布新Edge瀏覽器開發版下載:兼容Win7
傳微軟開發新系統Windows Lite:挑戰Chrome OS
ReactNative開發實戰一之環境搭建
OPPO新機專利曝光;微軟正在開發代號Scarlett的Xbox…
HaptX與FundamentalVR聯合開發VR手術手套
Python web開發:Flask的URL和視圖
Unity與微軟合推HoloLens 2開發版套件
宮崎英高:對開發「Battle Royale」和「服務型遊戲」感興趣
微軟為何要開發基於Chromium的Edge瀏覽器
適用於開發者的Magic Leap One AR耳機
安卓開發中的Model-View-Presenter
Magic Leap更新Create、展示開發團隊心路歷程
研發實戰:現在開始,用Unity為Magic Leap One開發MR內容