This is 张善友's Tencent Weibo homepage. Follow now!

张善友 收听

一介码农,躬耕于鹏城。博客:http://shanyou.c...

Xamarin.Forms入门学习路线

2016-03-02

Xamarin 介绍

Xamarin是一套跨平台解决方案,目的是使用C#语言创造原生的iOS,Android,Mac和Windows应用。

Xamarin的三个优势:

  1. Xamarin App拥有原生App的性能,因为最后生成的App中是使用的原生的控件和原生的API,所以它的体验和效率与原生App相近。

  2. 使用熟悉的C#语法,在Objective-C,Swift或者Java中能做的任何事情都可以用C#做到。除此之外,C#还有强大的IDE智能提示,lambdas语法,更自然的异步语法(Task、Async),NuGet快速获取组件。

  3. 在不同的平台上使用同样的语言还具有共享代码的优势,各个平台大约可以共享75%的APIs和数据结构代码。如果使用Xamarin.Forms来创建UI几乎可以共享100%的代码。

最终的思想,共享代码

说白了,Xamarin宣称的最大的优势就是在三个平台上使用同一种语言来共享代码,总体说来有三种技术实现:

  1. Shared Projects:可以在里面添加供三个平台公用的代码,图片和多媒体文件等,代码部分可使用#if __ANDROID__等条件编译符来指定哪一部分会编译输出到特定平台中。

  2. Portable Class Libraries(PCLs):使用更多的还是PCLs,PCLs库直接就能被各个平台所引用,一些流行的库如SQLite,Json.NET,ReactiveUI都支持PCL。

  3. Xamarin.Forms:支持你用C#代码来创建在三个平台上共享的UI界面,总共可以使用超过40个控件,它们都会在运行时映射为原生控件。

共享代码的关系就如下图:

Xamarin 安装指南

工欲善其事,必先利其器。Xamarin的安装过程参考简书上的一篇文章,内容很齐全很详细:http://www.jianshu.com/p/c67c14b3110c
Windows下的大体流程如下:

  1. Visual Studio肯定是需要的,推荐VS2013

  2. 安装jdk,修改环境变量

  3. 安装Android SDK,需要修改为国内镜像

  4. 安装NDK

  5. 安装GTK

  6. 安装Xamarin.VisualStudio

  7. 安装XamarinStudio(可选)

注意6和7的版本号很重要,必须要跟Mac端相匹配,跟破解补丁的版本也需要匹配。如果以后升级,通常只需要更新6和7就可以了。

关于Android模拟器,之前折腾过不少,最后推荐一款专用于游戏玩家的Andorid模拟器,海马玩模拟器,它的性能很好很流畅,不过游戏模拟器屏幕默认是横屏的,第一次要手动改成竖屏。

Mac下的大体流程:
如果只考虑用Mac开发iOS程序,不考虑在Mac下开发Android程序,那么大体流程如下:

  1. 安装MonoFramework

  2. 安装monotouch

  3. 安装XamarinStudio

需要注意三者之间的版本一一对应。

关于商业证书,Xamarin的价格是很昂贵的:


上面看到的价格只是针对单用户单设备平台,通常我们使用Xamarin都希望至少能用于Android和iOS两个平台,所以价格还得乘以2。

安装完毕后如果没有购买商业证书,那么可以按照上面那篇文章来破解试用,如果使用的版本号在3.11之前,那么只需要完成离线破解,IDE不需要登陆Xamarin账号,如果版本号在3.11之后,而且要编译iOS(目的是为了连接Mac端的BuildHost,如果是在Mac上开发编译iOS则不需要),那么还需要完成在线破解,具体破解流程文章里有,大体流程如下,最后提醒一下试用完了别忘了购买官方的商业授权。

离线破解流程

  1. 软件读取机器特征码;

  2. 将特征码通过邮件发给破解者,等待他回复授权证书,不付费证书有效期1个月,付费20元证书有效期10年;

  3. 将证书和对应版本的破解文件拷贝到指定目录。

在线破解流程

  1. 邮件申请开通在线服务

  2. 修改host的IP地址

  3. 导入SSL证书

  4. 登陆Xamarin账号

Xamarin.Forms 程序结构


程序的目录结构大致就可以参考这个图,最顶上一层表示三个特定平台的工程,第二层表示一个PCL或者SAP工程,通常也是Forms所在的工程,然后引用两个核心库Xamarin.Forms.CoreXamarin.Forms.Xaml,然后特定平台的工程还要引用两个特定平台的库,这个特定平台的库可以让程序集使用特定平台的API。

Xamarin.Forms 官方Demo

Xamarin提供了很多学习用的Demo,地址是:https://developer.xamarin.com/samples-all/。不过官网的网速确实太慢,在GitHub上还有更多更全的Forms的Demo:https://github.com/xamarin/xamarin-forms-samples
其中我认为几个比较重要的Demo可以学习一下:

正在加载...

扫描二维码关注Xamarin官方微信账号