43
Go Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Embed Size (px)

Citation preview

Page 1: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Go Mobile with

C#, Visual Studio, and Xamarin

James MontemagnoPrincipal Program Manager - Xamarin,

Microsoft

Page 2: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Who’s this guy?James

Montemagno

Principal Program Manager – Xamarin, Microsoft

[email protected] motzcod.es @JamesMontemagno

Weekly development podcast

mergeconflict.fm

Page 3: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Xamarin: your complete mobile solution

Develop Test Build Distribute Monitor

Page 4: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

What is native?

Page 5: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft
Page 6: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Architecting mobile apps

Page 7: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Silo approach

iOS WindowsAndroid

Objective-C

Xcode

C#

Visual Studio

Java

Android Studio

No shared code • Many languages and development environments • Multiple teams

Page 8: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Write once, run anywhere

Lua

Javascript

Actionscript

HTML+CSS

Limited native API access • Slow performance • Poor user experience

App

generator

Page 9: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

iOS C# UI Windows C# UIAndroid C# UI

Shared C# logic

Xamarin’s unique approach

Shared C# codebase • 100% native API access • High performance

Page 10: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Code sharing stats

Mac

iOS

Android

Windows Phone

iCircuit Touch Draw

86%

14%

72%

28%

70%

30%

61%

39%

88%

12%

76%

24%

90%

10%

Page 11: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Windows APIs

Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

C#

Page 12: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

iOS – 100% API coverage

MapKit UIKit iBeacon CoreGraphics CoreMotion

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

C#

Page 13: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Android – 100% API coverage

Text-to-speech ActionBar Printing Framework Renderscript NFC

System.Data System.Windows System.Numerics System.Core System.ServiceModel

System.Net System System.IO System.Linq System.Xml

C#

Page 14: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Native performance

Xamarin.iOS does full Ahead Of Time

(AOT) compilation to produce an ARM

binary for Apple’s App Store.

Xamarin.Android takes advantage

of Just In Time (JIT) compilation on

the Android device.

ARM

BINARY

Runs natively

.APPAOT

.NET

C#

Bindings

.APKCompile

and Link

.NET

C#

Bindings

IL

+

JIT

Runs natively

Page 15: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

✓ Always up-to-date

Same-day support:

• iOS 5

• iOS 6

• iOS 7

• iOS 8

• iOS 9

Full support for:

• Apple Watch

• Apple TV

• Android Wear

• Amazon Fire TV

• Google Glass

• and much more

Page 16: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Visual Studio Xamarin Studio

Page 17: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Anything you can do in Objective-C, Swift, or Java can be done in C# and Visual Studio with Xamarin.

Page 18: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Xamarin is includedin Visual Studio

Page 19: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Open Source – open.xamarin.com

Page 20: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Sharing Code

Page 21: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

1 Assembly

Multiple Platforms

Including:

Xamarin.iOS and Xamarin.Android

Portable Class Libraries

Page 22: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Shared Projects

Page 23: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

NuGet

Page 24: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

App building time

Page 25: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Shared C# Logic

What about this stuff?

Page 26: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Platform Specific Code

What if we didn’t have to write this code?

What if we could access it from shared code?

UI+APIs UI + APIsUI + APIs

Battery

GPS

Lights

Notifications

Settings

Text To Speech

Battery

GPS

Lights

Notifications

Settings

Text To Speech

Battery

GPS

Lights

Notifications

Settings

Text To Speech

Page 27: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

TextToSpeech

Speak(“Hello World”);

AVSpeechSynthesizer SpeechSynthesizer

A Better API

Page 28: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Plugins for Xamarin

Common API

Xamarin.com/plugins

Page 29: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Plugin Time

Page 30: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Build native UIs for iOS, Android, and Windows

from a single, shared C# codebase.

Meet Xamarin.Forms

Page 31: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Xamarin + Xamarin.Forms

Traditional Xamarin approach With Xamarin.Forms:

More code-sharing, all native

iOS C# UI Windows C# UIAndroid C# UI

Shared C# Logic Shared C# Logic

Xamarin.Forms

Page 32: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

What’s included

✓ 40+ Pages, layouts, and controls

(Build from code behind or XAML)

✓ Two-way data binding

✓ Navigation

✓ Animation API

✓ Dependency Service

✓ Messaging Center

Shared C# Logic

Shared UI Code

Page 33: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Pages

Stack Absolute Relative Grid ContentView ScrollView Frame

Content MasterDetail Navigation Tabbed Carousel

Layouts

Page 34: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

ActivityIndicator BoxView Button DatePicker Editor

Entry Image Label ListView Map

OpenGLView Picker ProgressBar SearchBar Slider

Stepper TableView TimePicker WebView EntryCell

ImageCell SwitchCell TextCell ViewCell

Controls

Page 35: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Xamarin.Forms ecosystem

Page 36: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Native UI from shared code<?xml version="1.0" encoding="UTF-8"?>

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

x:Class="MyApp.MainPage">

<TabbedPage.Children>

<ContentPage Title="Profile" Icon="Profile.png">

<StackLayout Spacing="20" Padding="20"

VerticalOptions="Center">

<Entry Placeholder="Username"

Text="{Binding Username}"/>

<Entry Placeholder="Password"

Text="{Binding Password}"

IsPassword="true"/>

<Button Text="Login" TextColor="White"

BackgroundColor="#77D065"

Command="{Binding LoginCommand}"/>

</StackLayout>

</ContentPage>

<ContentPage Title="Settings" Icon="Settings.png">

<!-- Settings -->

</ContentPage>

</TabbedPage.Children>

Page 37: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

App building time

Page 38: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Integration & Delivery

Page 39: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Test

Page 40: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Build

Page 41: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Distribute & Monitor

Page 42: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Xamarin: your complete mobile solution

Develop Test Build Distribute Monitor

Page 43: Go Mobile with C#, Visual Studio, and Xamarin - f.ch9.ms Mobile with C#, Visual Studio, and Xamarin James Montemagno Principal Program Manager - Xamarin, Microsoft

Thank You! Q&A

James

Montemagno

Principal Program Manager – Xamarin, Microsoft

[email protected] motzcod.es @JamesMontemagno

Weekly development podcast

mergeconflict.fm