SlideShare a Scribd company logo
1 of 30
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/

More Related Content

More from ShengWen Chiou

Crashlytics 使用教學
Crashlytics 使用教學Crashlytics 使用教學
Crashlytics 使用教學ShengWen Chiou
 
Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryShengWen Chiou
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryShengWen Chiou
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OSShengWen Chiou
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學ShengWen Chiou
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch SpecificationsShengWen Chiou
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI ElementsShengWen Chiou
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesShengWen Chiou
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學ShengWen Chiou
 

More from ShengWen Chiou (20)

iOS Extension
iOS ExtensioniOS Extension
iOS Extension
 
FMDB 研究
FMDB 研究FMDB 研究
FMDB 研究
 
Realm 研究
Realm 研究Realm 研究
Realm 研究
 
Crashlytics 使用教學
Crashlytics 使用教學Crashlytics 使用教學
Crashlytics 使用教學
 
DBAccess 研究
DBAccess 研究DBAccess 研究
DBAccess 研究
 
Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class Library
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class Library
 
iBeacon 相關應用
iBeacon 相關應用iBeacon 相關應用
iBeacon 相關應用
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OS
 
Apple Watch Feature
Apple Watch FeatureApple Watch Feature
Apple Watch Feature
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch Specifications
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI Elements
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface Guidelines
 
AppleDoc 使用教學
AppleDoc 使用教學AppleDoc 使用教學
AppleDoc 使用教學
 
Quickblox Study
Quickblox StudyQuickblox Study
Quickblox Study
 
Auto layout 介紹
Auto layout 介紹Auto layout 介紹
Auto layout 介紹
 
iOS Touch ID 介紹
iOS Touch ID 介紹iOS Touch ID 介紹
iOS Touch ID 介紹
 
iOS Keychain 介紹
iOS Keychain 介紹iOS Keychain 介紹
iOS Keychain 介紹
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學
 

Xamarin 研究

Editor's Notes

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