App stack for native app development on Android devices
When we develop a native app for Android, we have choices when it comes to choosing the best app stack. First we select the toolkit/IDE, then the programming language and finally the software development kit (SDK).
Toolkit / IDE: Android Studio, Unreal Engine, Unity
Android Studio is the default development kit for native app development. It provides a perfect toolbox where you can code the app, drag and drop UI/UX elements, debug errors, deploy your app and much more.
Android Studio is free to use and will give you the fastest access to new features/functionality released by Google, that you can include in your app as soon as they are available (with cross-platform apps you will have to wait until third-party providers embed them).
You will also enjoy a performance boost by developing natively due to code optimization.
Unreal Engine and Unity are both tool kits targeted game development. They are highly optimized game engines used by many game developers on mobile. Unity is less flashy (read: the quality of visuals is lower) but doesn’t require the same high-end phone hardware to run, so it’s a preferred choice for less complex game development.
Programming languages: Java, Kotlin, C++, C#
There are many programming languages available for Android development.
Java is an official programming language of Android Studio. It has been around for much longer than Android Studio and is a popular programming language and considered more difficult to master than other programming languages.
Kotlin is another official Android Studio programming language. It is not as complex as Java to learn and it is Google’s preferred language. Kotlin is light-weight and since it’s easier to master than Java it is also prone to more stable code.
C++ is supported by Android Studio once the Java NDK toolset has been installed. It can be used for any type, but is often the first choice for game development as it is supported by the Unreal Engine. For game development the app stack would change from using Android Studio to Unreal Engine.
C# is an in-between of Java and Kotlin in terms of complexity while programming. As with C++ it can be used for any app type, but since it is supported by Unity, it makes it another great choice for game development. In this case the app stack would replace Android Studio with Unity.
Software development kit (SDK): Android
Any mobile development app stack must include an SDK. The SDK include an emulator for the Android phone(s) it needs to run on.
The emulator enables the app to be tested for usability during development and troubleshooting of bugs.