天天看點

Xamarin體驗:使用C#開發iOS/Android應用 簡介 安裝

http://www.cnblogs.com/lwme/p/use-xamarin-develop-android-ios-app.html

Xamarin是Mono創始人Miguel de Icaza建立的公司,旨在讓開發者可以用C#編寫iOS, Android, Mac應用程式,也就是跨平台移動開發。

簡介

Xamarin是基于Mono的平台,目前主要有以下産品(更具體請見:http://xamarin.com/products):

  • Xamarin Studio:IDE,是從原來的MonoDevelop改名而來。現在從MonoDevelop官方網站下載下傳的其實也是Xamarin Studio:http://monodevelop.com/。 (話說MonoDevelop也是SharpDevelop的一個分支發展而來)
  • Xamarin.iOS:原名MonoTouch,用于開發iOS應用程式,并且可以釋出到app store上。
  • Xamarin.Mac:用于開發mac os x應用程式,類似于windows 桌面應用。
  • Xamarin.Android:原名MonoDroid/Mono for Android,用于開發Android應用程式。
  • Xamarin for Visual Studio:Visual Studio的插件,包括iOS和Android,不過目前隻支援vs2010/vs2012。
  • Xamarin Test Cloud:測試雲,可以把你的應用程式釋出到Xamarin的雲上面測試,它可以自動幫你在數百種裝置上測試你的應用程式。
  • Component Store:元件商店,上面有各種收費/免費的控件提供下載下傳。

話說還有windows phone不知道跑哪去了…

界面設計器

對于Android,不管是Xamarin Studio還是Xamarin for Visual Studio,都有提供一個設計器,友善直接對界面進行設計,具體見:http://docs.xamarin.com/guides/android/user_interface/designer_overview/。

而iOS則沒有這麼好運了,Xamarin for Visual Studio沒有設計器。而Xamarin Studio雖然有設計器提供,不過目前也隻提供在iOS上的Xamarin Studio alpha版本,估計目前穩定性還不夠,具體見:http://docs.xamarin.com/guides/ios/user_interface/designer/,隻好期待未來能夠提供。

已經安裝了Xamarin Studio或者Visual Studio的可以直接通過切換通道來更新:http://docs.xamarin.com/recipes/cross-platform/ide/change_updates_channel/,目前主要有Stable穩定版、Beta測試版、以及alpha版。

工作方式

Android應用程式會被編譯為IL代碼,啟動時再進行JIT編譯(動态編譯),釋出程式的時候會包含一個mono runtime。

而iOS則是直接通過AOT編譯(靜态編譯)為ARM彙編代碼。

具體見:http://xamarin.com/how-it-works

API文檔

Xamarin提供了API文檔:

  • Android:http://androidapi.xamarin.com/?link=root%3a%2fMonoAndroid-lib
  • iOS:http://iosapi.xamarin.com/?link=root%3a%2fMonoTouch-lib

安裝

Xamarin Studio

Xamarin Studio可以直接從http://monodevelop.com/Download下載下傳,目前最新的穩定版為4.0.13。

  • Windows版依賴于.NET Framework 4.0和GTK# for .NET 2.12.22,安裝好兩個依賴之後可以直接安裝Xamarin Studio即可。
  • Mac OSX版依賴于Mono + GTK#,需要先從http://www.go-mono.com/mono-downloads/download.html下載下傳MRE(Mono Runtime)或者MDK(Mono DevelopmentKit)安裝。MRE和MDK都包含GTK#和MONO。

Android

android依賴JDK6以及android SDK,是以需要先下載下傳:

  • JDK6:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html
  • android SDK及NDK:http://developer.android.com/sdk,其中NDK不是必須的。
  • Xamarin.Android:http://xamarin.com/download

安裝好JDK及androidSDK之後,再安裝Xamarin.Android,會讓你選擇是否安裝Visual Studio插件。

安裝好Visual Studio插件之後,在菜單Tools->Options->Xamarin->Android Settings設定好Android SDK和NDK的路徑。

額外說一句,eclipse實在是太差勁,跟intellij IDEA沒法比,如果用java開發的話Android Studio是最佳選擇,ADT就不用考慮了。

Android模拟器及調試

由于android SDK提供的模拟器是在是巨慢無比,太差勁了,是以不得不找一個替代品。

基于Virtual Box的GenyMotion絕對是最佳選擇,運作速度非常流暢,不過目前隻支援Android4.1.1、4.2.2。

在官網:http://www.genymotion.com/注冊好賬号,并下載下傳安裝GenyMotion,目前最新版本為1.3.0。

安裝之前需要你的電腦上已經安裝Virtual Box(目前最新版為4.3.2),不過我發現我安裝了Virtual Box 4.3.2的情況下GenyMotion無法啟動,是以後來又換成官方推薦的4.2.12,從https://www.virtualbox.org/wiki/Download_Old_Builds_4_2下載下傳。

安裝完成之後:

  • 通過”Settings”按鈕:設定好Android SDK路徑,并勾選”When a virtual devices starts, connect it automatically to ADB”,”ADB from Android Developer Tools successfully found”。
  • 通過“Add”按鈕
    • 添加裝置,然後需要登入
    • 如果所選的裝置鏡像沒有下載下傳,則需要線上下載下傳某個裝置的vbox鏡像,一般鏡像大小為200M。
    • 通過向導提示添加虛拟機,輸入名稱如“lwme Nexus S - 4.2.2 - with Google Apps - API 17 - 480x800”,再等待虛拟機建立好
    • 通過“Play”按鈕運作虛拟機

虛拟機啟動之後,VS的Xamarin.Android工具欄會列出裝置的名稱,選擇這個裝置就可以在GenyMotion模拟器上調試Android應用程式了。

iOS on mac

在mac os x要使用Xamarin Studio必須先安裝XCode。假設已經安裝好Xamarin Studio,那麼也一樣直接安裝Xamarin.iOS即可,然後就可以直接通過Xamarin Studio直接開發調試iOS應用程式了。

iOS on windows

windows下的Xamarin.iOS直接安裝即可,由于沒有windows下的模拟器,是以需要連接配接到mac的模拟器進行調試。

前提條件是(具體見:http://docs.xamarin.com/guides/ios/getting_started/installation/mac/):

  • 在mac下安裝并激活Xamarin Studio及Xamarin.iOS
  • 在Network->Proxies啟用Web Proxy(HTTP)
  • 關閉防火牆

還有一個最重要的前提是,你必須有有個iPhone Developer Program(IDP)證書,否則沒辦法調試,沒有的話需要到:https://developer.apple.com/programs/ios/申請(個人開發者$99每年)。

做好以上操作之後:

  • 在Visual Studio的Tools->Options->Xamarin->iOS Settings->Mac build host->Configure->Configure Host Manually
  • 輸入mac的ip位址,等待mac裝置顯示Ready
  • 再點Connect按鈕連接配接裝置
  • 連接配接成功
    • 連接配接成功之後可能會提示SDK更新,選擇更新即可,否則會提示版本不比對無法連上mac
    • 更新成功需要重新開啟vs

Xamarin.iOS的Visual Studio插件調試有兩種模式:

  • 真機(iPhone):預設,需要把iPhone真機通過usb連到mac上
  • 模拟器(iPhoneSimulator):模拟器調試

預設情況下是iPhone,可以在Build->Configuration Manager的Platform進行更改,否則沒有連接配接iPhone會顯示”No Devices Attached”。

具體的配置請見:http://docs.xamarin.com/guides/ios/getting_started/introduction_to_Xamarin_iOS_for_visual_studio/。

然後就可以調試了,某些情況可能mtouch沒有運作權限,還需要通過chmod +x /Developer/MonoTouch/usr/bin/mtouch來賦予運作權限。

Visual Studio 2013

Xamarin的Visual Studio插件目前還不支援VS 2013,是以需要在安裝Xamarin的VS插件時把2010和2012全選上 (由于我的電腦裡隻剩2013,而安裝VS2013的時候還會安裝部分VS2010的Shell,是以VS插件會被安裝到VS2010的目錄下)。

接下來需要手動複制一些檔案(假如VS2013安裝在C槽的話):

  • 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Xamarin 複制到 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Xamarin
  • 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp目錄下的Android目錄和iOS目錄複制到C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ProjectTemplates\CSharp
  • 把C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp目錄下的Xamarin.Android目錄和iOS墓道複制到C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplates\CSharp
  • 運作"c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" /setup /nosetupvstemplates生成項目及檔案模闆緩存

上面的方法來自:http://blog.fire-development.com/2013/07/01/install-xamarin-in-vs-2013-preview-1/,再由囧月改造。

現在就可以在VS2013上開發Android及iOS應用了。

更多的資料請看官方Developer Center:http://docs.xamarin.com/

更多中文資料: 

http://www.microsoft.com/taiwan/vstudio/Xamarin/ 

Terry's IT Note:http://www.dotblogs.com.tw/taihon64/Tags/Xamarin/default.aspx 

James's Tech Blog:http://www.dotblogs.com.tw/jamestsai/category/9345.aspx 

Donma 當麻許:http://www.dotblogs.com.tw/junegoat/Tags/Xamarin/default.aspx 

浩呆的技術研究網站:http://www.dotblogs.com.tw/toysboy21/category/9451.aspx

最後,順便推薦兩本書:

  • 《C#開發Android應用實戰》:http://product.dangdang.com/23169905.html
  • 《MonoTouch應用開發實踐指南:使用C#和.NET開發iOS應用》:http://product.dangdang.com/22922216.html

--EOF--

作者:囧月

出處:http://lwme.cnblogs.com/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