

Ask HN: Is native Android development worth learning today? - ducktypedlogic

With cross development frameworks like Xamarin, Ionic, PhoneGap&#x2F;Cordova and React Native around, is it still worth learning native Android development?
======
jaegerpicker
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
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
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](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
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
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

      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

~~~
gusmd
Sorry for taking so long, here it is:
[https://news.ycombinator.com/item?id=9861042](https://news.ycombinator.com/item?id=9861042)

By the way, it would be great if HN had some sort of notification for when you
get replies.

------
alistproducer2
If you want to make a living doing mobile, yes. If you are making personal
apps then, no.

