C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比

Xamarin 支持使用C#开发基于Android、IOS、WindowsPhone应用开发,最大特点C#+跨平台,详细说明问度娘。

安装 研究

想体验研究的点击查看页面 Xamarin For Visual Studio 3.0.54.0 完整离线破解版

我也下载了研究下,破解有时候有问题,一登陆就变成试用版,需要重新生成License,挺烦人,于是写了段批处理,放入记事本中另存为crack.bat执行,则可再次生成License。

@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会无响应死掉,无法正常使用。通过以下步骤可以正常工作

1、打开vs2013,工具--Xamarin Account 登陆 -->变为试用版
2、vs中打开跨平台解决方案
3、工具--Xamarin Account 注销LogOut
4、执行bat:自动复制破解后的Entitlements,自动生成License
5、工具 -- Xamarin Account 弹出登陆框 取消几次-->变为企业版

现在可以正常编码了,注意不要再登陆了。

使用

代码结构

vs2013 vs Eclipse 其实差不多的

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>

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

时间: 2024-09-30 06:50:13

C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比的相关文章

Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Windows.Linux 以及 OS X 平台. Brackets 的特点是简约.优雅.快捷!它没有很多的视图或者面板,也没太多花哨的功能,它的核心目标是减少在开发过程中那些效率低下的重复性工作,例如浏览器刷新,修改元素的样式,搜索功能等等.和 Sublime Text.Everedit 等通用代码编辑器

全新的跨平台app软件开发工具——Lae软件开发平台

Lae是一款运行于windows的界面开发工具,具有所见即所得.开发跨平台.UI布局自由.机制简单.维护容易等诸多优点,可以开发同时运行在windows.Linux.MacOX.iOS.Android等系统平台的软件,windows桌面工具软件.管理软件.游戏界面;  linux系统桌面工具软件.管理软件.游戏界面; Mac OSX系统上桌面工具软件.管理软件.游戏界面:安卓系统的APP软件.2D游戏:iOS系统上的APP软件.2D游戏. 感兴趣的朋友请搜索知乎上的Lae软件开发平台介绍,或加入

Android高效的应用程序开发工具集1---ant构建一个简单的Android工程

在java编译那些事通过提到ant编译Java工程,如今扩大到用它来构建Android目,事实上道理是相通的.变化的仅仅是使用的形式.ant构建相比IDE的优点是多个子项目使用自己定义jar包时,ant能够更好的完毕自己主动化构建.一个命令就搞定整个项目的编译而不用手工的导出jar包然后再将其放到指定文件夹. 这就是高效的构建工具所标榜的. 先来说说ant在Linux下的安装(那篇文章写的太过简单,事实上也是非常easy的,别看mannul中写的那么复杂). 1.ant的安装 最简单的办法就是直

移动应用跨平台开发:《用PhoneGap来开发跨平台手机应用》

移动应用跨平台开发:<用PhoneGap来开发跨平台手机应用> 随着HTML5, CSS3, Javascript的发展,以及浏览器对这些特性的支持,使得手机跨平台成为一种趋势,跨平台意味着:开发一次,到处运行.基于(HTML5, CSS3, Javascript)的前端开发技术,可以通过PhoneGap(http://phonegap.com/)来生成对应设备的应用,如Android的APK, iOS设备的ipa等.相比原生态的应用来讲,PhoneGap开发出来的应用成本更低,甚至不需要会J

Xamarin Anroid开发教程之Anroid开发工具及应用介绍

Xamarin Anroid开发教程之Anroid开发工具及应用介绍 Xamarin开发Anroid应用介绍 如今智能手机已经盛行了好几年,而针对这些智能手机的软件开发也变得异常火热.但是在Android平台下只能使用Java开发,iOS平台下也只能使用Objective-C或Swift开发.对于那些C#程序员却只能眼看着这些火热的平台流口水.在几年前只能重新学习一门新的语言,才可以进入这些智能手机开发行业.现在,我们有了Xamarin.C#程序员不需要了解其它语言,就可以开始编写Android

开发者不可不知的五款DIY快速开发工具,你造吗

对于非专业的移动开发者,弱化编程能力的快发开发工具实用性够强,无需编程只要借助工具提供的各种功能模块,就能开发出属于自己的应用,而支持DIY更能使应用开发锦上添花,借助快速开发工具开发出属于自己的“能嘚瑟”应用,而不是让人捂脸叹息“那画面太美我不敢看” 1.AppMachine AppMachine是一款跨平台的快速开发工具,目前支持iOS和Android两大主流平台,没编程经验的用户可以通过修改AppMachine所提供的20种应用设计模板进行App设计.除此之外,另外用户也可以自己DIY,添

快速开发工具知多少

移动互联网时代,应用间的相互竞争趋白热化,但相关工具的增多也在降低APP开发的技术门槛,快发开发工具更是其中的重要部分,戴维列举几种快速开发工具,供开发者参考和学习,大家一起来看看吧. 1.AppMachine AppMachine 是一个跨iOS和Android平台的快速开发工具,它的方便之处在于提供二十多种应用设计模板,使用者可以直接通过模板进行应用开发.当然,用户也可以自己DIY,添加新闻.LBS.社交媒体.拍照.摄像等多个集成内容.AppMachine 不依赖HTML5,也提供AppMa

开发者必须知道的九款快速开发工具

移动互联网时代,应用间的相互竞争趋白热化,但相关工具的增多也在降低APP开发的技术门槛,快发开发工具更是其中的重要部分,列举几种快速开发工具,供大家参考和学习,一起来看看吧. 1.AppMachine AppMachine 是一个跨iOS和Android平台的快速开发工具,它的方便之处在于提供二十多种应用设计模板,使用者可以直接通过模板进行应用开发.当然,用户也可以自己DIY,添加新闻.LBS.社交媒体.拍照.摄像等多个集成内容.AppMachine 不依赖HTML5,也提供AppMachine

Cocos2d-x手机游戏开发视频教程

Cocos2d-x跨平台手机游戏开发配4个项目(引擎应用,单点和多点触摸.瓦片地图.骨骼动画)适合人群:高级课时数量:60课时用到技术:cocos2d-x引擎.单点和多点触摸.瓦片地图.骨骼动画.数据库.json字符串涉及项目:飞机大战项目.超级玛丽项目.打地鼠项目.天天爱消除项目咨询qq:1840215592课程简介:Cocos2d-x视频教程通过4个种类各不相同的实战项目,展示了cocos2d-x的卓越性能.并且将CocoStudio工具的使用.单点和多点触摸.瓦片地图.骨骼动画.数据库.j