Xamarin
Mobile Cross Platform Development
bryan costanich
bryan costanich
em: bryanc@xamarin.com
bryan costanich
em: bryanc@xamarin.com
tw: @bryancostanich
bryan costanich
em: bryanc@xamarin.com
tw: @bryancostanich
http://www.slideshare.net/bryancostanich/cross-
platform-development-with-xamarin
bryan costanich
em: bryanc@xamarin.com
tw: @bryancostanich
http://www.slideshare.net/bryancostanich/cross-
platform-development-with-xamarin
MWC 2012
IOS (IPHONE + IPAD), ANDROID, WP7
SHARED CODEBASE + ONE LANGUAGE
Sample Code
github.com/xamarin/mobile-samples/MWC
Xamarin Platform
One Language +
Framework
One Language +

                 C#
Framework
One Language +

                 C#
Framework
LINQ
One Language +

                 C#
Framework
LINQ
Lambdas
One Language +

                              C#
Framework
LINQ
Lambdas
Task Parallel Library (TPL)
One Language +

                              C#
Framework
LINQ
Lambdas
Task Parallel Library (TPL)
Compile-Time Checks
One Language +

                              C#
Framework
LINQ
Lambdas
Task Parallel Library (TPL)
Compile-Time Checks
Garbage Collection
Native Perf. + UX
Native Perf. + UX
Compiles Down to Native Code
Native Perf. + UX
Compiles Down to Native Code
Not Interpreted
Native Perf. + UX
Compiles Down to Native Code
Not Interpreted
Native UX Controls
Native Perf. + UX
Compiles Down to Native Code
Not Interpreted
Native UX Controls
Full Platform SDK Access
Native Perf. + UX
Compiles Down to Native Code
Not Interpreted
Native UX Controls
Full Platform SDK Access
Selectors/Obj-C Runtime + JNI
Reuse Story
Reuse Story
Reuse Story
C# Libraries
Reuse Story
C# Libraries
Obj-C Bindings + Binding Projects
Reuse Story
C# Libraries
Obj-C Bindings + Binding Projects
.jar Bindings + Binding Projects
Reuse Story
C# Libraries
Obj-C Bindings + Binding Projects
.jar Bindings + Binding Projects
C via pInvoke
Reuse Story
C# Libraries
Obj-C Bindings + Binding Projects
.jar Bindings + Binding Projects
C via pInvoke
C++ via Cxxi
Community +
Support
Community +
Support
Huge C# Community
Community +
Support
Huge C# Community
StackOverflow.com
Community +
Support
Huge C# Community
StackOverflow.com
IRC
Community +
Support
Huge C# Community
StackOverflow.com
IRC
Great Support
Modern IDEs
Modern IDEs
Modern IDEs
Visual Studio
Modern IDEs
Visual Studio
MonoDevelop
Modern IDEs
Visual Studio
MonoDevelop
Debugging
Modern IDEs
Visual Studio
MonoDevelop
Debugging
AutoComplete
Modern IDEs
Visual Studio
MonoDevelop
Debugging
AutoComplete
Refactoring
Modern IDEs
Visual Studio
MonoDevelop
Debugging
AutoComplete
Refactoring
Project Management
Modern IDEs
Visual Studio
MonoDevelop
Debugging
AutoComplete
Refactoring
Project Management
Integrated Source Control
Modern IDEs
Visual Studio
MonoDevelop
Debugging
AutoComplete
Refactoring
Project Management
Integrated Source Control
Designer + Integration
Mobile XPlat Project and
Architectural Setup
Architecture
Architecture
Layers
Architecture
Layers
Separation of Responsibility
Architecture
Layers
Separation of Responsibility
Encapsulation
Architecture
Layers
Separation of Responsibility
Encapsulation
Core Code Sharing
IDE Choice
IDE Choice
Mac : iOS + Android via MonoDevelop
IDE Choice
Mac : iOS + Android via MonoDevelop
Windows : Android via MonoDevelop or Visual Studio
IDE Choice
Mac : iOS + Android via MonoDevelop
Windows : Android via MonoDevelop or Visual Studio
iOS Support in Windows Coming Soon
Solution Setup
Solution Setup
Core Library (Core.iOS, Core.Android, Core.WP)
Solution Setup
Core Library (Core.iOS, Core.Android, Core.WP)
File-Linking
Shared Data +
Data Access Layer
Shared Data +
Data Access Layer
SQLite (C# on WP7)
SQLite.NET ORM
Platform Abstractions
Handling Divergence and Taking Advantage of Platform
Features
Class Abstraction
Class Abstraction
Partial Classes
Class Abstraction
Partial Classes
Partial Methods
Class Abstraction
Partial Classes
Partial Methods
Interfaces
Conditional
Compilation
Conditional
Compilation
__ANDROID__
Conditional
Compilation
__ANDROID__
WINDOWS_PHONE
Conditional
Compilation
__ANDROID__
WINDOWS_PHONE
SILVERLIGHT
Xamarin.Mobile
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI



  Contacts
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI



  Contacts      Geolocation
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI



                               Compass +
  Contacts      Geolocation
                              Accelerometer
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI



                               Compass +
  Contacts      Geolocation                   Camera
                              Accelerometer
Xamarin.Mobile
XPlat API Abstractions
Xamarin.com/MobileAPI



                               Compass +
  Contacts      Geolocation                   Camera   Notifications
                              Accelerometer
Other XPlat Libs
Other XPlat Libs
MonoCross - http://code.google.com/p/monocross/
Other XPlat Libs
MonoCross - http://code.google.com/p/monocross/
Vernacular - https://github.com/rdio/vernacular
Other XPlat Libs
MonoCross - http://code.google.com/p/monocross/
Vernacular - https://github.com/rdio/vernacular
MonoGame - http://monogame.codeplex.com/
Wrap-Up
Future Features
Future Features
iOS on Windows
Future Features
iOS on Windows
Portable Library Project (PLP) Support
Future Features
iOS on Windows
Portable Library Project (PLP) Support
iOS Designer (Mac + Windows)
Future Features
iOS on Windows
Portable Library Project (PLP) Support
iOS Designer (Mac + Windows)
More Xamarin.Mobile
Future Features
iOS on Windows
Portable Library Project (PLP) Support
iOS Designer (Mac + Windows)
More Xamarin.Mobile
Add-On Store
Q+A

Cross Platform Development with Xamarin

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 \n
  • #6 \n
  • #7 \n
  • #8 \n
  • #9 \n
  • #10 \n
  • #11 \n
  • #12 \n
  • #13 \n
  • #14 \n
  • #15 \n
  • #16 \n
  • #17 \n
  • #18 \n
  • #19 \n
  • #20 Fast Enough for Games\nNative UX means that apps look like they belong\nFull platform SDK Access means that anything you can do in Obj-C on iOS or Java in Android, you can do here. Animation libraries, Media libraries, etc. \n
  • #21 Fast Enough for Games\nNative UX means that apps look like they belong\nFull platform SDK Access means that anything you can do in Obj-C on iOS or Java in Android, you can do here. Animation libraries, Media libraries, etc. \n
  • #22 Fast Enough for Games\nNative UX means that apps look like they belong\nFull platform SDK Access means that anything you can do in Obj-C on iOS or Java in Android, you can do here. Animation libraries, Media libraries, etc. \n
  • #23 Fast Enough for Games\nNative UX means that apps look like they belong\nFull platform SDK Access means that anything you can do in Obj-C on iOS or Java in Android, you can do here. Animation libraries, Media libraries, etc. \n
  • #24 Fast Enough for Games\nNative UX means that apps look like they belong\nFull platform SDK Access means that anything you can do in Obj-C on iOS or Java in Android, you can do here. Animation libraries, Media libraries, etc. \n
  • #25 Need better graphic for this.\n
  • #26 Need better graphic for this.\n
  • #27 Need better graphic for this.\n
  • #28 Need better graphic for this.\n
  • #29 Need better graphic for this.\n
  • #30 Need better graphic for this.\n
  • #31 \n
  • #32 \n
  • #33 \n
  • #34 \n
  • #35 Need Visual Studio Screenshot\n
  • #36 Need Visual Studio Screenshot\n
  • #37 Need Visual Studio Screenshot\n
  • #38 Need Visual Studio Screenshot\n
  • #39 Need Visual Studio Screenshot\n
  • #40 Need Visual Studio Screenshot\n
  • #41 Need Visual Studio Screenshot\n
  • #42 Need Visual Studio Screenshot\n
  • #43 Need Visual Studio Screenshot\n
  • #44 Need Visual Studio Screenshot\n
  • #45 Need Visual Studio Screenshot\n
  • #46 \n
  • #47 \n
  • #48 \n
  • #49 \n
  • #50 \n
  • #51 \n
  • #52 \n
  • #53 \n
  • #54 Show Project + File-Linking Demo\n
  • #55 Show Project + File-Linking Demo\n
  • #56 \n
  • #57 \n
  • #58 Show Example\n
  • #59 Show Example\n
  • #60 Show Example\n
  • #61 Show Built in ones.\n
  • #62 Show Built in ones.\n
  • #63 Show Built in ones.\n
  • #64 \n
  • #65 \n
  • #66 \n
  • #67 \n
  • #68 \n
  • #69 \n
  • #70 \n
  • #71 \n
  • #72 \n
  • #73 \n
  • #74 \n
  • #75 \n
  • #76 \n
  • #77 \n
  • #78 \n
  • #79 \n