├── README.md └── images ├── Android Advanced.png ├── Android Basic.jpeg ├── Android Cover.png ├── Android Development.png ├── Android Devices.png ├── Android Github.png ├── Android Inter.png ├── Kotlin.png └── Learning Java.png /README.md: -------------------------------------------------------------------------------- 1 | # :robot: Android Roadmap 2 | ![Android Cover](images/Android%20Cover.png) 3 | A roadmap for android developers that can guide you from the very basics of the track and help you improve your skills. 4 | 5 | **First of all, we have to talk about** 6 | ## :green_book: Why should you learn Android development? 7 | ![Android Devices](images/Android%20Devices.png) 8 | With over 3 billion Android devices all over the world including: 9 | ( :iphone: Smartphones, 10 | :tv: TVs, 11 | :watch: Smartwatches, 12 | :car: Cars and more) 13 | in the hands of 2.5 billion users, it has become essential for companies to develop Android apps for their services. 14 | 15 | Before starting with Android you have to know about Git and GitHub. *(If you know about them you can skip this section.)* 16 | 17 | ## Git and GitHub: 18 | ![Android Github](images/Android%20Github.png) 19 | 20 | 21 | First,what is the difference between Git and GitHub? 22 | [See this](https://devmountain.com/blog/git-vs-github-whats-the-difference/) 23 | 24 | You can learn about them from these resources: 25 | 1. [This playlist.](https://www.youtube.com/playlist?list=PLDoPjvoNmBAw4eOj58MZPakHjaO3frVMF) *(Recommended)* 26 | 27 | [Use this file that has the most common commands in git.](https://docs.google.com/document/d/e/2PACX-1vRsH5CE2ty2BzWys6bsTfJ8sYDrNg0yBy8rrVU2jWhr3QbJ1YHdXgPwZbAuf04hz-YSrjIbBkjIPABx/pub) 28 | 29 | 3. [This course.](https://www.coursera.org/learn/introduction-to-version-control?specialization=meta-front-end-developer) 30 | 31 | Use this file that 32 | NOW,you need to know how to use Git and GitHub with Android Studio which provides app builders with an integrated development environment (IDE) optimized for Android apps. 33 | [Watch this video](https://www.youtube.com/watch?v=ebqbIyicCFU&list=WL&index=1&t=351s) 34 | 35 | You are ready to start your journey with Android but before starting with Android you have to learn a programming language and because it's Android, we recommend you start learning with Java. 36 | 37 | --- 38 | 39 | ## But.. Why Java? :thinking: 40 | - Most the open-source projects are written in Java. 41 | - Java has been the preferred language for Android development until May 2019 42 | - Most of the Stack Overflow answers are written in Java 43 | - Most Android libraries are written in Java, and to be able to use them, you have to understand Java. 44 | 45 | ## Learning Java: 46 | ![Learning Java](images/Learning%20Java.png) 47 | 48 | ### :paperclip: Resources: 49 | 50 | #### `Arabic:` 51 | 52 | 1. [Java baiscs](https://www.youtube.com/playlist?list=PLCInYL3l2AajYlZGzU_LVrHdoouf8W6ZN) *(Recommended)* 53 | 2. [OOP](https://www.youtube.com/playlist?list=PLCInYL3l2AagY7fFlhCrjpLiIFybW3yQv) 54 | 3. [Java baiscs + OOP](https://www.youtube.com/watch?v=FbviMTJ_vP8&list=PL1DUmTEdeA6K7rdxKiWJq6JIxTvHalY8f) 55 | 56 | #### `English (Udacity):` 57 | 1. [Java basics](https://www.udacity.com/course/java-programming-basics--ud282) 58 | 2. [OOP](https://www.udacity.com/course/object-oriented-programming-in-java--ud283) 59 | 60 | ## Before moving to the next level you have to make sure that you understand these topics: 61 | - Basic syntax 62 | - Conditions (if - switch) 63 | - Looping (for - while - do While) 64 | - Arrays & Collections 65 | - Exception handling (try-catch) 66 | - OOP 67 | - Encapsulation 68 | - Abstraction 69 | - Inheritance 70 | - Polymorphism 71 | - :clipboard: **Build a simple project with Java** 72 | 73 | ### Algorithms 74 | books: 75 | - Grokking Algorithms (Entry). 76 | - Algorithms Unplugged (Advanced). 77 | 78 | - [Course ||Part1](https://www.coursera.org/learn/algorithms-part1) 79 | - [Course ||Part2](https://www.coursera.org/learn/algorithms-part2) 80 | 81 | ### Data Structures 82 | - [Course](https://www.youtube.com/watch?v=RBSGKlAvoiM) 83 | 84 | or 85 | 86 | - [Course **Arabic**](https://www.youtube.com/watch?v=owCqVRbZlbg&list=PLCInYL3l2AajqOUW_2SwjWeMwf4vL4RSp) 87 | 88 | You are all set up, now 🤓 89 | 90 | --- 91 | 92 | ## Android basics: 93 | Now you are ready to start programming real Android apps for that you will need a good IDE to help you in your journey and I recommend you use Android studio. 94 | 95 | ![Android Android](images/Android%20Basic.jpeg) 96 | 97 | We will start with the basics of the basics :sweat_smile: 98 | 99 | ### :paperclip: Resources: 100 | 101 | #### `Arabic:` 102 | - [Check this playlist](https://www.youtube.com/playlist?list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx) to video no. 27 103 | #### `English (Udacity):` *(Recommended)* 104 | 1. [User Interface](https://mena.udacity.com/course/android-basics-user-interface--ud834) 105 | 2. [User Input](https://mena.udacity.com/course/android-basics-user-input--ud836) 106 | 3. [Multiscreen](https://mena.udacity.com/course/android-basics-multiscreen-apps--ud839) 107 | 108 | Then you will learn about making a list of views using Recyclerview 109 | 110 | ### :paperclip: Resources: 111 | 112 | #### `Arabic:` 113 | - [Check this](https://www.youtube.com/watch?v=g3ky09-UOxc&list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx&index=37) 114 | or 115 | [this](https://www.youtube.com/playlist?list=PLXjbGq0ERjFrBsFp69NhGzyyupl6R0YdD) 116 | 117 | #### `English:` 118 | - [Check this playlist](https://www.youtube.com/playlist?list=PLrnPJCHvNZuCqEyW_LVTM9r6NnyGD4Db8) 119 | 120 | 121 | Then you will need to learn how to reuse portions of your app's UI by using fragments and navigation component. 122 | 123 | ### :paperclip: Resources: 124 | * Fragments: [Arabic Next Trend](https://youtube.com/playlist?list=PL25WpelterbakuEfYt-G-TzzzzIOAZQbK) 125 | 126 | ## Before moving to the next level you have to make sure that you understand these topics: 127 | - Design responsive android UI using XML 128 | - Accepting user inputs 129 | - Developing multi-screen applications 130 | - Making big lists of data without using many resources using recyclerview 131 | - Fragments 132 | - Navigation component 133 | - Using the Navigation graph 134 | - Navigating between fragments 135 | - Using Drawer layout and Bottom Navigation 136 | - Using safe args 137 | - :clipboard: **Build a simple android application to apply your knowledge** 138 | --- 139 | 140 | ## Kotlin: 141 | After building a strong foundation with java and XML basics we will start building on it with the knowledge we will really use in our future applications. 142 | 143 | ![Kotlin](images/Kotlin.png) 144 | ### So... Why Kotlin? 145 | After Google I/O 2017 where Google announced first-class support for Kotlin on Android, Kotlin has become used by more and more Android developers and now it's used by over 60% of professional Android developers, for that each Android developer must learn it. [Learn More](https://developer.android.com/kotlin) 146 | 147 | We will start by learning the basics of the language. 148 | 149 | ### :paperclip: Resources: 150 | 151 | #### `Arabic:` 152 | - [Check this playlist](https://www.youtube.com/playlist?list=PLXjbGq0ERjFriC0igmYE9qUwwJfEHGJ8H) *(Recommended)* 153 | #### `English:` 154 | - [This course (Coursera) ](https://www.coursera.org/lecture/kotlin-for-java-developers/properties-GVJdx?fbclid=IwAR1nJo0ulDtPlVH3lFVCJKou9QqwfRpfvM6SnrGvobs2cNbymRMMiyG_XA0) 155 | or 156 | [This playlist](https://www.youtube.com/playlist?list=PLsyeobzWxl7rooJFZhc3qPLwVROovGCfh) 157 | 158 | ## Before moving to the next level you have to make sure that you understand these topics: 159 | - The basic syntax of Kotlin 160 | - Null safety concept 161 | - Looping 162 | - Functions and different types of them *inline, infix, extension, etc.* 163 | - Types in Kotlin 164 | - Companion objects 165 | - Higher-order functions 166 | - Operations on collections *filter, map etc.* 167 | - Generics 168 | - :clipboard: **Build a console app to apply the skills you have learned in this level** 169 | 170 | --- 171 | 172 | ## Android Intermediate: 173 | Now we will start writing Android apps using the skills we have learned in the previous levels as we will use Kotlin we've just learned with the Android skills we have built before to make much powerful and usable Android apps. 174 | 175 | ![Android Inter](images/Android%20Inter.png) 176 | ### :paperclip: Resources: 177 | 178 | [Check this course from Udaicty](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012) it has covered most of the topics you have to learn at this level, we just have some recommendations: 179 | * Before advancing to lesson 5 try to search about *Design Patterns* and their different types. 180 | * [`English`](https://www.youtube.com/playlist?list=PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc) *(Recommended)* 181 | * Before advancing to lesson 6 we recommend: 182 | * Learning some SQLite basics: 183 | * [`English`](https://youtube.com/playlist?list=PLS1QulWo1RIa0-Cs2Qx6GFyiIVVVS9lCS) *(Recommended)* 184 | * [`Arabic`](https://youtu.be/7DQnyLIXEZw?list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx) 185 | * [`Document`](https://www.sqlitetutorial.net/) *(Additional)* 186 | * Learning Coroutines: 187 | * [`Arabic`](https://youtube.com/playlist?list=PLXjbGq0ERjFqGlzZFDMCHJA_PBvUIaIto) *(Recommended)* 188 | * [`English`](https://youtube.com/playlist?list=PLSrm9z4zp4mE-o3sPq-PqzGHoFAIsQFI6) 189 | * Each topic in this course is very important so you have to make sure you understand them well. 190 | * Try to follow each lesson by answering its QUIZs and make projects to apply what you have learned. 191 | 192 | ## Before moving to the next level you have to make sure that you understand these topics: 193 | - Developing Android apps using Kotlin. 194 | - Good understanding of Android lifecycle. 195 | - Architecture Patterns *MVC, MVP, **MVVM*** [(Watch this)](https://www.youtube.com/playlist?list=PLe_W3T1SDsYgXzPjQK91xnOaF1iF3KDJ3). 196 | - SQLite basics and Room database. 197 | - Connect your app to the internet using Retrofit. 198 | - Multithreading using Coroutines. 199 | - Design adaptive layouts depending on the settings of the user's device. 200 | - :clipboard: **Build applications to apply the knowledge you have learned in each topic** 201 | 202 | --- 203 | 204 | ## Advanced: 205 | Hey, *Android developer*. At this level, you will just learn more and more topics that will help you make much better Android applications with better code using the most modern methods to develop them. 206 | 207 | ![Android Advanced](images/Android%20Advanced.png) 208 | 209 | ### Topics to learn: 210 | * [Watch this](https://www.udacity.com/course/advanced-android-with-kotlin--ud940) Udacity course which discussing these topics: 211 | * Notifications. 212 | * Custom views and Canvas. 213 | * Making animations. 214 | * Testing. 215 | * Dependency Injection. 216 | * MVI: 217 | * [Arabic Playlist *Coding with nerds*](https://www.youtube.com/playlist?list=PLXjbGq0ERjFrtwxjYICoXCbHXLTd8qgM-). 218 | * [English Article](https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started). 219 | * Services. 220 | * Broadcast reciever. 221 | * Content provider. 222 | * Multi-Module applications. 223 | * Live Data. 224 | * Firebase auth. 225 | * Cloud Firestore. 226 | 227 | ## Very Important Topics 228 | 229 | ### Retrofit 230 | - [Okhttp Interceptors](https://square.github.io/okhttp/features/interceptors/) 231 | - [Building your own custom Retrofit adapter](https://medium.com/android-news/building-your-own-retrofit-call-adapter-b198169bab69) 232 | 233 | 234 | ### Dependency injection with Hilt 235 | - [documentation](https://developer.android.com/training/dependency-injection/hilt-android) 236 | 237 | ### Testing 238 | - [Testing types in Android](https://developer.android.com/training/testing/fundamentals) 239 | - [Unit Test](https://www.youtube.com/watch?v=EkfVL5vCDmo&list=PLQkwcJG4YTCSYJ13G4kVIJ10X5zisB2Lq) 240 | - [Unit Test talk](https://www.youtube.com/watch?v=AmaHlsd4vUg) 241 | 242 | 243 | ### Jetpack Compose 244 | - [Follow this course](https://developer.android.com/courses/pathways/compose) 245 | - [This Repository for more content](https://github.com/jetpack-compose/jetpack-compose-awesome) 246 | 247 | ### Clean Archticture 248 | - [Clean Architecture in Android](https://www.youtube.com/watch?v=8GQTrIY_fqA) 249 | - [Modern Android App Architecture](https://developer.android.com/courses/pathways/android-architecture) 250 | - [Real-World Android by Tutorials "book"](https://www.kodeco.com/books/real-world-android-by-tutorials) 251 | 252 | 253 | --- 254 | 255 | ## What to do Next? :thinking: 256 | **`once you stop learning you start dying`** 257 | 258 | You have to continue learning more and more and try to be always up-to-date with the new technologies coming to the field. 259 | 260 | You can follow [Android Developers](https://www.youtube.com/c/AndroidDevelopers) YT Channel and watch their [MAD Skills](https://www.youtube.com/c/AndroidDevelopers/playlists?view=50&sort=dd&shelf_id=5) series to stay up-to-date. 261 | 262 | You can also check [This Site](https://www.raywenderlich.com/android/books?fbclid=IwAR0yqTqcSYWCe1g2pNbhCfuMUlBhWLzTu_xVAutRfgpC3-P2cqhyBjG1R-o) for very important books in Android and Kotlin and other awesome stuff. 263 | 264 | ### **Feel free to contact us:** 265 | - [Mahmoud Elshahatt](https://www.linkedin.com/in/mahmoudelshahatt/) 266 | - [Amany Ashraf](https://www.linkedin.com/in/amany-ashraf-hosni/) 267 | - [Mohanned El-Sayeh](https://www.linkedin.com/in/msayeh/) 268 | -------------------------------------------------------------------------------- /images/Android Advanced.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Advanced.png -------------------------------------------------------------------------------- /images/Android Basic.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Basic.jpeg -------------------------------------------------------------------------------- /images/Android Cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Cover.png -------------------------------------------------------------------------------- /images/Android Development.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Development.png -------------------------------------------------------------------------------- /images/Android Devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Devices.png -------------------------------------------------------------------------------- /images/Android Github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Github.png -------------------------------------------------------------------------------- /images/Android Inter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Android Inter.png -------------------------------------------------------------------------------- /images/Kotlin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Kotlin.png -------------------------------------------------------------------------------- /images/Learning Java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MahmoudElshahatt/Android-Roadmap/bb6a30895d9858d4331b4ebb331f694d8fba3e7f/images/Learning Java.png --------------------------------------------------------------------------------