原文:从零开始学Xamarin.Forms(一) 概述

    Xamarin 读
“ˈzæmərin”,是一个基于开源项目mono的能够使用C#开发的收费的跨平台(iOS、Android、Windows
Phone、Mac)解决方案。


    1.原理
        Xamarin.iOS:
            也就是之前的 MonoTouch(Mono for iOS),使⽤静态编译(Ahead-Of-Time)⽅式将C#代码编译为
ARM⼆进制代码。 
        Xamarin.Android:
            即之前的MonoDroid(Mono for Android) ,是将C# 代码编译成IL封装到MonoVM+JIT.
        
    2.优劣势
        在Xamarin2.0下开发跨平台应用,最多是逻辑层和数据访问层的代码可以共用,而最花费时间的界面搭建则需要针对不同的平台进行订制。当时Xamarin的优势是C#开发人员不需要再学习java和Objective-C了,缺点是需要了解各个平台界面的API,实际能节省下来的工作量并不多。
        幸运的是Xamarin3.0带来了Xamarin.Forms,界面部分也能共享一套代码了。真正能够达到“write
your code once, and present native UIs on each platform.”(一次编写,在各平台使用原生控件展现)的效果。这也是Xamarin最吸引我的地方。目前CSDN为Xamarin在中国大陆的代理,正在开展一些相应的培训。

        当然,有优势肯定也有劣势。目前Xamarin.Forms的版本为1.2.2
Prerelease
3 版,bug相当多(但更新较快),提供的控件不多,最基本的Radio Button和CheckBox没有(官方解释:这两个不是每个平台都有的控件),需要自己重写Renderer。在Android平台上,使用Xamarin.Forms开发稍微复杂些的应用,启动速度较慢,让人不得不为它设计一个启动界面。还有就是Xamarin的中文文档几乎没有,其中大部分资料来自台湾。CSDN上的论坛才20条帖子...目前有问题比较靠谱的解决方法是在它的官方论坛或者加QQ群:385020493提问。

   
    3.开发环境
        Xamarin可以在Windows和Mac上进行开发:
        Windows:    Xamarin Studio 或 Xamarin for Visual Studio(2010 -2013) Plugin(推荐)
                Mac:    Xamarin Studio

    4.技术基础
        C#基础,能够创建WCF、rest服务、掌握C#5.0,.net4.5后async、await关键字。学过Silverlight或wpf的最好:因为它们布局文件都使用xaml,包括设计模式也是相同的MVVM,了解Binding数据绑定、Command命令、DI依赖注入、DP依赖属性等等内容。
知识结构目录:AOT静态编译 对应中文

   5.系统支持
  • Android 4.0 or higher
  • iOS 6.1 or higher
  • Windows Phone 8 (using Visual Studio)


从零开始学Xamarin.Forms(一) 概述的更多相关文章

  1. 从零开始学Xamarin.Forms(五) 技巧

    原文:从零开始学Xamarin.Forms(五) 技巧 由于HTML5规范于2014年10月终于定稿,公司.net开发人员较少,国内外已有了较为成熟的UI框架.手机软件硬件的快速发展等等原因,所以我就 ...

  2. 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)

    原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)  1.安装对应dll     Update-Package Xama ...

  3. 从零开始学Xamarin.Forms(三) Android 制作启动画面

    原文:从零开始学Xamarin.Forms(三) Android 制作启动画面     Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1.将启动画面的图片命名为:s ...

  4. 从零开始学Xamarin.Forms(二) 环境搭建、创建项目

    原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建:     1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...

  5. 从零開始学Xamarin.Forms(一) 概述

        Xamarin 读 "ˈzæmərin",是一个基于开源项目mono的可以使用C#开发的收费的跨平台(iOS.Android.Windows Phone.Mac)解决方式. ...

  6. 从零開始学Xamarin.Forms(二) 环境搭建、创建项目

    一.环境搭建 Windows下环境搭建:     1.下载并安装jdk.Android SDK和NDK.当然还须要 VS2013 update 2(VS2010.VS2012均可)以上. a.  最新 ...

  7. 老司机学新平台 - Xamarin Forms开发框架之MvvmCross插件精选

    在前两篇老司机学Xamarin系列中,简单介绍了Xamarin开发环境的搭建以及Prism和MvvmCross这两个开发框架.不同的框架,往往不仅仅使用不同的架构风格,同时社区活跃度不同,各种功能模块 ...

  8. 从零开始学 Web 之 JavaScript(一)JavaScript概述

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  9. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

随机推荐

  1. Lucene.Net 2.3.1开发介绍 —— 三、索引(二)

    原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(二) 2.索引中用到的核心类 在Lucene.Net索引开发中,用到的类不多,这些类是索引过程的核心类.其中Analyzer是索引建立的 ...

  2. Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net

    原文:Lucene.Net 2.3.1开发介绍 -- 一.接触Lucene.Net 1.引用Lucene.Net类库找到Lucene.Net的源代码,在“C#\src\Lucene.Net”目录.打开 ...

  3. 带着项目学PHP第九讲 - 如何给ecshop的wap版本首页和商品页添加商品图片

    ecshop的wap版本自身不带图片, 所以看起来光秃秃的,非常不讨人喜欢, 网络上关于wap的模板就不像pc版那么多,容易找到, 而且能找到的都是要花钱买的, 虽然这个小小的改动不能替代找个合适的模 ...

  4. python 多线程一(lock)

    ''' Created on Jun 17, 2013 @author: smp ''' #-*- coding:utf-8 -*- import threading import time coun ...

  5. oracle检查点队列与增量检查点【转载】

    oracle检查点队列与增量检查点 今天是2013-09-04,这几天一直心里安顿不下来,今天还好了,可以自己安静的学习一下oracle,在此记录一下学习笔记.这篇文章我不知道在那转载的,一直都留在我 ...

  6. 进一步解 apt-get 的几个命令

    用 apt-get 也非常久了,没多想它的实现,近期遇到 gstreamer 装不上的问题.才多看看了它 apt-get 就是从网上下载包,并安装到本地 手工下载 dpkg 包,而后 "dp ...

  7. 解决Eclipse中文乱码的方法

    (1)设置Project的编码格式: 在 Workspace中新建的项目默认继承Workspace的编码设置.我们也能够单独更改某个项目的编码格式.右键点击project.选择 Properties, ...

  8. [c++语法]类

    什么是类 类 是 面向对象的基础.c里面是没有对象的,只有数据,即静态的死物. 从面向过程升级到面向对象后,有了对象的概念,对象是数据与方法的合体,是动态的活物. 类代表着一类事物的特征.而对象,是类 ...

  9. thinkPHP四种URL访问方式(二)

    原文:thinkPHP四种URL访问方式(二) 四.url的4种访问方式      1.PATHINFO 模式 -- (重点) http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/ ...

  10. JavaScript之面向对象1

    学习过Java程序的开发人员都知道面向对象是怎么回事. 面向对象无非就是封装.多态.继承 比如: 声明一个类: class Person{ //私有成员 private String name; pr ...