1. 程式人生 > >Xamarin開發環境及開發框架初探

Xamarin開發環境及開發框架初探

隨著被微軟收購,最近一年間,Xamarin的火爆程度與日俱增。免費、更好的VS2015整合、更好的模擬器,甚至,在windows上執行和除錯iOS平臺程式,讓我這樣接觸了十幾年.NET平臺的老司機,即使工作中沒有直接應用,也忍不住想要一探究竟。

搭建開發環境

工欲善其事,必先利其器。首先,我們需要一個完美的開發環境。要怎麼才“完美”呢?我想至少要達到以下三點:

  • 完美的Visual Studio整合
  • 高效易用的Android和iOS模擬器
  • 視覺化UI設計

安裝Xamarin

Xamarin的Visual Studio外掛,現在已經是VS2015各版本的一個可選元件,這方面的安裝和整合不是問題。不過,一般VS的安裝程式預設安裝的都不是最新版本。要升級到最新版本,官方方案是下載那個Xamarin官網的線上安裝程式;或者,也可以在已安裝Xamarin外掛的VS2015的Options/Xamarin/Others中進行升級。

然而,國內的網路環境幾乎沒法下載更新。變通的辦法是,可以用Fiddler這樣的工具,抓到Xamarin的安裝升級程式企圖下載的安裝包的URL,然後,通過例如百度雲等提供的離線下載功能來下載,然後手動在本地安裝。

另一個問題是,上述外掛裝完,如果企圖編譯Android專案的,在國內環境,多半會遇到“m2repository目錄中相關檔案找不到”這樣的錯誤,這是因為,在編譯Android專案時,它會企圖從google的網站下載這些m2repository的package,然後,國內網路認為並沒有google這個網站,大家都懂的,FQ下載速度也不穩定,有時一個package就要幾百M。baidu了好一陣,後來找到有某位同學share的一個手動安裝包,可惜我不記得出處了,當時只是轉存到自己的百度雲了,如果,誰知道,請告知,我一定會追加註明。

這裡是我的百度雲上的一個share,包含了當前最新的Xamarin的Windows和MacOS相關的安裝包,和包括上面提到的這個m2repository手動安裝包:
http://pan.baidu.com/s/1o8GqgNS 密碼:oeoa

Android模擬器

選擇一:

Xamarin的VS外掛本身包含了官方的Android SDK及其模擬器,不過,在windows平臺上,想要較好的效能,模擬器必須配置使用x86核心的CPU,並且安裝Intel® HAXM啟用硬體虛擬化加速。

選擇二:

Visual Studio 2015的安裝程式,同時提供了一個基於Hyper-V的Visual Studio Emulator for Android,效能非常不錯。不過,Hyper-V和Intel® HAXM不能同時啟用。一旦啟用Hyper-V,widnows會禁止其他app使用CPU的虛擬化加速功能。所以,只能二選一。

iOS模擬器

