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可以直接從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依賴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 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應用程序了。
在mac os x要使用Xamarin Studio必須先安裝XCode。假設已經安裝好Xamarin Studio,那么也一樣直接安裝Xamarin.iOS即可,然后就可以直接通過Xamarin Studio直接開發調試iOS應用程序了。
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來賦予運行權限。