Ways to Develop an Android app
There are many ways to develop an android app and release it into the Google play store.
Android as an ecosystem has been evolved so much over the years. By the time of writing, Android OS has almost 72% of the market share. This high market share is also because of a greater number of apps available in the Google Play store, around 3.04 million apps.
Developing an Android app is very easy and there are many ways to develop it. That’s the beauty of it. You can develop android apps in many popular languages.
We will look into ways to develop android apps along with their advantages and disadvantages.
Android Native
Android Native is the most popular way of developing android apps. If you are a beginner and not aware of any programming language, then the android native is the easiest way of developing an android app. It is easy because of Android Studio – a single development tool to develop apps end to end. The installation is also pretty seamless.
Android Native is a great way of developing android apps because the android APIs are directly accessible, no need to wait for libraries or write a wrapper to access it.
Requires knowledge in:
Java or Kotlin (Both are pretty easy languages; you can use any one or both), a little bit of XML.
Advantages:
- Google recommends developing apps using android native.
- It has great community backing.
- Mature enterprise applications are being developed in Android Native.
- Easy to learn and develop. Lots of resources availble for free direclty from Google
Disadvantages:
- Heavyweight IDE, the android studio requires mid-range to high-range machines to develop.
- Android only development - source code cannot be reused for web or IOS.
React Native
React Native is the second most popular way of developing android apps. Developed by Facebook as an open-source library, very similar to React JS.
It helps developers to write single source code and use the same to build iOS apps as well. The reason for react native to be popular is not only its ability to build android and iOS app, but also its usage of JavaScript.
JavaScript is one of the leading scripting languages and is widely used across a range of developers. Beginners straight out of college directly jump into JavaScript since it is easy to learn.
React native source code is in JavaScript, after compiling, it translates the code to native language to android native and iOS native respectively.
Requires knowledge in:
Pure Vanilla JavaScript
Advantages:
- Great Community support, since JavaScript being popular there are lots of libraries available for developers.
- Easy to learn JavaScript compared to Java
- React native can be developed in any lightweight IDE like VS Code, Sublime, etc.
- Write one source code, build it for android and iOS.
Disadvantages:
- Maintainability when project scales, it’s difficult to keep track of code structure if multiple teams are involved in development.
- Accessing the android APIS directly is very difficult and not possible, those cases need to rely on libraries or fallback to native.
Flutter
Flutter is gaining popularity in developing android apps. It is developed by Google and uses Dart as its main development language. As of this writing, flutter can able to build android, iOS, and web all from a single source code.This means, you can develop your application that works on browsers like chrome or safari and can be uploaded to Apple Appstore and Google play store as separate apps.
Flutter also works similar to react native, and also uses the same declarative approach. Source code written in Dart compiles to native code of android and iOS.
Requires knowledge in:
Dart - Scripting langauge
Advantages:
- Single source code which works for android, iOS, and web.
- Developed and maintained by Google, hence we can expect a faster release of APIs similar to android native.
- It is much faster in building and compiling compared to react native and develop using android studio IDE
Disadvantages:
- Pretty new, and community support is growing not matured.
- Since the community is not big, fewer libraries available in the market.
- Heavily relies on Material Design principles, custom designing is difficult.
Ionic / NativeScipt
Both Ionic and NativeScript works differently, but the way of development is the same. Angular, Vue Js or React JS frameworks along with HTML can be used to develop android and iOS apps. This is also cross–platform – write single code and build for both iOS and Android.
Since it uses HTML, designing the User Interface can be in HTML/CSS, and write business logic in JavaScript to Typescript. Angular and VueJs are very popular frameworks in Web development, the same knowledge can be used to develop android apps.
Ionic renders the app in WebView and uses Cordova to access the native APIs. Whereas the Native script can able to access native APIs directly.
Requires knowledge in:
JavaScript/TypeScript, HTML, CSS
Advantages:
- Uses Angular and VueJs framework to develop android and iOS apps
- Community is backed by web development enthusiasts, and hence support is more.
- Easy to design the UI because of HTML and CSS
Disadvantages:
- Ionics runs on WebView; hence the rendering will be slow and lagging compared to native rendering.
- Native APIs availability is less, and need to rely on the third party.
- Debugging and resolving issues is very difficult. Not suitable for enterprise applications.
There are few more ways to develop android apps, like Xamarin, PhoneGap. It is quite easy to develop an android app from any of the above ways, it is for you to decide which way you are comfortable and which language you are good at. If you are not aware of any of the language/frameworks above, it will not take much time to learn. Keep Learning, Keep coding. :)