Introduction:-

Android is the world's widely used smartphone operating System and day by day Its popularity is increasing exponentially in the market. In this current generation almost everyone has access to smartphones and most of the smartphones have Android operating system preinstalled, that's why Android apps are on a boom right now. So, Android app development is one of the most valuable and lucrative skills to have right now.

So here I present a simple path to master Android development from scratch to at a good level. First, let me express that I don’t have extensive experience in Android, I am still a learner in this field and made couple of apps, to develop my development skills. It’s nearly impossible to know any specific field in fine details. Cause in each and every domain new technologies and concepts are added frequently to evolve with the generation. So, I’ll learn and grow more by time.

https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s0/new-curriculum-for-android-educators-social-v4.png

Source-Image

Facts:-

Mastering Android :-

Mastering Android development is a time consuming.It is a never ending process because very frequently new Android OS versions are developed and improved by google. So some methods in Android development are deprecated and some new optimised methods are introduced. The thing, mainly matters, that you are known to the basics of Android development. If you know the basic building blocks, then learning new concepts won’ be that much tough.

Step 0-

We all know that to build any software we need to have basic knowledge of relevant programming language/languages. Before beginning your app development journey you need to know Java and Kotlin.

The first language used to develop Android apps was Java, then in May 2017 Kotlin was announced as the official language for Android development by google.

Source-Image

Step 1-

For developing Android apps you need to have an IDE specially designed for Android development. One of the best and majorly used Software is Android studio.

Source:-Image

First you need to know about the project structure of any newly created app. Also It is important to know how gradle works under the hood to compile any Android project. You can run your Android apps on an emulator or your personal Android device. I would suggest using your Android device for testing and running purposes for your app because the emulator takes a lot of resources from your computer and Android studio may run slowly on your computer. you need to enable USB debugging on your Android device so that you can install your app on your phone via USB cable. You can also debug your Android app using the debug option in Android studio and execute each and every line of code to see in which line error occurred. Also one important theoretical topic in app development is activity lifecycle. This gives us an idea about which functions are being called by the Android OS while an Android app is running or cleared from the memory.

Source:-Image

Step 2-

Now it is time for you to learn about different layouts, views and activities. These are all UI components and define the visuals of Android apps. Some of the most commonly used layouts are Frame Layout, Linear layout, Relative Layout, Constraint layout etc. where Frame Layout is the simplest and Constraint Layout is the complex one.
Layout is just a container for your UI, different views are attached on layouts to make your app interactive. Some of the frequently used views are TextView, ImageView, EditText, Button, ListView, RecyclerView etc.

Step 3-

In the previous step you learnt how to make a basic UI for your Android app, now it is time to attach those views in your java/kotlin code for dynamicity of your app, this concept is known as view binding.
There is a method named findViewById( ) in java/kotlin for attaching your views in XML to java/kotlin code. This function expects an integer value and it references the views in xml inside java/kotlin code by a class named R where distinct integer values are generated for each view component.

Another important topic to cover is the setOnClickListener( ) method. This method assigns onClick listener for the buttons. This function expects an object of View.OnClickListener type which is an interface. In this Interface, there is an abstract method named onClick( ). By which we can write our own functionality (override the function). It will be executed when a user clicks the button.

Source-Image

Step 4-

Before this step we have learnt how to make a single screen app, but most of the apps in the market are multi screen apps. So in this part we will have an idea about how multi screen apps are created and how to move from one activity to another.
For moving from one activity to another activity or to another application we use intents. Intent is a class defined in Android. There are two types of intent, one is Implicit intent and another is Explicit intent. Even when your app starts on your device intent from the OS is called to open your app.

Source:-Image

Step 5-

So in this stage we have covered most of the basic topics, it is time to level up. Now you need to learn about permissions in Android. Some operations in Android need either permission from Android OS or user, because things like phone calls, internet access, camera access etc are privacy-related stuff and accessing those without permission is an illegal activity. So Android OS introduced the concept of permissions for the sake of user’s privacy.

There are two types of permission. The first kind is Normal permissions which is given to the app inside Android manifest file, so the permission will be given at compile time. The second kind is runtime or dangerous permissions which are not by default given to the app, on run time those permissions will be asked to the user of the application.

Step 6-

