快速開發跨平臺應用之Xamarin技術
Xamarin 介紹
Xamarin 是一個允許開發人員有效建立可跨 iOS、Android、Windows 應用程式的開發工具集。Xamarin是免費且開源的,遵循 MIT (麻省理工學院許可證)協議,在github上的地址為:https://github.com/xamarin 。官方網站為:http://xamarin.com
簡單的來說,Xamarin 使我們可以使用 C#,F#,VB.NET 等語言開發原生 iOS、Android、Windows 應用程式。
傳統移動開發流程
開發一個傳統的移動開發程式都會有一些流程。比如像開啟IDE,拖一些控制元件,編寫邏輯,然後測試,釋出。這些非常簡單一兩個小時就可以折騰完成。
但是,如果要開發一些大型的,商業級的移動應用程式就需要一些專業的開發流程。比如需求分析,UX 設計,UI 設計,開發,可用性測試,效能測試,以及數以千計的裝置進行測試,再使用不同部署方式完成部署。
建立 UX 原型時,需要考慮應用所面向的各種平臺的介面指南,這一點十分重要。
iOS 使用左滑編輯,Android 使用長按彈出編輯框,不同平臺的設計語言都有差異。
裝置有不同的規格,平板,手機,尺寸等,裝置也需要進行適配。
確定了 UX 之後,下一步是建立 UI 設計。 雖然 UX 通常只是黑白原型,不過在 UI 設計階段中會引入並最終完成顏色、圖形等。 在良好的 UI 設計上花費時間是非常重要的,通常情況下,最受歡迎的應用具有專業的設計。
與 UX 一樣,務必要了解每種平臺都具有自己的設計語言,因此設計良好的應用程式在每種平臺上的外觀可能仍有所不同。
確定了 UI 之後,下一步就是開發。iOS,Android,Windows 分別需要使用不同的語言或程式設計方式進行實現,因此需要三種不同的開發人員,來承擔特定平臺的開發任務。
測試是應用得到交付過程中一個重要的環節,一個沒有經過測試的應用,質量是很難得到保障。所以尤為關鍵。傳統開發過程中,各個平臺下單元測試,整合測試,效能測試都是不同的實現細節。因此跟傳統開發相似,同樣也需要三種平臺的測試人員角色,來承擔特定平臺的測試任務。
Xamarin 架構
Xamarin 的核心包含以下及部分:
xamarin-android : 提供 Android SDK的原生開發包,用.NET託管語言如C#,F#等可以進行 Android 應用程式開發。github地址為:https://github.com/xamarin/xamarin-android
xamarin-macios : 提供 Mac,iOS,tvOS和watchOS的原生開發包,用.NET託管語言如C#,F#等可以進行 Mac,iOS,tvOS和watchOS 應用程式開發。github地址為:https://github.com/xamarin/xamarin-macios
Xamarin.Forms : 提供完整的跨平臺UI工具包。用C#可以進行完全原生的 Android,iOS 和通用Windows平臺應用程式開發。github地址為:https://github.com/xamarin/Xamarin.Forms
通過Xamarin 能減少應用程式總程式碼量
從上圖我們看到,Xamarin 通過 .NET標準庫實現業務邏輯層,模型層,服務訪問層,資料訪問層,介面層,資料層。一套程式碼被不同平臺引用。即:多個專案共享程式碼,重構操作始終更新所有受影響的引用。
據統計,大部分使用Xamarin技術開發的應用程式。共享程式碼佔比高達75%。
Xamarin Forms 將共享程式碼量提升為95%
下圖是 使用 Xamarin Native 和 使用 Xamarin Forms 開發同一寬App的程式碼對比示意圖:
很顯然使用Xamarin Forms 技術進行跨平臺應用開發,將共享程式碼比率提升20%,達到非常恐怖的95%。
總結
使用 Xamarin 開發應用程式的優點:1.所有平臺都可以使用C#編寫,加速開發週期、節約成本 Xamarin 使用C#和.Net框架來為任何移動平臺建立應用程式。因此,您可以重複利用多達95%的原始碼加速開發週期。 Xamarin 也不需要在開發環境之間切換:您可以在 Visual Studio 中構建完全取代Android Studio , XCode 等開發環境。跨平臺開發工具作為IDE的內建部分提供,無需額外費用。 同時,我們使用 Xamarin 將無需再招聘Android、iOS、MacOS,Windows Phone 等開發人員,可以在一定基礎上節約人力成本。 2.效能接近原生 與基於Web技術的傳統混合解決方案不同,Xamarin 構建的跨平臺應用程式仍然可以歸類為原生應用程式。效能指標與 Android的Java(如此處所述)和 Objective-C或 Swift 的效能指標相當,可用於本機iOS應用程式開發。而且,Xamarin 的效能不斷得到改進,完全符合原生開發的標準。 3.本地使用者體驗 Xamarin 本身就是原生技術,因此通過 Xamarin 編寫的 UI 能夠達到跟原生一模一樣的 UI 體驗。 4.全面的硬體支援 Xamarin 消除了所有硬體相容性問題,使用外掛和特定的API,以便在平臺上使用通用裝置功能。隨著訪問平臺特定的API,Xamarin 支援與本地庫連結。這可以提供更好的定製和原生級功能,而且開銷很小。 5.開源技術與強大的企業支援 Xamarin 於2016年2月被微軟收購後,Xamarin 許可政策發生了根本性的變化。包括執行時,庫和命令列工具在內的 Xamarin SDK 已經成為開放原始碼,並且作為Visual Studio的一部分,可以在 MIT 許可下使用。通過消除許可證的主要障礙和成本,微軟為平臺的進一步發展鋪平了道路。另外,由微軟領導,並受到Unity,JetBrains和Red Hat,.NET基金會和 Xamarin 的支援,特別是已經成為一個可靠和強大的技術堆疊。
使用 Xamarin 開發應用程式的缺點:
1.稍微延遲支援最新的平臺更新 Xamarin 是否能及時支援各個平臺,完全取決於 Xamarin 開發團隊。第三方工具不可能為最新的 iOS 和 Android 版本提供即時支援:實施這些更改和/或引入新的外掛等需要一些時間。儘管 Xamarin 聲稱提供當天的支援,但仍然可能有些延誤。 2.對開源庫的訪問受限 使用 Xamarin,您只能使用平臺提供的元件和一些.Net開源資源。儘管選擇並不像Android和iOS移動應用程式開發那樣豐富,但Xamarin元件提供了數千個自定義UI控制元件,各種圖表,圖形,主題和其他強大的功能,可以僅新增到應用程式中點選次數很少。這包括內建支付處理(如Stripe),信標和可穿戴裝置整合,開箱即用推送通知服務,雲端儲存解決方案,多媒體串流功能等等。 3.生態系統問題 顯然,Xamarin 社群比iOS或Android的小得多。因此,找到一個有經驗的Xamarin開發人員可能是一個挑戰。雖然該平臺在微軟的支援下正在增長。根據不同來源的資訊,Xamarin社群佔全球移動開發社會的10%,在中國的比例更少。儘管Xamarin工程師的數量與iOS或Android本地社群無法比較。但是有經驗豐富的C#/ .Net工程師學習Xamarin的曲線是很小的。 4.應用程式安裝包稍微會大一些 根據其型別和複雜性,Xamarin應用程式通常比本地應用程式大(後者可能是Xamarin應用程式的一半大小)。Android的一個簡單的“hello,world”應用程式最多可能需要16 MB,其中大部分應用於關聯的庫,內容,Mono執行時和Base Class Library(BCL)程式集。
參考資料:
[1] Xamarin官方英文文件 來源:https://docs.microsoft.com/en-us/xamarin/
如果你覺得本篇文章對您有幫助的話,感謝您的【推薦】。
如果你對 .NET 或 Xamarin 有興趣的話可以關注我,我會定期的在部落格分享我的學習心得。
本文地址:http://www.cnblogs.com/hexu6788/p/9916038.html
作者部落格:何旭
歡迎轉載,請在明顯位置給出出處及連結