top | item 9873763

Ask HN: Is native Android development worth learning today?

6 points| ducktypedlogic | 10 years ago | reply

With cross development frameworks like Xamarin, Ionic, PhoneGap/Cordova and React Native around, is it still worth learning native Android development?

8 comments

order
[+] jaegerpicker|10 years ago|reply
I'll be more moderate than I thought I'd ever be and say it depends on your needs for the app you are building. Also depends on your definition of Native.

First Native can mean a lot of things in Android Land. For instance you mention Xamarin and React Native. Both of those are generating actual native binaries (googles byte code version of Java byte code) or rather React Native for android will when it's actually a thing, it's not released yet but should be somewhat soon. They are both a way of writing Native code in another language (C#, Js) rather like Scalriod let's you write a native Android App in Scala. The are a fundamentally different approach than Ionic or PhoneGap which are HTML5/JS/CSS based webapps that are packaged to be app-like. Also in android development Native is sometimes used to refer to C++ ndk development. Go is also being used sometimes (go 1.5 needed to support it) for native (meaning cpu native binary instead of byte code) code.

If you plan on being a Mobile developer as your day job than I say absolutely. If I'm hiring a dedicated Android dev, I'd expect that they are an expert in Android Java. Bonus points for knowing C++ ndk or Go ndk development because then I'm not really restricted as to what I could ask them to do on the platform. Some things like converting video in real time or intense calculations will absolutely require ndk level of performance.

If your app is mostly using a rest api or collecting form data, then ndk is way overkill. Rather it's a native experience depends on your goal. If you want the latest in Android API's or features or you want the smoothest most native feeling app, then Java is really the only choice. If you are more concerned about sharing code with and iOS project then Xamarin or soon React Native are the best choices. Lastly if all you really care about is having an "app" for a SaaS or other webapp then PhoneGap or Ionic would be a valid choice. For me I'd never use them but I'd rather have a great app or no app at all. I would consider Xamarin or React Native though, I think the user experience is close enough to a standard sdk app on both platforms that if you aren't a mobile game or mobile app based startup that it is probably good enough. Games are exception in that, there are a ton of cross platform options that are awesome. Unreal, Unity, Cocos, even phonegap or ionic packaging up a html5 game engine like phaser are all very good choices.

[+] on_and_off|10 years ago|reply
Nobody knows where the mobile ecosystem will be in 5 years, but right now native is the way to go for 'ambitious' apps. Not only do all the major mobile teams I know write their app in Native Obj-c/Java, but also those that tried to use cross development platforms sooner or later decided that it was not worth it and restarted from scratch with native technology.

Maybe we will have some day a cross platform toolkit without any serious downside, but right now native is still the way to go.

If you are building a small app with limited resources, something like Xamarin might be a good compromise.

[+] skillachie|10 years ago|reply
Based on previous experience it all depends on what your app will be doing/used for. For some use cases your application might need to be integrated with C/C++ for performance reasons [https://developer.android.com/tools/sdk/ndk/index.html] in that case yes

However if your just building apps to display a few pictures, articles and minor social aspects probably not.

In my opinion it would be good to know native Android development instead of being at the mercy of frameworks. There will be a time when you meet some limitation but have no choice but to accept it or start writing native good which will delay your app significantly. At least with native Android you have more control.

[+] smt88|10 years ago|reply
I haven't used the others, but Appcelerator's Titanium compiles to native code and allows you to hook in native modules. You can use modules that other people have written or write your own. I first used it in 2011 when it was incredibly buggy, but even then it felt ridiculous to learn native development instead of creating an 80%+ shared code base for iOS and Android.
[+] gusmd|10 years ago|reply
IMHO, these frameworks still cannot match the UX of a native app. Just like a HN post one of these days about desktop apps still being relevant despite web apps, native mobile apps have their use cases and if you really care about great UX you will want to develop native.

Another point is that, with any 3rd party framework, you might eventually come across some limitation that will make you regret your decision of not going native from the beginning.

[+] ducktypedlogic|10 years ago|reply

  Just like a HN post one of these days about desktop apps still being relevant despite web apps
Interesting. Do you have a link to that post?

Thanks

[+] alistproducer2|10 years ago|reply
If you want to make a living doing mobile, yes. If you are making personal apps then, no.