cross-platform mobile development in visual studio

27
Xamarin Mobile Cross Platform Development in Visual Studio

Upload: bryancostanich

Post on 07-May-2015

4.092 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Cross-Platform Mobile Development in Visual Studio

XamarinMobile Cross Platform Development in Visual Studio

Page 2: Cross-Platform Mobile Development in Visual Studio

bryan costanichem: [email protected]: @bryancostanichslides: slideshare.net/bryancostanich/crossplatform-mobile-development-in-visual-studio

Page 3: Cross-Platform Mobile Development in Visual Studio

Sample Codegithub.com/xamarin/mobile-samples/TaskyPro

Page 4: Cross-Platform Mobile Development in Visual Studio

Xamarin Platform

Page 5: Cross-Platform Mobile Development in Visual Studio

One Language + FrameworkLINQLambdasTask Parallel Library (TPL)Compile-Time ChecksGarbage Collection

C#º

Page 6: Cross-Platform Mobile Development in Visual Studio

Native Perf. + UXCompiles Down to Native CodeNot InterpretedAll Native UX ControlsFull Platform SDK AccessiOS: Selectors/Obj-C RuntimeAndroid: JNIFast Enough for Games

º

Page 7: Cross-Platform Mobile Development in Visual Studio

Reuse StoryC# LibrariesObj-C Bindings + Binding Projects.jar Bindings + Binding ProjectsC via pInvokeC++ via Cxxi

º

Page 8: Cross-Platform Mobile Development in Visual Studio

Other PlatformsWindows - via .NETMac - via Xamarin.MacLinux - via MonoEtc.

Page 9: Cross-Platform Mobile Development in Visual Studio

Community + SupportHuge C# CommunityStackOverflow.comIRC + chat.xamarin.comGreat Support

º

Page 10: Cross-Platform Mobile Development in Visual Studio

General XPlat Considerations

Page 11: Cross-Platform Mobile Development in Visual Studio

Design Platform-Specific UX

UX in iOS != Android != Windows PhoneUX Metaphors are Different: Navigation Controller vs. Back ButtonWrite-Once, Run-Anywhere is ProblematicUsers Expect Native UX

º

Page 12: Cross-Platform Mobile Development in Visual Studio

Choose Device TargetsiPhone != iPadBeware Android FragmentationForm Factor + Capability Differences Inform UXPro-Tip: Minimize Targets

º

Page 13: Cross-Platform Mobile Development in Visual Studio

Building an X-Plat Architecture

Page 14: Cross-Platform Mobile Development in Visual Studio

ArchitectureLayersSeparation of ResponsibilityEncapsulationCore Code Sharing

º

Page 15: Cross-Platform Mobile Development in Visual Studio

VS Project/Solution Setup

Page 16: Cross-Platform Mobile Development in Visual Studio

Code Sharing - Linking vs. PCLPortal Library Projects - Take a Lot of WorkGreat Discussion Here: http://forums.xamarin.com/discussion/28/challenges-thoughts-loves/p1Takeaway: PCL is clean, but difficult to implementLinking is less “clean” but simplerOur Recommendation Now: File Linking for Most ProjectsWalkthrough Here: Linkingº

Page 17: Cross-Platform Mobile Development in Visual Studio

WP7 + AndroidNew Blank Solution: "[AppName]"New C# Lib Project: "[AppName].Core"Test Project: “[AppName].Core.Tests”New Mono for Android Project: “[AppName].Droid”New WP7 Project "[AppName].WP7"

º

Page 18: Cross-Platform Mobile Development in Visual Studio

iOS - Visual Studio 2010VS MonoTouch Plugin: https://github.com/follesoe/VSMonoTouch

º

iOS - Visual Studio 2012VS MonoTouch Plugin: https://github.com/ste8/VSMonoTouchVisual Studio SDK (to build plugin): http://msdn.microsoft.com/en-us/library/bb166441(v=vs.80).aspx

Page 19: Cross-Platform Mobile Development in Visual Studio

iOS - Plugin ConfigCreate iOS Project (on Mac): "[AppName].iOS"Copy to Solution Directory or Synch in SourceManually Edit iOS .csproj File, add Refs ->

.csproj edit:<ItemGroup> <Reference Include="mscorlib" /> <Reference Include="monotouch" /> <Reference Include="System" /> <Reference Include="System.Xml" /> <Reference Include="System.Core" /> </ItemGroup>

Remove CoreLib Reference ->

Limitations: Can Build, but No Designer, or Deployment (must use Mac for now**)

º

Page 20: Cross-Platform Mobile Development in Visual Studio

Shared Code LinkingTwo Linking Options: Auto or ManualAuto: Use Project Linker VS Add-In Add a project link, voila. (2010 + 2012)Manual: Link Files Add Files as Links

º

Page 21: Cross-Platform Mobile Development in Visual Studio

Shared Data + Data Access Layer

SQLite on iOS + Android, C# SQLIte on WP7: http://code.google.com/p/csharp-sqlite/SQLite.NET ORMUse Generics for CRUD Convenience Methods: TaskDatabase.cs

º

Page 22: Cross-Platform Mobile Development in Visual Studio

Platform AbstractionsHandling Divergence and Taking Advantage of Platform Features

Page 23: Cross-Platform Mobile Development in Visual Studio

Conditional CompilationPre-Defined Symbols: #if __ANDROID__ #if WINDOWS_PHONE #if SILVERLIGHTCan Add Additional in Build Settings

Page 24: Cross-Platform Mobile Development in Visual Studio

Class AbstractionSometimes, You Wanna Provide Different Implementations for Different PlatformsPartial ClassesPartial MethodsInterfaces

º

Page 25: Cross-Platform Mobile Development in Visual Studio

Xamarin.MobileXPlat API AbstractionsXamarin.com/MobileAPI

Contacts GeolocationCompass + Accelerome

terCamera

Notifications

Page 26: Cross-Platform Mobile Development in Visual Studio

Other XPlat LibsMonoCross - http://code.google.com/p/monocross/MvvmCross - https://github.com/slodge/MvvmCrossVernacular - https://github.com/rdio/vernacularMonoGame - http://monogame.codeplex.com/

º

Page 27: Cross-Platform Mobile Development in Visual Studio

Q+A