{"id":21898539,"url":"https://github.com/canopas/android-developer-roadmap","last_synced_at":"2025-04-15T18:43:25.221Z","repository":{"id":52890208,"uuid":"450712029","full_name":"canopas/Android-developer-roadmap","owner":"canopas","description":"Android developer roadmap 2022 is a path to start your journey with android development.","archived":false,"fork":false,"pushed_at":"2023-03-09T06:37:53.000Z","size":261,"stargazers_count":11,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T23:51:09.440Z","etag":null,"topics":["android","android-application","androiddevelopment"],"latest_commit_sha":null,"homepage":"https://canopas.com","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/canopas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-22T04:02:49.000Z","updated_at":"2023-12-23T23:50:50.000Z","dependencies_parsed_at":"2022-08-23T07:30:13.428Z","dependency_job_id":null,"html_url":"https://github.com/canopas/Android-developer-roadmap","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canopas%2FAndroid-developer-roadmap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canopas%2FAndroid-developer-roadmap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canopas%2FAndroid-developer-roadmap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canopas%2FAndroid-developer-roadmap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canopas","download_url":"https://codeload.github.com/canopas/Android-developer-roadmap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249131511,"owners_count":21217759,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-application","androiddevelopment"],"created_at":"2024-11-28T14:33:06.162Z","updated_at":"2025-04-15T18:43:25.201Z","avatar_url":"https://github.com/canopas.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAndroid Developer Roadmap 2022\u003c/h1\u003e\n\n![alt text](https://github.com/cp-radhika-s/Android-Roadmap/blob/main/image/og_image.png)\n\n\n Android Developer Roadmap 2022 is learning paths to understanding Android development.\n \n## How to Learn Android?\n\nIn Android, programming is done in two languages JAVA or Kotlin and Jetpack Compose(Declarative UI) or XML(Extension Markup Language). The XML file deals with the design, presentation, layouts, blueprint, etc (as a front-end) while the JAVA or KOTLIN deals with working of buttons, variables, storing, etc (as a back-end). And the biggest confusion for an Android beginner is which language to choose between Java and Kotlin? So let me try to overcome the confusion first. \n### Java or Kotlin?\n\nJava is the official language for Android App Development and consequently, it is the most used language as well. Kotlin has also been introduced as a “official” Java language in 2017. Kotlin is much simpler for beginners to try as compared to Java and it can also be used as an “entry point” for Android App Development. So my recommendation for a beginner is to go with Java first, then jump to Kotlin.\n\n# Table of contents\n* [Sprint 1](https://github.com/canopas/Canopas-Android-Roadmap#sprint-1)\n* [Sprint 2](https://github.com/canopas/Canopas-Android-Roadmap#sprint-2)\n* [Sprint 3](https://github.com/canopas/Canopas-Android-Roadmap#sprint-3)\n* [Sprint 4](https://github.com/canopas/Canopas-Android-Roadmap#sprint-4)\n* [Sprint 5](https://github.com/canopas/Canopas-Android-Roadmap#sprint-5)\n* [Sprint 6](https://github.com/canopas/Canopas-Android-Roadmap#sprint-6)\n\n#### Let's start with basic learning\n\n## Sprint 1\n\n### Java basics\n\n* Introduction to [Java Programming](https://www.udacity.com/course/java-programming-basics--ud282)\n* [Object Oriented Programming (OOPs)](https://www.geeksforgeeks.org/object-oriented-programming-oops-concept-in-java/) Concept in Java\n* Java difference between [primitive type and class types](https://stackoverflow.com/questions/5199359/why-do-people-still-use-primitive-types-in-java)\n\n### Android basics\n\n* [7 Key Android Concepts](https://www.macadamian.com/learn/7-key-android-concepts/)\n* Android [best practices](https://github.com/futurice/android-best-practices)\n* Introduction to [Activities](https://developer.android.com/guide/components/activities/intro-activities)\n* Understand The [Activity Lifecycle](https://developer.android.com/guide/components/activities/activity-lifecycle)\n* Understand The [Fragments](https://developer.android.com/guide/fragments)\n\n#### Practicle 1.1\n* Button click counter application\n    - Write an application which counts the number of button clicks and shows the click count  on  the app screen.\n     \n### Version control system\n\n#### Practicle 1.2\n* Create repository of practicle 1.1 on Gitlab\n\n#### References\n* Introduction to version control: [What Is Version Control?](http://guides.beanstalkapp.com/version-control/intro-to-version-control.html)\n* How to use git\n    -  [Version control with git](https://www.udacity.com/course/version-control-with-git--ud123)\n    -  [Git: The Beginner's Guide to Understanding Core Version Control Concepts](https://www.freecodecamp.org/news/git-the-laymans-guide-to-understanding-the-core-concepts/)\n    -  [When to commit in version control](https://softwareengineering.stackexchange.com/questions/74764/how-often-should-i-do-you-make-commits)\n\n\n### Delightful user experience   \n\n#### Practicle 1.3\nCreate the [scorekeeper](https://developer.android.com/codelabs/android-training-drawables-styles-and-themes#1) application.\n#### Refrences\n*  [User Interface](https://www.udacity.com/course/android-basics-user-interface--ud834)\n*  Basic knowledge of \n      - [Material designs](https://material.io/design/introduction)\n      - [Drawables](https://developer.android.com/reference/android/graphics/drawable/Drawable) \n      - [Styles and theme](https://developer.android.com/guide/topics/ui/look-and-feel/themes)\n\n\n\n### Code Style\n\nA quick look on [Java](https://source.android.com/setup/contribute/code-style) and [Android](https://blog.mindorks.com/android-code-style-and-guidelines-d5f80453d5c7) code style\n\n### Json\n* Introduction of [Json](https://www.softwaretestinghelp.com/json-tutorial/)\n* [What is JSON and why would I use it?](https://stackoverflow.com/questions/383692/what-is-json-and-what-is-it-used-for)\n* [Json vs XML](https://beginnersbook.com/2015/04/json-tutorial/)    \n\n### Android Permission\n#### Practicle 1.4\n* Write an application to request read and write storage permission on button click and Show result on the screen. \n#### References\n* [Permissions overview](https://developer.android.com/guide/topics/permissions/overview)\n* [Storage updates in Android 11](https://developer.android.com/about/versions/11/privacy/storage)\n\n###  User interaction \n#### Practicle 1.5\n* Write an application that has two edit texts for user name and user phone number, button and recycler view, shows user inputs in recycler view on button click. \n#### References\n* Android From Scratch: [Understanding Views And View Groups](https://code.tutsplus.com/tutorials/android-from-scratch-understanding-views-and-view-groups--cms-26043)\n* Build a Responsive UI with [ConstraintLayout](https://developer.android.com/training/constraint-layout)\n* Recyclerview\n      - Recyclerview [component](https://medium.com/android-news/understanding-recyclerview-components-part-2-1fd43001a98f)\n      - Recyclerview [Pro Tip](https://proandroiddev.com/recyclerview-pro-tips-part-1-8a291594bafc)\n\n## Sprint 2\n\n### Kotin for android development\n\u003e Kotlin is a great fit for developing Android applications, bringing all of the advantages of a   modern language to the Android platform.\n\n* [Java vs kotlin](https://www.moveoapps.com/blog/java-vs-kotlin/)\n* [Kotlin basic](https://kotlinlang.org/docs/basic-syntax.html)\n* [Setup kotlin](https://kotlinlang.org/docs/android-overview.html) in android studio\n* [Android App Development Masterclass using Kotlin](https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/) \n\n### Working in background\n\n#### Practicle 2.1\n* Write an application that lets the user trigger, update and cancel a notification using three buttons.\n#### Practicle 2.2\n* Create an app that uses a broadcast receiver to receive incoming SMS messages. The app should display a notification when a message with a specific keyword is received.\n#### Practicle 2.3\n* Create a music player application. Use android Service to play music in background. \n#### References\n* Guide to [background processing](https://developer.android.com/guide/background)\n* [Broadcasts](https://developer.android.com/guide/components/broadcasts)    \n* [Services](https://developer.android.com/guide/components/services) \n\n### Saving user data\n#### Practicle 2.4\n* Imaplment Contact diary applicatio. User should be able to add, edit, delete, and search for contacts. Users can set reminders for the birthdays of their contacts and receive notifications.\n#### References\n* Introduction of database:[Udemy section 10](https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/) : lecture 177 - 178 \n* [Data and file storage](https://developer.android.com/training/data-storage) overview\n* [Shared preferences](https://developer.android.com/training/data-storage/shared-preferences)\n\n#####  Save data in local database\n* Introduction of database:[Udemy section 10](https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/) : lecture 189 to 191  \n* Save data using [SQLite](https://developer.android.com/training/data-storage/sqlite) \n* Storing data with [Room](https://developer.android.com/training/data-storage/room)\n\n# Advance Learning\n\n## Sprint 3\n\u003e Now it’s time to dive into the real development with 50% work and 50% training daily\n\n### Jetpack compose\n#### Practical 3.1\n* Create a UI like [this](https://github.com/cp-radhika-s/Android-Roadmap/blob/main/image/screenshot_2.png) \n* Create a Quiz Appication. It should displays a series of multiple-choice questions. Users can select an answer and receive instant feedback on whether they were correct or not.\n#### References\n* [Setup](https://developer.android.com/jetpack/compose/setup)\n* [Jetpack compose basics](https://developer.android.com/jetpack/compose/tutorial?gclid=Cj0KCQjwktKFBhCkARIsAJeDT0ild-qffsVE98m2uwRTmjnj5LRAH2yAm9GCFKzPvYZfw-RbHKFsZUsaArEgEALw_wcB\u0026gclsrc=aw.ds) \n\n### Android Networking\n#### Practicle 3.2\n* Retrieve and display a simple users list from web API to Android recyclerview using the retrofit library. Display Name, email, and city. Also add functionality to Delete the item.\n  -  **GET Api Url**: http://jsonplaceholder.typicode.com/users\n#### References\n* [OkHttp](https://square.github.io/okhttp/)\n* Typesafe HTTP client for android: [Retrofit](https://square.github.io/retrofit/)\n\n## Sprint 4\n\n### App Architecture\n* [Guide to app architecture](https://developer.android.com/jetpack/guide)\n* [App architecture recommendation](https://developer.android.com/topic/architecture/recommendations)\n* Android [Application Architecture](https://medium.com/oceanize-geeks/android-application-architecture-189b4721c7c5)\n  - Android [MVP Architecture](https://androidwave.com/android-mvp-architecture-for-beginners-demo-app/)\n  - Android Architecture Patterns: [Model-View-ViewModel](https://medium.com/upday-devs/android-architecture-patterns-part-3-model-view-viewmodel-e7eeee76b73b) \n  - Android [MVVM Design Pattern](https://www.journaldev.com/20292/android-mvvm-design-pattern)\n\n### ViewModel and LiveData\n#### Practicle 4.1\n* Use liveData and viewModel  in practical 3.2\n#### References\n* [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel)\n* [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) \n* [Udemy section 11](https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/)\n\n## Sprint 5\n\n### RxJava and RxAndroid\n#### Practical 5.1\n* Create an android application to show a list of movies in recycler view using rxjava and retrofit using MVP architecture.\n   - **GET API Url**  : https://top-250-movies-api.herokuapp.com/api/v1/movies\n* Self exercise: Write an open-source project to cover operators of rxjava such as map, flat map, combine, zip  etc...\n\n#### References\n* [Rxjava](https://github.com/ReactiveX/RxJava) and [RxAndroid](https://github.com/ReactiveX/RxAndroid)\n    - Part 1:  [The Basics](https://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/)\n    - Part 2:  [Operator, Operator](https://blog.danlew.net/2014/09/22/grokking-rxjava-part-2/)\n    - Part 3:  [Reactive with Benefits](https://blog.danlew.net/2014/09/30/grokking-rxjava-part-3/)\n    - Part 4:  [Reactive Android](https://blog.danlew.net/2014/10/08/grokking-rxjava-part-4/)\n* **Example:** [Rxjava with retrofit](https://www.freecodecamp.org/news/how-to-set-up-networking-in-your-android-app-with-retrofit-rxjava-mvp-108e7153521a/) \n\n### Hilt\n#### Practical 5.2\n* Retrieve and display a simple users list from web API to Android recycler view using retrofit. Display name, email and city in recyclerView. Store users in database. **GET Api Url** : http://jsonplaceholder.typicode.com/users\n* On user item click display all albums of selected user  on next screen. **GET Api Url**  : https://jsonplaceholder.typicode.com/albums?userId=1\n* On the Album item click show all photos of the selected album on the next screen.**GET Api Url** : http://jsonplaceholder.typicode.com/photos?albumId=2\n\n\n#### References\n* [Dependency injection](https://developer.android.com/training/dependency-injection)\n* [Dependency injection with Hilt](https://developer.android.com/training/dependency-injection/hilt-android)\n* [Hilt](https://dagger.dev/hilt/)\n\n## Sprint 6\n\n### Kotlin coroutines\n* [Coroutines Overview](https://kotlinlang.org/docs/coroutines-overview.html)\n* [Thread vs. Coroutines](https://www.youtube.com/watch?v=C38lG2wraoo\u0026list=PLlxmoA0rQ-LwgK1JsnMsakYNACYGa1cjR)\n* [Kotlin coroutines on Android](https://developer.android.com/kotlin/coroutines)\n* Background processing using coroutines- [Udemy section 12: lecture 276](https://www.udemy.com/course/android-oreo-kotlin-app-masterclass/)\n\n### Kotlin Flow\n#### Practicle 6.1\n* Make a calculator application. Save calculation history in the database. Users can view history and clear history.\n#### Practicle 6.2\n* Implament product application. Retrive product list from api, also show full detail on item click\n* **API** https://fakestoreapi.com/products\n#### References\n* [Kotlin flow](https://developer.android.com/kotlin/flow) on android\n* [Learn advance coroutine with kotlin flow and LiveData](https://developer.android.com/codelabs/advanced-kotlin-coroutines#0)\n#### Practicle 6.3\n* Write Unit test of praticle 6.2\n#### References\n* [Fundamentals of testing Android apps](https://developer.android.com/training/testing/fundamentals)\n* [Build local unit tests](https://developer.android.com/training/testing/local-tests)\n* [Introduction to unit testing ViewModel with Kotlin Coroutine \u0026 Flow](https://blog.canopas.com/introduction-to-unit-testing-viewmodels-with-kotlin-coroutine-367630e95831)\n\n#### StateFlow and SharedFlow \n* [StateFlow and SharedFlow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow)\n* [Reactive Streams on Kotlin: SharedFlow and StateFlow](https://www.raywenderlich.com/22030171-reactive-streams-on-kotlin-sharedflow-and-stateflow)\n\n\n## Extra\n#### Useful libraries\n* [Glide](https://github.com/bumptech/glide) for loading and caching images\n* [Timber](https://github.com/JakeWharton/timber) : Very useful library for logging\n* [EventBus](https://github.com/greenrobot/EventBus) - Android optimized event bus that simplifies communication between Activities, Fragments, Threads, Services, etc. Less code, better quality.\n* [Coil](https://coil-kt.github.io/coil/) An image loading library for Android backed by Kotlin Coroutines.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanopas%2Fandroid-developer-roadmap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanopas%2Fandroid-developer-roadmap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanopas%2Fandroid-developer-roadmap/lists"}