基于xamarin 2.0的跨平台移动开发 -...

16
基于Xamarin 2.0的跨平台移动开发 华南师范学络教育学院程序开发总监 卢建晖 13420星期六

Upload: doduong

Post on 06-Feb-2018

234 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

基于Xamarin 2.0的跨平台移动开发

华南师范⼤大学⺴⽹网络教育学院程序开发总监 卢建晖

13年4月20⽇日星期六

Page 2: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

概要

• ⾃自我介绍

• 谈谈移动开发

• Mono

• Xamarin

• CrossPlatform

13年4月20⽇日星期六

Page 3: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

⾃自我介绍

关于我司的应⽤用可以访问 http://app.gdou.com

13年4月20⽇日星期六

Page 4: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

移动开发

iOS

2007 .9

Android

2008 .10

WindowsPhone

2010 .10

Windows 8/RT

2012.10

13年4月20⽇日星期六

Page 5: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

Windows 8/RT

iOS

Windows Phone

Android

WinJS+Html5/C#+XAML(Visual Studio)

C#+XAML(Visual Studio)

Java+XML(Eclipse)

Objective-C+.xib/.storyboard(Xcode)

13年4月20⽇日星期六

Page 6: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

iOS

Windows(Windows Phone/Windows 8)

Android

企业内部的移动开发

proj1

proj2

proj3

proj4

proj1 proj2

proj3 proj4

proj4proj3

proj1 proj2

13年4月20⽇日星期六

Page 7: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

企业在移动终端开发中所⾯面临的问题

平台越多,开发成本就越⼤大

内部员⼯工就是码农,需要不断学习,⽽而且培训费⽤用⾼高

管理统筹难

......................

⽤用⼀一种语⾔言,便捷的开发⼯工具去简化开发团队?

13年4月20⽇日星期六

Page 8: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

Mono

Mono是跨平台的.net 开发环境,之前是⼀一个由Novell 公司主持的项⺫⽬目。该项⺫⽬目的⺫⽬目标是创建⼀一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET ⼯工具,包括C# 编译器和共通语⾔言执⾏行平台。与微软的.NET Framework 不同,Mono 项⺫⽬目不仅可以运⾏行于Windows 系统上,还可以运⾏行于Linux,FreeBSD,Unix,Mac OS X 和Solaris。

App

Class Library

Common Language Runtime

Operating System

MonoTouch

MonoAndroid

MonoWeb

C#

13年4月20⽇日星期六

Page 9: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

MonoTouch(Mono for iOS)使⽤用静态编译(Ahead-Of-Time)⽅方式将C#代码编译为 ARM⼆二进制代码。

这⾥里要说明⼀一下,使⽤用MonoTouch创建的每⼀一个应⽤用程序都是独⽴立的,也就是说应⽤用程序所需要的东⻄西都要打包,之所以这样是因为iPhone不允许使⽤用共享库。MonoTouch通过绑定⽅方式向C#公开iPhone的原⽣生库,因⽽而不⽤用在语⾔言之间做转换。

MonoDroid(Mono for Android)是将C# 代码编译成IL封装到MonoVM+JIT.

13年4月20⽇日星期六

Page 10: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

MonoTouch Demo

13年4月20⽇日星期六

Page 11: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

为何选择Mono

UI层(原⽣生UI)

UI逻辑组织

核⼼心

数据层

数据逻辑层

安全层

业务逻辑层

服务访问层

虽然每个移动端的UI展现不同,但是核⼼心功能都是⼀一样,⽽而这些代码是可以重⽤用 。虽然可能调⽤用类库不⼀一样,但是也可以通过判断预加载进⾏行处理。

13年4月20⽇日星期六

Page 12: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

iOSUI层(原⽣生UI)

UI逻辑组织

核⼼心数据层

数据逻辑层安全层 业务逻辑层

服务访问层

AndroidUI层(原⽣生UI)

UI逻辑组织

WindowsPhoneUI层(原⽣生UI)

UI逻辑组织

Windows 8/RTUI层(原⽣生UI)

UI逻辑组织

通过C#实现跨移动平台的逻辑代码共享

13年4月20⽇日星期六

Page 13: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

Xamarin 2.0 新的开始

新的Xamain Studio

作为Visual Studio 的插件,进⾏行iOS/Android的开发

组件商城(http://components.xamarin.com/)

aync / await

13年4月20⽇日星期六

Page 14: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

再谈跨平台设计模式MVC / MVP / MVVM

代码共享file share link

异步

虽然不同平台在异步线程⽅方⾯面有不同,但是也可以通过C#的语⾔言特性去优化

Xamarin.Mobile

13年4月20⽇日星期六

Page 15: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

在Visual Studio 上的简单Demo

13年4月20⽇日星期六

Page 16: 基于Xamarin 2.0的跨平台移动开发 - course.gdou.comcourse.gdou.com/blog/image/luk/xamarin.pdf · 准(Ecma-334 和Ecma-335)的.NET 具,包括 C# 编译器和共通语执平台。

谢谢

13年4月20⽇日星期六