3 ms·
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. Firs
by jaegerpicker 11y ago
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.