Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
e-ZUKA Tech Night vol.29 - Cross platform mobile apps with Xamarin
1. Cross platform mobile apps
with Xamarin
Simone Basso
Head of Engineering @justeat_tech
@smnbss
2. Who am I
Simone Basso
Head of Engineering @justeat_tech
http://smnbss.com/
@smnbss
3. Questions:
- How many of you are mobile developers?
- How many of you are Cross Platform mobile developers?
4. How do I know about mobile
In 2011 some friends on mine won the Italian 'Global Game
Jam' (GGJ), with a game called “Smashing Planets” developed
using Microsoft XNA for the PC.
Back then I was one of the few people owning a Windows
Phone and an XBOX, so I asked them for the source code and I
made the first port to XBOX and Windows Phone.
Then I got excited and discovered a project called MonoGame,
that is an Open Source implementation of Microsoft XNA.
In a matter of a few weeks we were able to port the game to
Android and iOS
http://bit.ly/android_smashing, http://bit.ly/apple_smashing
http://bit.ly/windows_smashing
5. What is MonoGame
MonoGame (http://www.monogame.net/) is a cross platform
“Write once, play everywhere” (iOS, Android, MacOS, Linux,
Windows, Windows Store, Windows Phone, and PlayStation 4)
framework built on top of Xamarin.
It allows you to write a game once and get it to work pretty much
everywhere.
FEZ (http://fezgame.com/) is probably
the most famous game written
with MonoGame
Start
Calculate Element Position
Render Elements
6. What is Xamarin
Xamarin is a company based in San Francisco, born as a spin off from Novell when Novel decided
not to support Mono anymore.
Xamarin.iOS and Xamarin.Android are a Cross Platform implementation of the .NET Framework
based on Mono.
It’s the only framework that allows you to write NATIVE cross platform mobile apps using the
same language and sharing up to 100%* of the code.
Microsoft recently open sourced (https://github.com/Microsoft/dotnet) all the core components
of .NET and created the .NET Foundation, and made Xamarin life a lot easier, as there’ll be more
and more support for running .NET on Unix based operative systems (OSX / Linux) and mobile
operative systems (iOS / Android).
* Only with Xamarin.Forms
7. What can you build with Xamarin
Anything. Really.
- Google Watch
- Apple Watch
- Rich UI apps
Anything you can do in ObjectiveC for iOS, Java
for Android and C# for Windows (Phone, Tablets
etc come out of the box with .NET) you can do it
with Xamarin.
9. Xamarin Architecture
MVVM is the recommended pattern when building X Platform mobile apps.
It allows to decouple the UI (View) from the Business Logic (Model/ViewModel).
MVVM is the pattern used by Angular JS when you use 2-way binding.
It’s probably the only good thing left after the death of Silverlight
10. Is it really Native in iOS?
Yes
C# is compiled to CIL (common intermediate language), and
then (since Xamarin.iOS 4.0) transcompiled to LLVM.
Xamarin is basically as fast as Swift 1.2* and almost 3 times
faster than Swift 1.1, using a similar amount of memory
* https://medium.com/@harrycheung/cross-platform-
mobile-performance-testing-d0454f5cd4e9
11. Is it really Native in Android
Kind of , but it’s even better.
C# is compiled to CIL (common intermediate language), and
then run on a MonoVM on Android.
It does not touch the DalvikVM unless it’s calling some
native library
Xamarin is basically as fast as Java * and using a very similar
amount of memory
* https://medium.com/@harrycheung/cross-platform-
mobile-performance-testing-d0454f5cd4e9
12. Xamarin.Forms
If all you want to build is a very simple data driven app, you
now have a new option.
It’s called Xamarin.Forms.
You can build your UI once, using XAML (the eXtensible
Application Markup Language) and Xamarin.Forms will take
care of rendering it with a native look and feel on every
platform.
You can still override how every component is rendered and
how they behave on each platform using OnPlatform and
custom renderers.
You can reach 100% code reusability for very simple apps.
Ideal for prototyping.
14. I want to see some code
Go to http://propertycross.com/ and
https://github.com/tastejs/PropertyCross/, this is the most
comprehensive comparison of cross platform mobile
framework.
Or go and checkout this repo
https://github.com/jamesmontemagno/Hanselman.Forms.
James is one of the top Xamarin Evangelist and has built a
sample app to showcase all the best Xamarin.Forms
practices.
15. What Else - Xamarin Test Cloud
Built on Calabash, you can
test your app on hundreds
of REAL devices with a click
of a button.
You can use this, NOW, even
if you are building Native
apps without using Xamarin.
16. What Else - Xamarin Insight
Comprehensive Crash Reports and Analytics for
your App.
Step by step tracking of user activity.
17. The End
This was a very high level overview of how you can use Xamarin and all of their products to build,
test and support cross platform native apps.
Any question?
Simone Basso
Head of Engineering @justeat_tech
http://smnbss.com/
@smnbss
Editor's Notes
Microsoft XNA (a recursive acronym for XNA's Not Acronymed[2]) is a freeware set of tools with a managed runtime environment provided by Microsoft that facilitates video game development and management.
https://github.com/calabash
Calabash is an automated testing technology for Android and iOS native and hybrid applications.