Mobile App Development
With nothing much specific to develop in mind, today I decided to do some mobile app development.
Immediately after I made this decision, I was bombarded with waves of questions regarding which language/framework I should pick. The mobile app development market is full of platforms like Android Native Java/Kotlin, React Native, Xamarin, Ionic and NativeScript and many more. Although I have already worked with Phonegap, Xamarin, Ionic and even Android Native in the past, my current mind set is that I am not at ease with any of those.
My Experience With Various Cross-Platform App Development
After a few years, I was again delighted when Xamarin became freely available in Visual Studio. Coming from a .NET background, I immediately dived into it. It was definitely a lot better than Phonegap but definitely not as easy as I had expected just because it was .NET. It had it’s own platform specific libraries that I needed to master. I would have given time to master those, however, there was this another big issue with Xamarin.
Just simple package downloads or updates from Nuget would explode and blow up my projects and they would stop building. Even though I tried to stick with it, I couldn’t find much resources/community around it. And that was the end of Xamarin for me.
I believe I had all the necessary setup in my machine like Android SDKs and Gradle, but I kept facing different issues when I tried building for Android. I had written my app in just a few days but couldn’t get it to build even after trying for 4 days. And that was it for me with Ionic.
One good thing I got from Ionic though was I got to learn Angular which I absolutely love.
After that I also tried NativeScript but again I had similar issues as that of Ionic. I didn’t even write a single line of code on it because I couldn’t setup my environment for it.
No experience here. But from what I have read, I would need to learn React first then move onto React native. Plus it has it’s own learning curves.
After pursuing all these frameworks and platforms, I realized that if I had actually picked up Android Native development platform back in 2015, I would have been at least quite proficient with it by now. So, I decided to give it a try. I mean I can already code in C#, how hard would JAVA be?
After downloading Android Studio and playing around with it, I was able to create an app (IT Work Remotely) and push it to Play Store. Although there is a large learning curve associated with developing Native apps, in my experience, it is definitely worth learning and developing on the native platform itself if somebody wants to stick with Mobile App Development industry.
Nothing (at least the ones I tried) can compare to Native app development. And I am not just talking about performance-wise. From the perspective of learning curve as well, I think one has to spend equal amount of time to master either Cross-Platform framework or Native framework. So, why not rather invest that time and energy on learning the Native framework?
I know it is definitely tempting to write once and deploy in multiple phone environments. However, with my own experience, I have never deployed anything on iOs play store ($99/month Developer fee!! Are you kidding me?) and I think I will mainly stick with Android phones for now, at least for the apps that I create for fun.
So, if I am just targeting Android, I feel like there isn’t much use for me to learn a Cross-Platform platform given that the Cross-Platform environments are always either lacking in native performance or have unpredictable environment/build failures.
Yet, again for someone like me, who isn’t much proficient with JAVA or Kotlin, developing complex apps on Android demands long hours of research and study. I would have loved if I could build mobile apps with just the tools that I already had in my pocket. That’s the only reason I am not at ease with Android Native development.
With that thought, coming back to today, I actually had decided to give Ionic one more shot (just for the sake of Angular).
After installing the framework on my machine and following their tutorial to create a “Hello World” app, guess what I received?
Good bye cross-platform?