Why Native Android Development?
Why should one go for native mobile app development?
For any app, user experience and performance both are key parameters. A native mobile app is an application program that is developed with the main intention of being used on a particular platform or device. Choosing native mobile application development model would be best when you have to use the native features of the smartphone like camera, GPS, map, etc.
There are many contenders to Native Development, all have their pros and cons. But if your criteria for making an app has performance and user experience at the top, then going for native mobile development would be your best choice. Below are some of the famous Cross-Platform App development languages/frameworks with their pros and cons.
Xamarin is a Microsoft owned, California based software company founded in May 2011 by the engineers who created Mono which is a cross-platform development tool based on .NET technology.
- One Technology Stack for All Platforms
Xamarin uses C# with .Net framework to create apps for any mobile platform. This means that up to 96 percent of the source code can be re-used to speed up the engineering cycle. There is no requirement of different IDE’s if you’re building for cross-platform. You can use both Xamarin IDE (for Mac) or Visual Studio (for Windows) to start developing.The cross-platform development tools are provided as a built-in part of the IDE at no additional cost.
- Close to Native Performance
There are many web technologies that are used for hybrid development, but apps built with Xamarin can be classified as native to an extent. The performance metrics are comparable to those of Java for Android, for more information you can take a look at the tests (explained here) conducted. Moreover, Xamarin has been updating it’s development tools to match the consistency to that of other Native development tools like Android Studio and Xcode.
- Native User Experience
For any application, the native user experience is very important and if that’s not achieved then there is no use of building hybrid apps. They can simply use a mobile-optimized website and that would suffice. But this is something that Xamarin has achieved which is quite remarkable. Xamarin.Forms is a great option for business-oriented projects. It converts app UI components into the platform specific interface elements at runtime.
- Delayed Support for Latest Platform Updates
This will always be there, as it depends on the Xamarin developer team. It is nearly impossible for the third party teams to provide immediate support for the latest updates that the OS releases. It takes time to test the new updates and work on them and then release the same for the masses. So this gap will always be there.
- Limites Access to Open Source Libraries
Since Android is Open Source, it has an added advantage to its Native Developers. There are many native open source libraries that provide great support in terms of app development. On the other hand, with Xamarin you have to use only the components provided by the platform and some .Net open source resources. The choice is not rich as it is for Android, the Xamarin components provide many custom UI controls, charts, themes and other features.
- Xamarin Problems
It is already known that Xamarin community is comparatively smaller than that of Android. Hence, finding an experienced developer could be a challenge. Though the platform is growing, thanks to the support from Microsoft but still the gap is huge and will take significant time. There is a dedicated educational platform, Xamarin University that provides resources and practical training for those who are new to this technology. This support can decrease the learning curve for an experienced C# or .Net developer.
It is similar in concept to Instant Run feature in Android Studio. Every time a source file is saved, the changes are deployed immediately on the device where the app is running. This greatly expedites the feedback loop and reduces the development time. Although it works better than Instant Run, it still breaks from time to time, requiring a restart of the app.
There are currently 29,081 repositories (at the time of writing this post) on Github and 15,818 questions tagged with ‘react-native’ on Stack Overflow. This is a clear indicator that the community is increasing and growing at a very fast pace. The only downside is that support for the latest features in iOS and Android will take longer to work with React Native since libraries must be developed to do so. However, as the community expands further, I’m sure this delay will become much shorter.
You can port and Android app to iOS or vice-versa in a very easy timeframe and that too without much effort. React Native allows you to provide a different app logic and design to each OS using the Platform object, but building truly great apps for both iOS and Android will, of course, require lots of work to come up with the perfect experience for each platform.
Steep Learning Curve
No Default Styles
When we use components like the ListView, we expect elements to laid out with some basic padding and alignment, just like when we’re developing in a web browser. But that’s not the case here, we need to define each of these explicitly to create a bare-bones layout that can be identified as a UI component. Also, stylesheets in React Native can be mind-bending if you’re coming from a web background. React forces you think in terms of components and write your styles in an encapsulated way, referencing global variables where possible.
Deployment can be Tiresome
This isn’t unique to React, but on iOS, certificates and provisioning profiles can be a major hassle. On Android, things are much smoother, even though updating an internal alpha can take up to 24 hours, which is frustrating when you want to quickly deploy and test small updates on your device.
Hence, we can conclude by saying that each framework has its own pros and cons. It depends on the client requirements and the trade-off that you can make in terms of app performance and time estimations.