Hello fellow mobile developers.
Today mobile application development has been growing exponentially because of the huge consumer reachability in mobility. This has created ocean full of opportunity for companies and developers to join this mobile revolution. We want to reach as many as possible consumer which means inclusion of these three platform at least: Android, IOS, Windows.
We all know the dominance and popularity of Native which highly overwhelm HTML apps. Developing native app for major three platforms will not be cost effective as it will require java developer for android, objective-c/swift developer for IOS and .NET developer for windows and respective QA and extra resources.
So how Xamarin is going to help with this?
Xamarin lets you write cross-platform app using C# and .NET which is completely native as it provides wrapper over platform specific SDKs.
Reason to use Xamarin
=> Native UI in all three platforms.
=> Provide code sharing.
=> Full access to all Native APIs.
=> Learning curve is less.
=> Development Time and cost will be less.
=> Not limited to mobile app development.
=> Xamarin Test cloud.
=> Xamarin Insight.
=> Xamarin Profiler.
Native UI in all three platforms:
Xamarin is not like other html based cross-platform like ionic, which uses HTML5/JS/CSS for UI development for applications and then rendered in web view component of respective platform. Xamarin on other hand create native UI using native APIs for each platform as Xamarin is wrapper over our beloved SDKs.
What you can create on your platform you can create using Xamarin and end result will be exactly the same as of your platform specific. No one not even you can distinguish between the end results of those. Creation of Textview in Xamarin is as same as it is in Android and creation of UILabel will be same as of it is in IOS.
Provide code sharing:
Xamarin provide code sharing from 50% to staggering 100%. Before you go crazy by saying how it can provide 100% code sharing when we have to write IOS and Android UI component separately according to requirement, hold your horses there is something Xamarin.Forms by which we can share our UI code throughout all platforms, we will discuss about Forms in different blog. By the way 50% sharing is also not bad, this percentage depend on your selection of Xamarin product used for app development and usage of UI/Native feature(like Bluetooth, location) usage.
Full access to all Native APIs:
If you have used some HTML based cross-platform tool, you will know about its limitation of Native APIs access. With Xamarin there is no limit for access, whatever possible in respective Native platform will be possible in xamarin. With every update in Android or IOS SDKs xamarin releases its update within a week, so you don’t have to worry about the delay in any major enhancement provided by your platform (IOS/Android).Xamarin allows comprehensive exposure to native functionalities and platform-specific capabilities like iBeacons in iOS and Android Fragments in Android platform.
Learning curve is less:
As far as the learning curve is concerned Xamarin has low learning curve compare to the learning curve for Android (Java), IOS (Objective-c/Swift) and Windows (.NET/C#) combined. If you are .NET/C# developer than you just have to learn few platform specific things like application lifecycle, UI norms, the platform SDK, etc. If you are Android/IOS developer learning C# will be not be much of task as C# is also object oriented language and very similar to java, Android guys have to learn about IOS lifecycle, UI norms, the platform SDK and IOS guys have to learn about Androids.
Development Time and cost will be less:
Cost is very important for any Developer/Companies whether it’s Time or Money. Here Xamarin comes as saviour, as we need only one language C# and surprising percentage of code sharing. Many of the functional bug or non UI enhancements have to be done once not for each platform means less development time which means less money to spend on development.
Not limited to mobile app development:
Xamarin is not limited to simple mobile app development.Using xamarin you can develop following
=> Wearable app
=> Mac app
=> TvOs app
=> OpenGL games
=> SceneKit/SpriteKit/Metal Games
Xamarin Test cloud:
Test your app on over 2,000 devices.
Run your app on our huge (and growing) collection of real devices from around the world. Select devices based on form factor, manufacturer, operating system, or even popularity in your target market. Xamarin adding over 100 devices every month, and if there’s a specific device you need, Xamarin takes requests.
For more Click Xamarin Test Cloud.
Bring mobile DevOps to your apps and reliability to your users.
Distribute beta versions, collect live crash reports, get feedback from real users and analyze test coverage.
Get meaningful crash reports with the most reliable crash reporting on the market .
See how your app is used and what your testers have already covered
Communicate with your users and get feedback, support requests, and bug reports from within your app
For more Click Xamarin Insight.
Analyze and polish your C# mobile applications.
The Xamarin Profiler Preview integrates seamlessly with your existing Xamarin toolchain to collect information about your Xamarin apps. Use it to find memory leaks, resolve performance bottlenecks, and add polish to your apps before getting them out the door.
For more Click Xamarin Profiler.
One more reason for choosing Xamarin:
Sample of visual of Xamarin.Form App
|When to choose||Native(Android/IOS)||Xamarin(Form/Native)|
|Targeting only one platform||Native makes sense||Xamarin if you are planning to release on other platform soon enough|
|Basic enterprise app
(more than one platform)
|No need to waste resource||Xamarin Form will be good choice(nearly 100% code sharing)|
|Basic enterprise app
|Native make sense if already have Native Developer||Xamarin if C#/.NET developer is there|
|Daily Average App
(evenly distributed UI and Non UI code)
|If only one platform is targeted||Xamarin Native will make sense with around 60-70% code sharing|
|Heavy UI based App||Native will be always better for best performance and community support in case of heavy customized UI based App||Xamarin Native will also do but there will be less code sharing. But good thing is only C#/.NET will enough|
I am not saying Xamarin is perfect in every way but it is good enough to give it a try at least once.