You may have noticed that most of the well- known Android apps like Ffacebook, Iinstagram, Ttwitter etc. are just a long list of posts where the structure of each list item is the same. Yeah you have guessed it right, we are going to talk about lists in Android. There are two types of lists and they are ListView and RecyclerView. For showing simple list items we use ListView and for complex items RecyclerView is used extensively. Although we can use ListView to show complex list items, it is not recommended as ListView is very inefficient and memory leakage happens while using it, so a lot of ram space will be taken by your single app and your app may also lag. There is no chance of memory leakage in RecyclerView because the views which will be created will be recycled so that they won't take excessive ram space. So in general RecyclerView is more efficient and mostly used in apps.

Step 9-

Now you are at a level where you can make some simple but effective apps, but there is more to learn. Most of the apps which we use on Android, run using the internet, so now it is time to learn how data is fetched and parsed in Android apps. When we make a call on the Internet, responses come back in different formats from the API. One very useful format is the JSON format which can be parsed and shown on the UI of the app. We have to Remember one thing that we can’t make network calls on the main thread. So a new thread must be created and network calls must be done on the new thread. We can use AsyncTask to make network calls. Some third party libraries for network call are okhttp, volley, retrofit etc. and for loading images from the internet libraries like glide and Picasso are well known.

Fun fact- Google uses okhttp library in most of its apps.

Step 10-

Let’s assume you are trying to make a todo app without using a database and you added some todo items. The main problem with this app is that when you close the application the todo items which have been added will not be there at the time you reopen the app. So for storing data in the databases are an essential part in Android. Here we are talking about local databases and in Android SQLite database is mainly used. You need to know the CRUD (Create Read Update Delete) operation for working with databases. One easy implementation of SQLite is the Room database which is just an abstraction level over SQLite.

Step 11-

You may have noticed some apps like Uber use maps. One of the most used map API is Google Map where you can use maps in your map effectively when necessary. Also you can fetch live locations using this API.

Step 12-

Your Android device has different sensors like motion sensor, position sensor, accelerometer, temperature sensor, gyroscope, magnetic field sensor, pressure sensor etc. When you play games like Asphalt 8, COD mobile, you may have noticed some of your mobile sensors are in extensive use. So some cool apps can be made using the values fetched from these sensors. I’ve made a simple fun app which changes colour on mobile rotation and it felt really cool to see  sensors going live.

Step 13-

Now you are at the intermediate level of app development and believe me you are going well. Now it is time for us to learn Firebase which is a Backend as a Service (BAAS) developed by Google for making app development simpler without thinking much about backend. Firebase consists of a NoSQL database which stores data in JSON like format.

Some of the essential features of firebase are mentioned below:-

Firebase Authentication:-

For some apps security is very necessary so they use a login method to make the app more secure. Firebase Auth is used to add a login/Sign up method so that any unauthorised user can’t access the contents of the app.

Firebase Database:-

It is a NoSQL database which consists of collection and document structure where each collection can have multiple documents and in each document you can have fields with key-value pairs or further more collections and this nesting may go on.

Realtime Database:-

It is also a NoSQL database with node structure. This database is used to fetch real-time data from the database. When weyou push any data to the database then instantly the changes occur on the database.

Firebase Storage:-

If you want to store any media file or other formats of file online then it is a good idea to use Firebase Storage.

Firebase Hosting:-

It is a production-grade web content hosting feature. You can deploy web apps using this feature.

Firebase machine learning:-

For implementing machine learning features in your app you can use this feature. In Firebase machine learning some pre- built machine learning models are there for directly using in your Android apps.

Crashlytics:-

App crashes are bad experiences for users and it declines user satisfaction causing degradation of the user base. If your app crashes on the client side it will be hard for you to know exactly which feature or which line of code crashed your app .and hence it will be a difficult task for you to debug your code and redeploy your app. So if your app crashes on the client side, Crashlytics will help you to know exactly why and on which line the app crashed with full stacktrace.

Step 14-

Some apps like Snapchat use your device’s camera. So you need to add a feature in your app to use your camera on your device. For that reason Google developed cameraX API. CameraX is a jetpack support library built to make camera app development easier than ever.

MISC-

Some other concepts in Android development are themes, material design pattern, notification, broadcast receiver, alarms, MVVM and many more which you can learn on your own and develop awesome apps.

Conclusion :-

Android app development is simple and fun. By developing apps you will be more experienced and you will enjoy the process. By the time you will learn everything, you can make awesome apps.Happy coding.