Sydney Mobile .Net Developers
Cross Platform Native App DevelopmentiOS, Android, Windows Phone, Windows 8
Alec TuckerHead of Mobile Product Development, APAC
White Clarke Group
Inaugural Meetup
• Introductions• Focus on Mobile, .Net, Xamarin• Planned format• Group Details• http://xamarin.meetup.com/ • http://www.meetup.com/SydneyMobileDotNetDevelopers/
• Current sponsors…
Leaders in Finance Technology
(also pretty good at supplying venue and pizza!!)
• Sign up at xamarin.com/university• Learn to build native iOS, Android, and Windows
apps with C# in just 30 days.• Live online, interactive classes with live coding.• Labs with full source code solutions.• Nearly 600 pages of curriculum documentation.• Access to Xamarin Certified Developer exam.• First March session is filling up fast.
• Vaughn Knight, Nokia Australia
Nokia & Microsoft
The Plan
• Approaches to Cross Platform Mobile Dev• WORA / WOOE
• Cross Platform AND Native• Code Sharing Approaches• File Linking• Portable Class Libraries
• MVVM Pattern Suitability• Using MVVM in iOS and Android Apps
Android Fragmentation
July 2012 – 3,997 distinct devices July 2013 – 11,868 distinct devices
Source: http://opensignal.com/reports/fragmentation-2013/
Android Fragmentation
Source: http://opensignal.com/reports/fragmentation-2013/
OS Versions Out There (iOS & Android)
Source: http://opensignal.com/reports/fragmentation-2013/
Screen Sizes (iOS and Android)
Android – Distinct Screen SizesiOS – Distinct Screen Sizes
Source: http://opensignal.com/reports/fragmentation-2013/
Approaches
• App dev – multiple platforms• Mobile Web Hybrid Native• Historically native has been overlooked as it’s assumed to mean
developing separately for each platform• Cross platform AND native…
Cross Platform AND Native
XamarinWrite one shared C# codebase, and separate platform-specific user interfaces also in C#. The result is native apps that share business logic, data access, networking code and more.
CompilationXamarin.iOS does ahead-of-time compilation to produce ARM binaries for Apple’s App Store.Xamarin.Android uses just-in-time compilation.In both cases the app is native. Not cross compiled. Not interpreted. Native.
Code Sharing Approaches
• File linking• Quick demo
• Pros• Shared code can be put within precompiler directives to control which
bits are compiled for which platforms• Can be used to implement platform specific code / features
• Cons• Can seem like a good idea, but you can quickly come unstuck and end
up with unmaintainable code…
(shamelessly pinched from James Montemagno’s presentation at the Seattle Mobile .Net Developers meetup)
Code Sharing Approaches
• Portable Class Library (PCL)• Quick demo
MVVM Pattern
ViewsUI – how to display information
View ModelsWhat information to displayFlow of interaction
ModelsData entities
Platformspecific
Portable
Data Binding
Reference
MvvmCross
• Best illustrated with a demo
Questions / Discussion / Pizza
Contact Details / References
Group
http://www.meetup.com/SydneyMobileDotNetDevelopers/
Xamarin
www.xamarin.com
MvvmCross
Slodge.blogspot.co.uk
Mvvm Background
http://blogs.msdn.com/b/kashiffl/archive/2010/11/14/mvvm-technical-description.aspx
UX Design Guidelines
Applehttps://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/
Androidhttps://developer.android.com/design/index.html
Windows Phonehttp://dev.windowsphone.com/en-us/design/principles
Further Contacts
Vaughan Knight – Nokia @vaughanknight [email protected]
Dave Glover – Microsoft [email protected]
Andrew Coates – Microsoft [email protected]
Alec Tucker [email protected] @alecdtucker