Xamarin 研究
HappyMan
2015/01/13
Xamarin簡介
• Xamarin是由早期的Mono專案演變而來,原
本是在Linux上執行C#程式的一個開放原始碼
專案。
• 後來陸續發表支援iOS的Mono Touch
framework以及Mono For Android
Framework。因此它在市場上並不是一個新
的產品。
• 2011年,原本在Novell的Mono專案團隊獨立
成立一家公司,正式將名稱改為Xamarin。
Xamarin簡介
• Xamarin是一個行動App開發平台,提供跨平
台開發能力,開發人員透過Xamarin開發工具
與程式語言,即可開發出iOS、Android與
Windows等平台的原生(Native) App 應用程
式。
• 不須個別使用各平台的開發工具與程式語言,
不只是「write-once, run everywhere.」的跨
平台解決方案,更可達到「write your code
once, and present native UIs on each
platform.」之跨平台開發能力。
Xamarin簡介
• 由於Xamarin可直接產生各平台之原生App
應用程式,相較於其他跨平台方案,藉由
Xamarin所開發出來的App應用程式,更能
發揮出各行動平台的功能與特性,且具有
最佳的執行效能。
觸及裝置
特色
• 以C#開發,編譯成iOS與Android原生執行
碼,非HTML5解決方案
• 任何Objective-C (iOS)與Java (Android)可
以做的,Xamarin都可以做到
• 執行效能100%與原平台程式 (Objective-C,
Java)所開發的一樣
• 結合Microsoft Visual Studio開發工具,讓
開發更方便、快速
跨平台開發
• Xamarin可以使用熟悉的C#來撰寫iOS,
Android, Mac及Windows應用程式。
程式碼重用 (Reuse)
• 使用最愛的C#及.NET函式庫,輕鬆使用第
三方的Native Library及Framework。
智慧輸入
• 開發應用程式時,開發工具會偵測輸入的
部份字母,尋找對應的API並自動完成輸入。
Visual Studio 整合
• 在Visual Studio中建立、建置、除錯以及
部署。 還可以使用您喜愛的plug-in,例如
ReSharper以及與TFS整合。
原生的使用者介面及效能
• Xamarin 帶給高效能的體驗並完整對應各
個平台的Native API。因此透過Xamarin,
建立的應用程式可以完全發揮裝置特有的
性能。
UI設計
• 可在Visual Studio中同時整合Android與
iOS的UI設計功能,讓我們在同一開發環境
輕鬆完成操作畫面設計 !
其他解決方案比較
原理說明
• Xamarin是市場上少數提供原生解決方案的
跨平台行動開發工具,原生應用程式應該
包含以下特性:
– 使用標準的使用者介面並符合各個行動平台的
設計準則。
– 搭配裝置硬體以提供最佳化的效能。
– 能夠完整存取裝置硬體上的功能。
原理說明
• Xamarin將原生 (Native)的iOS及Android API
轉換為C#函式庫供使用者使用,開發人員可
使用C#撰寫程式,並呼叫原生平台 (iOS,
Android)的API,且透過良好的設計,可以在
不同平台共用部份程式碼。
• 開發人員可透過Xamarin編譯器,直接將程式
編譯為ARM的執行檔,並進行各平台的封裝。
• 編譯封裝完成的App由於不經過中間轉譯,直
接編譯為原生的二進位執行檔,因此具有好的
運作效能。
MVC設計模式
程式碼共用
分開編譯
各版本收費與服務
各版本收費與服務(續)
用過的人的經驗-1
• 發表時間:Tue Aug 27 09:04:43 2013
• 用Xarmin開發Android要另外學,而且資
源比較少
• 客製化元件建議不要走Xamarin
• 使用SDK會比較麻煩,須寫Java轉接檔,如
使用Facebook或AdMob,要寫一份Java
轉接檔,讓C#抓得到那些Java Method
• 要看他們支援的能力與價錢如何
用過的人的經驗-1
• 發表時間:Tue Aug 27 09:04:43 2013
• 進階功能或技術支援時,開始大筆鈔票流
失
• 很多都是Java語法,首字大寫就變C#
• 網址:
https://www.ptt.cc/bbs/AndroidDev/M.
1377565486.A.5D1.html
用過的人的經驗-2
• 發表時間:Thu Feb 27 16:14:03 2014
• 使用Xamarin還是得去學android和ios的
app架構
• 有MVC開發基礎的人比較容易上手
• VS這強大的IDE本身就能幫你解決許多問題
• Eclipse是神器,VS就是開外掛
• C#非常好上手,猴子也會做
用過的人的經驗-2
• 共通的部分不用使用不同的語言重寫
• 三大平台,這邊參考那邊引用,即可解決
• 需要花力氣開發的是View,Solution不多
• 搜尋解法關鍵字「Mono」
• 沒有非要跨平台的需求根本自虐
• Coding速度還好,Compiling超級慢
• 網址:
https://www.ptt.cc/bbs/AndroidDev/M.139
3488846.A.326.html
用過的人的經驗-3
• 發表時間:2013-04-05 19:00
• 放棄的原因:
– 新項目,用戶少,資源少,遇到提要自己硬啃,不
然要等幾天時間官方技術支援
– API更新總是慢於原生API提供商,也就是無法即
時使用最新API
– 因是商業軟體,想要研究可行性就要花錢
• 網址:
http://fanli7.net/a/bianchengyuyan/C__/20
130405/335386.html
StackOverFlow Tag 數量
• 調查時間:2015/01/14
• 網址:
http://stackoverflow.com/questions/tag
ged/xamarin
平台 語言
Xamarin:5622 C#:742176
iOS:299787 Objective-C:214602
Android:615680 Java:778543
GitHub Repository 數量
• 調查時間:2015/01/14
• 網址:
https://github.com/search?q=xamarin
平台 Repository Code
Xamarin 2095 169922
iOS 62493 9645233
Android 166027 45194646
書籍
• 書名:Visual C#與Xamarin跨平台行動
App開發實戰:iOS/Android/Windows一
次搞定
博客來:
http://www.books.com.tw/products/001
0649715
出版日期:2014/09/18
參考
• Xamarin - 中文網站
http://www.thinkpower.info/xamarin/
• [案例分享] 茂迪公司一次打造跨平台 App 即時掌握
生產線資訊
http://blogs.msdn.com/b/msdntaiwan/archive/
2014/01/24/motech-casestudy-visualstudio-
xamarin.aspx
• Xamarin + Visual Studio - 真 * 跨平台 app 開發日
• http://blogs.msdn.com/b/msdntaiwan/archive/
2014/02/27/visualstudio-xamarin-app.aspx
參考
• Mobile App Development & App
Creation Software – Xamarin
http://xamarin.com/
• Xamarin中文網站 –
CSDNhttp://xamarin.csdn.net/

