What to Learn to get started with Android App Development?
Tags: beginners, android, kotlin, java
Published: 2021-07-12 06:13:44

Yes!🤔 This question might confuse every beginner whenever they are thinking of to starting a new journey here.
So, if you’re one of those enthusiasts here's my article to help you getting started with android app development.

#Choose a Platform

**Mobile development** is a broad field and therefore this means there are multiple ways to develop an application i.e this question has more than one  answers. Basically the whole mobile development community works on two fronts, one is `Native development` and `Cross-Platform development`
 
![mobile logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/owomu9wqymea5nb8uzxg.jpeg)
* **Android development -> using Kotlin and Java**

* **IOS development -> using Objective C and Swift**

* **Cross-Platform -> using Flutter,Ionic,Xamarin,React-Native,etc**
_First two points is an example  for Native_ and the _Third one for Hybrid_ 

>By **Native Development** it means that is built for one specific platform. Hence written in languages compatible with the platform  For instance, native Android app run on Android OS only Whereas native iOS apps run on iOS only.
 With **Cross-platform Development** one's can write code once and run on different platforms. Hence specialized tools are taken into service, can run on both iOS and Android platforms.
 
For someone new to mobile development, its better to learn native first then move to cross-platform technologies( if you want to ), 
As of now better hybrid technologies are [_React-Native_](https://reactnative.dev/) and [_Flutter_](https://flutter.dev/) and to my understanding that to be good in these  we need a pretty strong understanding on native mobile development.

So, keep this _Native vs Cross-Platform_ for some others day topic
However this blog is focused in `Native way of Android development`

#Learn a LANGUAGE

For the languages, you can develop android apps either by using [Kotlin](https://kotlinlang.org/) or [Java](https://www.oracle.com/in/java/), Hence another confusing part for beginners.
You need to learn basic of any programming language before getting started with android such as OOPS and other such underlying concepts
![kotlin n java](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5h2clwv0ahkwbpmxqdt8.png)

###1.JAVA

* Java was the _first official_ programming language that is 
        used to develop android apps. 
* The support community and user base is more in Java its older than Kotlin. 
* Android is the framework written in Java, so to code android android application you need to learn java and make yourself familiar with the syntax 

###2.KOTLIN
*  Launched by JetBrains, who created  IntelliJ IDE and it too runs on JVM 
* Google in May 2017 announced Kotlin as the official language of Android App Development
* Kotlin made android app development much easy as the length of the code had decreased than Java , and other such features 
* For a android developer  Kotlin should be the language of choice nowadays

>As time is changing the companies are shifting to Kotlin. Hence its most preferred since it offers a lot as compared to Java. Google also offers a lot of support to Kotlin, like many new Jetpack APIs and features will be offered first in Kotlin.

>**BUT** for _beginners in android with no experience with any line of codes_ or any other programming language first learn Android development in`Java`, then switch to `Kotlin`.

###3.XML(Extensible Markup Language)
* XML is important used to design **`UI`/`UX`** of an app its, presentation, layouts,etc
* Since its markup language its work is to describes data and introducing elements like _sets_ the layout of things like `buttons` and `images`, and _defines_ the `font`, `color`, and any `text`.

>To recap, XML describes the views in layout, and Java/Kotlin tells them how to behave.
Its not needed to learn in depth beforehand you can learn along the way.



#ANDROID SDK

* Android SDK stands for **Android Software Development Kit** which is developed by Google for Android Platform.
* Android SDK is a collection of libraries and Software Development tools helps to create android Apps easily.
* Its includes necessary utilities to help Android developers calling different APIs developed by Google both for controlling the device's functions and for integrating services
* Component of the Android SDK such as `Gradle`,`emulator`,`build tool`,`platform tool` ,etc.

#Using an IDE [Android Studio](https://developer.android.com/studio/)
There are many IDE available for development,but 
It’s unquestionably the best IDE **(Integrated Development Environment)** for Android
Android Studio is a must have for both the beginner and experienced Android developer.


![Aandroidst](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r5ub249ljmg54sz7wzuw.jpg)

* Built on top of IntelliJ IDE,developed by Google for android application development.
* Google on 16th May 2013 announced as a official IDE for Android app development.
* Its comes with great out-of-the-box support for many of the most common Android SDKs.
* It has advanced tools like `memory monitors`,`CPU monitors`,`Code debuggers`,`Code completion`,`etc` helping developers make sure their code will maintain high performance on a mobile device.

#Start with android

After just understanding the basics of the above listed ,it is now time to  get your hand dirty. Hence just install Android Studio and start developing an app, As Practice together along with  theory is one of the best ways of learning.
![A](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1qfkzudltb6flwf7q5g.jpeg)
 One of the important skill as an android developer is of reading and searching for answer ,For development Android provides the most important and incredible documentation:-
[_Android Documentation_](https://developer.android.com/guide)

>You won’t understand and remember everything for the first time, ones has to browse this sites millions time and each time you will become one step better version  from your previous

Here's the link of bunch of resources you can go through 
1.[Android basics in Kotlin](https://developer.android.com/courses/android-basics-kotlin/course)-Free course by Google , you'll learn the basics of building Android apps with the Kotlin.
2.[Developing Android Apps with Kotlin](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) - Its an Udacity course by 
  Google.
3.[Android Basics: User Interface](https://www.udacity.com/course/android-basics-user-interface--ud834) -Learn the basics of Android and Java programming this courses doesn't require any prior knowledge in coding. One with no experience with _any lines of code_ can also **start here** 
4.[Android codelabs](https://developer.android.com/courses/fundamentals-training/toc-v2) - Its practical codelabs course by Google,finds a lot of helpful examples.

________________________________________________________

#SOMETHING MORE

**NOW** ,this section is once you have started Android development and getting familiar, too with some Techincal terms
List of some important terms which you will find along the way -

###1.Understand Material Designs
![materialxt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vvnzvj2gud3dt3mc1c2b.jpg)
* Google has released a set of forward-thinking interface guidelines and standards called Material Design, to help build consistent and high quality app UI and give  aesthetic  look .
* These standards include tips for how to layer various elements on the screen and use specific styles and highlights the best practices for we can use   
* Try to feel it. Be the material. Think like material. Behave like material. You shouldn’t miss this point while getting started with Android.
 
###2.Gradle build
![Alt Tfradleext](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tbveku0tal7apqhqwvn0.jpg)

* Gradle is another build system that takes the best features from other build systems and combines them into one.
* “Build.gradle” are scripts where one can automate the tasks.
* For example, the simple task to copy some files from one directory to another can be performed by Gradle build script before the actual build process happens.
* Every Android project needs a gradle for generating an apk from the .java and .xml files in the project.

###3.Learn Version Control
 ![gitext](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dtag2a5avtvs918qxlth.jpeg)
* There are multiple Version Control Systems available but [Git](https://git-scm.com/) is the most common one these days.
* These are tools that enables you to keep your code and also track your progress.
* Resource for learning [Version Control with Git](https://www.udacity.com/course/version-control-with-git--ud123)
* Showcasing your project you can learn and build the portfolio on github 

**5.** **AND** there is many more
* like for _Database connectivity_ [Firebase](https://firebase.google.com/) is there  
* you’ll likely want to interact with many other services through _APIs_ [Jetpack libraries](https://developer.android.com/jetpack/) are  there.

> This list don't ends here ,
 When one picks up a career in tech they commit themselves to lifelong learning, and **_one thing for sure you will love it_** , as these technologies there only to help you and make your app developing process easier.

***

##Now here providing the flowchart-

![roadmap](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6dlzdpzl3parf2y5doqk.png)

>Remember to not be exhausted by the list, just learn the basics and start working on some project, rest of the learnings will come along the way. Good luck!

* Reference -
 * [Essential Skill](https://generalassemb.ly/blog/7-essential-skills-you-need-to-be-an-android-developer/)
 * [Compelete roadmap](https://roadmap.sh/android) , here you will find resources link of other important part in android 


**_Personal Tips_** -If you want to start then, one of the best habits is that start reading articles regarding the application development.


Now we came to an end of the article
I hope you found this article valuable. If yes do let me know in the comments 😊

##THANK YOU!


You can follow me on:
[Twitter](https://twitter.com/RohitK_570)
[Linkedin](https://www.linkedin.com/feed/)