iOS模擬器可以在Windows上跑,但是,還是同時需要一臺Mac機器,或者一個Mac虛擬機器來進行真正的編譯和背後的模擬器服務的執行。關於虛擬機器安裝,建議使用VMWARE,網上相關的文章不少,這裡就不過多介紹了。不過,安裝最新的Xcode8需要MacOS v10.11.6以上版本。目前最新版本的Xamarin iOS元件可以閹割運行於Xcode7(iOS專案的link選項不能選Don't link,否則無法執行),不過需要Xcode8才能完美執行所有功能。另外,因為開啟了Hyper-V以後VMWARE裡面不能跑x64的系統,而新版的OSX都只有x64版了,所以,實際上,還是必須關閉Hyper-V才能執行。所以,雖然我很喜歡Visual Studio Emulator for Android,也只能忍痛不用了。

一旦在MacOS中安裝好Mono MDK和Xamarin ios元件,並開啟MacOS的遠端控制允許遠端server進行ssh連線,就可以在VS2015中配置iOS模擬器了。配置成功以後,就可以在Xamarin的iOS專案中,指定部署到iOS模擬器了。不過預設情況下,iOS模擬器執行時是執行在MacOS端的,別急,可以安裝下面這個iOS Simulator for Windows,讓iOS模擬器的UI執行在Windows端。

視覺化UI設計

Xamarin的UI設計,現在有兩大類別,一類是如Xamarin Android/iOS這樣,只能用於特定平臺的UI。這類UI幾乎是原生Android和iOS的簡單封裝,所以不具通用性,不過Xamarin本身就已經提供對其很好的視覺化設計功能,但是這種UI無法跨平臺共享相關的程式碼;另一類,也是真正能體現Xamarin跨平臺價值的,就是基於Xamarin Forms和xaml的UI,這類UI設計可以真正的跨平臺共享UI程式碼,但是,目前,Xamarin提供的Vasual Studio外掛還不能進行很好的預覽支援。幸好,有一些做得不錯的第三方外掛,評估了好幾個後,覺得最好用的是Gorilla Player,這也是一個免費工具,不過並不開源。

Gorilla Player的執行效果如下,可以在編輯Xamarin Forms的xaml時,在多個device或者模擬器裡實時預覽UI效果:

至此,開發環境,基本搞定。

Xamarin開發框架的選擇

語言和開發工具,是進行任何軟體開發的基礎。但是,沒有好的框架,開發效率往往事倍功半。在決定一個框架之前,我過了一遍這本官方的教程Creating Mobile Apps with Xamarin.Forms Book First Edition,大概列一下面一些要點——如果我自己要設計一個Xamarin的架構,大概會怎麼做呢?

  • 首先,我一定會選用Portable Class Library(PCL)型別的專案,來共享跨平臺程式碼,包括UI程式碼;
  • 接著,我需要儘可能使用Mvvm模式,來管理UI元件的資料和事件繫結,並且簡化UI層的單元測試;
  • 然後,UI設計必須基於xaml和Xamarin Forms,方便預覽和隔離UI和後端程式碼;
  • 最後,為各種通用功能,比如,SplashPage,Audio Play,DB Access,我會做一些類庫,這些類庫應該包含PCL格式的共享程式碼,還應該包含各平臺的特殊實現;

評估了一些現有的框架,發現數量不少,不過大多數都還在比較早期階段,很少有基於Xamarin Forms的,尤其是基於xaml版的Forms。直到找到MvvmCross。他的較早版本也是不支援Xamarin Forms的,不過,現在已經有了MvvmCross-Forms,這個repo的Samples目錄包含了很好的示例。

那麼,MvvmCross和MvvmCross-Forms提供了哪些框架別的功呢?

  • 首先,它的名字都叫Mvvm了,當然,它的所有UI模組都是基於ViewModel的,它強制要求每個邏輯頁面都必須有一個ViewModel,甚至連頁面跳轉時指定的也不是頁面名字,而是ViewModel;
  • 當結合使用MvvmCross-Forms時,對應於每一個ViewModel,有一個xaml格式的標準Xamarin Forms頁面,每個xaml預設繫結到對應的ViewModel;
  • 它提供了一個IoC容器實現,替代功能薄弱的Xamarin官方提供的DependencyService,支援Fluent形式的DI配置,更好的管理各種業務Model和Service;
  • 它的模版封裝了Xamarin官方模版中一般存在於Shared專案的App.cs,提供了一個它自己的封裝版本,實現更完善的DI功能;
  • 在每個Android、iOS專案中,它的模版提供了一個通用SplashScreen實現和一個Setup.cs檔案,用於專案的初始化;
  • 它提供了一個很好的跨平臺外掛架構,已經有很多官方和社群提供的外掛,也很容易新增各種跨平臺的外掛功能;

總體上說,它幾乎完美符合我心目中的期望的所有功能,甚至超出預期。使用它的模版進行跨平臺開發,在絕大多數情況下,只需要寫ViewModel+xaml和對應的業務Model和Service,開發效率極大的得到提升。再結合前面提到的Gorilla Player的xaml多平臺UI設計和實時預覽功能。整個開發過程,想必是會非常舒暢的!

因為才剛玩了幾天,還沒深入瞭解MvvmCross的一些實現細節,上面的介紹,還是更多的停留在表面的功能上,也十分可能有所疏漏,歡迎批評指正。後續有時間會對MvvmCross的架構做一些更深入分析。

Update 1 (2016-10-14): 如何修復VS2015啟動時的“XamarainShellPackage did not load correctly”錯誤?

在一臺Win10機器上新裝VS2015,並升級Xamarin for VisualStudio後,每次開啟VS2015報“XamarainShellPackage did not load correctly”等package不能load錯誤。修復辦法,在控制面板的新增刪除程式中手動反安裝Xamarin。然後,在VS2015安裝程式中修復安裝VS2015。最後,手動安裝最新的Xamarin for VisualStudio msi安裝包。開啟VS2015就不再抱錯了,新版的Xamarin開發工具也能正常運行了。

Update 2 (2016-10-16): 如何加速Android SDK Manager的下載和更新?

預設情況下,Android SDK Manager從https://dl-ssl.google.com下載所有的更新。但是dl-ssl.google.com在國內常年被牆無法訪問,但非https的dl.google.com域名卻沒有被封,而且速度飛快。我們可以設定Android SDK Manager的選項,強制指定讓它從dl.google.com下載所有的更新:

Update 3 (2016-10-24): 離線檢視SDK文件的利器,Zeal和Dash,你必不可少的夥伴!

相關推薦

Xamarin開發環境開發框架初探

隨著被微軟收購,最近一年間,Xamarin的火爆程度與日俱增。免費、更好的VS2015整合、更好的模擬器,甚至,在windows上執行和除錯iOS平臺程式,讓我這樣接觸了十幾年.NET平臺的老司機,即使工作中沒有直接應用,也忍不住想要一探究竟。 搭建開發環境 工欲善其事,必先利其器。首先,我們需要一個完美的開

開發環境專案框架介紹

本系列文件將向大家介紹我們 ASP.NET MVC 專案框架,並一步步指導大家如何建立列表、新增、修改頁面和實現帶有查詢功能的列表頁 環境準備 我們的專案採用 .NET 平臺的技術進行開發,需要事先安裝好開發環境。 IDE:採用 Visual Studio 2015 或

vue.js:搭建開發環境構建項目

ini cnpm 直接 人在 mod 不發送 package 3.0 mage 發環境的搭建 安裝node.js 直接下一步就好, 註意安裝的位置 Node.js官網:https://nodejs.org/en/ 驗證Node.js是否安裝好,在windows下,wi

nodejs開發環境插件安裝

win32 msu mod x86 files sig beef 連接 all ★nodejs安裝 S1.安裝前準備:下載nodejs S2.使用默認方式安裝path:D:\Program Files\nodejs S3.Cmd命令node -v檢查安裝是否成功。 S4

vue.js2.0:如何搭建開發環境構建項目

包管理器 webp data- header 開發環境 mage all ins 點擊 1,安裝node.js Node.js官網:https://nodejs.org/en/ 進入Node.js官網,選擇下載並安裝Node.js。安裝過程只需要點擊“下一步”即可, 如下圖

Sublime text 3配置Python3開發環境常用插件安裝

engine 控制臺 htm cond ces real 通過 sting actions 一、環境準備 1、官方網站地址 2、Windows 10 二、安裝Sublime Text 3 1、雙擊下載的.exe文件安裝,安裝路徑不要有中文目錄 2、安裝Sublime

Arduino 入門學習筆記1 開發環境雙色LED實驗

本系列學習教程來自 創樂博智慧學習視訊 Arduino 發展 2005年,Massimo Banzi和David Cuartielles、David Mellis設計 Arduino。取該名稱的原因是Massimo Banzi喜歡去一家名叫Arduino的酒吧,其名稱是1000年

Java環境變數配置----JDK開發環境環境變數設定

【宣告】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/3788534.html   【正文】 1、安裝JDK開發環境 下載網站:http://

Java環境變量配置----JDK開發環境環境變量設置

開始 www. 控制 進行 http 聲明 輸入 -c 環境變量設置 【聲明】 歡迎轉載,但請保留文章原始出處→_→ 生命壹號:http://www.cnblogs.com/smyhvae/ 文章來源:http://www.cnblogs.com/smyhvae/p/378

【甘道夫】Eclipse+Maven搭建HBase開發環境HBaseDAO代碼演示樣例

into disable ner except depend strong condition lena esc 環境: Win764bit Eclipse Version:

ionic開發環境簡單流程

首先安裝node.js https://nodejs.org/en/download/ node -v 檢視版本 npm install -g cnpm -registry=https://registry.npm.taobao.org 由於npm源在國外,

win10配置eclipse開發環境執行hadoop例項叢集執行

一,三,四都參考: https://www.cnblogs.com/supiaopiao/p/7240308.html https://blog.csdn.net/u010185220/article/details/79095179/ https://blog.cs

使用 Laragon 在 Windows 中搭建 PHP開發環境常見問題解決

PHP的整合開發環境市面上已經有很多非常成熟好用的整合軟體了,比如WAMP, Xampp, PhpStudy等,如今我發現了另一款非常好用的整合軟體Laragon,可能更有利於新手通過PHP整合開發環境,進行web專案開發。 安裝 我們可以在官網https://laragon

Windows7下安裝golang語言開發環境和revel框架

1.下載先去下載32位或64 golang window 安裝包 並安裝下載地址:https://www.golangtc.com/download 本人更改了安裝地址為 D:\GO\Go   2. golang的環境配置Go 語言需要配置 GOROOT 和 Path 兩個環境變數:GOROO

Angular4.x開發環境專案建立指令彙總

一.安裝Node.js 官方網址:https://nodejs.org/en/download/ 在命令列中輸入:node -v 和 npm -v 驗證版本 二.全域性安裝Angular CLI 腳手架工具 使用npm命令安裝   n

Sublime text 3搭建Python開發環境常用外掛安裝

一、環境準備 1、官方網站地址 2、Windows 10 3、Sublime Text 3 + 官網購買license(Just a suggestion,$80)   購買連結,Sublime Text may be downloaded and evaluated for free, howeve

微信小程式 開發工具開發環境配置

2.安裝過程 對於Windows使用者直接雙擊下一步的方式安裝即可,此處注意我們使用的版本是官方最新的版本(不需要破解),可以不用AppID,也就是說沒有資格的開發者也可以測試。 2.1 環境

Ubuntu16.04下搭建開發環境編譯tiny4412 Android系統

1.安裝ssh伺服器(可通過網路遠端登入系統,如putty、xshell) sudo apt-get install openssh-server 2.安裝ftp伺服器(預設已安裝)  windows 可使用leapFTP工具登入 sudo apt-get in

配置android studio開發環境遇見的問題

問題1. Error:Invalid Gradle JDK configuration found. Open Gradle Settings Platform SDK does not poi

vue.js2.0實戰(1):搭建開發環境構建專案

Vue.js是一套構建使用者介面的漸進式框架。它既集眾多優秀前端框架之大成,又保持了其簡單易用的特點。對vue.js感興趣並且已經通讀官方基礎教程的初學者來說,開始一個實戰專案是進一步深入學習vue.js最好的方式了。在此之前,需要學會如何搭建開發環境。 開發