Xamarin 研究

Editor's Notes

  • #17 Xamarin支援MVC設計模式,開發人員可以設計哪些是與使用者介面相關的部份,並將與平台無關的商業邏輯、服務存取、資料存取以及資料層從介面抽離出來,依此為依據將應用程式區分為兩部份,分別為core以及user interface,有效達到程式碼共享,讓設計架構更嚴謹。
  • #18 針對上述專案統合開發與程式碼共用,如下圖左半邊所示,開發人員可將抽離出來的共用程式碼獨立成一個專案 (Shared Code),並只加入常用的組件(如Base Class Library),若有部份程式碼使用到與平台相關的組件或技術,可在程式碼中加入條件式編譯的指示詞,供各平台直接使用,不需要進行修改。
  • #19 在各平台的專案中,開發人員可以透過功能套件 (Project Linker),以檔案連結的方式,將共用程式碼的部份連結到各平台專案。在開發平台專案時,只要針對使用者介面以及針對控制項的操作撰寫程式即可。對於商業邏輯或資料存取的部份,則可以在各平台共用,這是使用原生的開發方式(Objective-C、Java)所無法達到的。開發完成後,即可透過Xamarin的編譯器進行編譯。Xamarin 為不同的平台提供編譯器。在iOS平台,Xamarin 使用AOT編譯,在Android平台,則使用JIT編譯,將C#程式碼直接編譯為ARM CPU的機器碼,以得到最佳效能。