building mobile cross-platform apps forios, android & windows in c# with xamarin
TRANSCRIPT
Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xamarin
Nick LandrySenior Technical Evangelist, MicrosoftAgeofMobility.com@ActiveNick – github.com/activenick
Session Agenda
Audience poll…
Silo Approach:
Build the Same Apps Multiple Times
The Siloed approach: Build native apps multiple timesMultiple teams and multiple code bases are expensive and slow
+
+
-
✗
Write Once,Run AnywhereApproach
Lowest Common Denominator
Browser Fragmentation
• App Generation.
• Web Browser in a
Native Wrapper +
Platform APIs.
The write-once-run-anywhere approachHTML Hybrid scenarios (Semi-native apps) like Cordova (i.e. PhoneGap)
✗
Xamarin’s Unique Approach
Shared C# codebase • 100% native API access • High performance
iOS C# UI Windows C# UIAndroid C# UI
Shared C# Mobile C# Server
Linux/Mono
CoreCLRAzure
Shared C# Client/Server
C# and Xamarin’s unique approachThe best of all worlds
How Does Xamarin Run C# on iOS or Android?
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#
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#
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#
All 3 characteristics are required for a truly native app
Xamarin is native in all 3 ways
Native User Interface
Apps are built with standard, native
user interface controls for easy and
familiar interactions
Apps have access to the full spectrum of
functionality exposed by the underlying
platform and device
Apps leverage platform-specific hardware
acceleration, and are compiled as native
binaries, not interpreted at runtime.
High-fidelity API Access
Native Performance
Xamarin exposes 100% of the native APIs
for iOS, Android and Windows
Anything you can do in Objective-C or Java
can be done in C# with Xamarin using Visual Studio
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.
Always Up-to-Date
Full support for:Google Glass, Android Wear, Amazon Fire TV
•
•
•
•
•
Xamarin: How much?
Yes!
Development Environment
Xamarin Studio
PC or Mac
Visual Studio Plugin
VS 2010/2012/2013/2015
Xamarin Studio
Xamarin + Xamarin.FormsWith Xamarin.Forms:
more code-sharing, native controlsTraditional/Classic Xamarin approach
Shared UI Code
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# App Backend
(non-UI code)
Shared UI 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>
Native UI from shared code
At runtime, each Xamarin.Forms page and its
controls are mapped to platform-specific native
user interface elements
Use a single API to generate native, platform-specific user interfaces
Xamarin.Forms Pages
Content MasterDetail Navigation Tabbed Carousel
UIViewController Activity Page
Xamarin.Forms Layouts
Stack Absolute Relative Grid ContentView ScrollView Frame
40+ Xamarin.Forms Controls
ActivityIndicator BoxView Button DatePicker Editor
Entry Image Label ListView Map
OpenGLView Picker ProgressBar SearchBar Slider
Stepper TableView TimePicker WebView EntryCell
ImageCell SwitchCell TextCell ViewCell
Shared Projects
NuGet
Portable Class Libraries
Choosing a Code Sharing Option
Native Dev: Platform Tools or Xamarin?
Platform Tools (Windows, iOS, Android)
• Default native method to build apps
• Free development tools & SDKs
• Requires learning at least one language &
SDK per platform (C#, Java, Objective-C)
• Design, develop & maintain completely
separate apps for each platform
• More learning resources available
• Books, web sites, blogs, training,
StackOverflow, videos, larger
community, etc.
• Yet, iOS developers are (kinda) starting all
over with Swift
Xamarin / Mono
• Reuse existing C# skills & source code (but
you have to know C#)
• Need to buy an additional tool: extra cost
• Need to learn new tools & techniques
• Still need to learn the specifics of each
platform SDK, app architecture & lifecycle
• Fewer third-party libraries available
• Built-in GUI designer for iOS and Android
• Xamarin.Forms provides native shared Uis,
but there is no XAML designer (yet)
• Vendor lock-in / dependency
Mobile Strategy Considerations
Audience
• General Consumer
Market
• Niche Consumer
Market
• Enterprise Users
• BYOD
Objectives
• Marketing “Checklist”
Apps
• Brand “Reach” Apps
• Weekend Warrior Apps
• Apps for Profit
• Mobile Revolution
Apps
Other Considerations
• Mobile Population
Coverage Target &
Desired Reach
• Expertise
• Resources
• Timeframe
Summary
github.com/ActiveNick/MyWeatherNUI
github.com/ActiveNick/MyWeather
github.com/ActiveNick/BingTranslateDemo
github.com/ActiveNick/HelloWeather
github.com/ActiveNick/AzureChatrforWindows
github.com/jamesmontemagno/MyStocks.Forms
github.com/jamesmontemagno/MyExpenses-Sync
Session Demos
http://channel9.msdn.com/events/Build/2015/3-770
http://aka.ms/ch9xam2015-1
http://aka.ms/ch9xam2015-2
http://aka.ms/ch9xam2015-3
http://aka.ms/ch9xam2015-4
http://channel9.msdn.com/Search?term=xamarin#ch9Search&lang-en=en
Xamarin Videos for Developers
http://xamarin.com/download
http://docs.xamarin.com
http://evolve.xamarin.com
http://xamarin.com/university
http://blog.xamarin.com
http://motzcod.es
http://weblogs.asp.net/wallym
http://www.gregshackles.com
Xamarin Resources
Xamarin Developer Certifications:Be part of an Elite Developer Community
Students have the option to take a certification test and become Xamarin certified. Xamarin skills are increasingly in demand – certifications let the market know you represent top talent.
Online Microsoft training delivered by experts to help technologists continually learn
Hundreds of courses for developers, IT Pros, students, entrepreneurs and enthusiasts
11 different languages
More than 3M students registered
Build your own Learning Plan
All free!
Cross-Platform Development withXamarin & Visual Studio
aka.ms/MVAxamarin
http://www.microsoftvirtualacademy.com
• Universal Windows App Developmentwith Cortana and the Speech SDK
• Available for on-demand viewing now:
http://aka.ms/CortanaMVA
Recommended Xamarin Books
http://aka.ms/Xs5v48
Xamarin Mobile Application Development for Android
(Mark Reynolds)
http://aka.ms/Ndl0jn
iOS Development with Xamarin Cookbook
(Dimitris Tavlikos)
http://aka.ms/S8akz1
Xamarin Cross-Platform Application Development
(Jonathan Peppers)
http://aka.ms/Sl5aj9
Thank You!
Slides are posted on SlideShare. Demos are on GitHub.
SlideShare: www.slideshare.net/ActiveNick
Blog: www.AgeofMobility.com
Twitter: @ActiveNick
Mobile Apps: www.bigbaldapps.com
LinkedIn: www.linkedin.com/in/activenick
GitHub: github.com/ActiveNick
Email: [email protected]