Xamarin 支持使用C#開發基於Android、IOS、WindowsPhone應用開發,最大特色C#+跨平臺,詳細說明問度娘。html
安裝 研究java
想體驗研究的點擊查看頁面 Xamarin For Visual Studio 3.0.54.0 完整離線破解版 android
我也下載了研究下,破解有時候有問題,一登錄就變成試用版,須要從新生成License,挺煩人,因而寫了段批處理,放入記事本中另存爲crack.bat執行,則可再次生成License。app
@Entitlements.bak爲破解後生成的Entitlements的另存文件,登錄後會被刪除的,因此我改了名保存目錄中 copy "C:\ProgramData\Mono for Android\License\Entitlements.bak" "C:\ProgramData\Mono for Android\License\Entitlements" /Y; copy "C:\ProgramData\MonoTouch\License\Entitlements.bak" "C:\ProgramData\MonoTouch\License\Entitlements" /Y; @下面2行分別爲Android和IOS開發生成License "C:\Program Files\MSBuild\Xamarin\Android\mandroid.exe" -activate -activation-name=b4a -activation-phone=q -activation-company=b4a -activation-code=q -activation-email=q; "C:\Program Files\MSBuild\Xamarin\iOS\mtouch.exe" -activate -activation-name=b4a -activation-phone=q -activation-company=b4a -activation-code=q -activation-email=q;
本人電腦上裝了vs2010+vs2013,Xamarin在vs2010比較正常,在vs2013 update2 上打開跨平臺應用(Android+IOS)時vs2013會無響應死掉,沒法正常使用。經過如下步驟能夠正常工做ide
一、打開vs2013,工具--Xamarin Account 登錄 -->變爲試用版
二、vs中打開跨平臺解決方案
三、工具--Xamarin Account 註銷LogOut
四、執行bat:自動複製破解後的Entitlements,自動生成License
五、工具 -- Xamarin Account 彈出登錄框 取消幾回-->變爲企業版工具
如今能夠正常編碼了,注意不要再登錄了。佈局
使用學習
代碼結構ui
vs2013 vs Eclipse 其實差很少的this
Activity代碼對比
using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace HelloDroid { [Activity(Label = "HelloDroid", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; } } }
package com.example.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
Layout佈局文件對比
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/MyButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/Hello" /> </LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.helloworld.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
UI設計器
vs2013 支持拖控件
Eclipse
我的使用後小結
在Xamarin中開發Android應用與用java開發Android應用差很少,目錄結構幾乎同樣,代碼也差很少類似。Layout佈局方式同樣,控件與Eclipse中的控件也同樣多。打包出的apk應用稍大(寫了一個點擊按鈕計數程序app,支持Android 2.2+,apk大小爲3.7M,因內部包含mono runtime因此較大)。
使用Xamarin開發的Android應用執行速度很快,一樣在Android模擬器中執行C# 開發應用比Java Native 執行略快,在手機中執行與原生應用差異很小,三星Note2中比java開發的原生應用還快(引自國外文章)。有空寫個程序認真比較下。
若是單純開發Android應用,仍是建議用Java+Eclipse,畢竟是正統官方,開源類庫多,幫助支持多,並且C#和java 原本就很類似,學習起來快而不難。Xamarin開發確定會存在某些侷限和個別沒法解決的問題,java開發就不會存在這些問題。
Xamarin 適用與跨平臺開發(業務邏輯、數據訪問部分可跨平臺複用)、適用於會C#的不想學Java或Object C的、比較適用於IOS開發(畢竟從C#或Java到Object C跨度有點大)