C#跨平臺手機應用開發工具Xamarin嘗試 與Eclipse簡單對比

 

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++); };
        }
    }
}
View Code
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);
    }
}
View Code

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>
xaml
<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>
java xml

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跨度有點大)

相關文章
相關標籤/搜索