├── README.md
└── images
├── Android Advanced.png
├── Android Cover.png
├── Android Development.png
├── Android Devices.png
├── Android Inter.png
├── Kotlin.png
└── Learning Java.png
/README.md:
--------------------------------------------------------------------------------
1 | # :robot: Android Roadmap
2 | 
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 | 
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 |
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 | 
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 | ---
74 |
75 | ## Android basics:
76 | 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.
77 |
78 |
79 |
80 | We will start with the basics of the basics :sweat_smile:
81 |
82 | ### :paperclip: Resources:
83 |
84 | #### `Arabic:`
85 | - [Check this playlist](https://www.youtube.com/playlist?list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx) to video no. 27
86 | #### `English (Udacity):` *(Recommended)*
87 | 1. [User Interface](https://mena.udacity.com/course/android-basics-user-interface--ud834)
88 | 2. [User Input](https://mena.udacity.com/course/android-basics-user-input--ud836)
89 | 3. [Multiscreen](https://mena.udacity.com/course/android-basics-multiscreen-apps--ud839)
90 |
91 | Then you will learn about making a list of views using Recyclerview
92 |
93 | ### :paperclip: Resources:
94 |
95 | #### `Arabic:`
96 | - [Check this](https://www.youtube.com/watch?v=g3ky09-UOxc&list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx&index=37)
97 | or
98 | [this](https://www.youtube.com/playlist?list=PLXjbGq0ERjFrBsFp69NhGzyyupl6R0YdD)
99 |
100 | #### `English:`
101 | - [Check this playlist](https://youtube.com/playlist?list=PL5HLK-oxmU3ptGN9z8qK2nRDsLdJyqitC)
102 |
103 |
104 | Then you will need to learn how to reuse portions of your app's UI by using fragments and navigation component.
105 |
106 | ### :paperclip: Resources:
107 | * Fragments: [Arabic Next Trend](https://youtube.com/playlist?list=PL25WpelterbakuEfYt-G-TzzzzIOAZQbK)
108 |
109 | ## Before moving to the next level you have to make sure that you understand these topics:
110 | - Design responsive android UI using XML
111 | - Accepting user inputs
112 | - Developing multi-screen applications
113 | - Making big lists of data without using many resources using recyclerview
114 | - Fragments
115 | - Navigation component
116 | - Using the Navigation graph
117 | - Navigating between fragments
118 | - Using Drawer layout and Bottom Navigation
119 | - Using safe args
120 | - :clipboard: **Build a simple android application to apply your knowledge**
121 |
122 | ---
123 |
124 | ## Kotlin:
125 | 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.
126 |
127 | 
128 | ### So... Why Kotlin?
129 | 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)
130 |
131 | We will start by learning the basics of the language.
132 |
133 | ### :paperclip: Resources:
134 |
135 | #### `Arabic:`
136 | - [Check this playlist](https://www.youtube.com/playlist?list=PLXjbGq0ERjFriC0igmYE9qUwwJfEHGJ8H) *(Recommended)*
137 | #### `English:`
138 | - [This course (Coursera) ](https://www.coursera.org/lecture/kotlin-for-java-developers/properties-GVJdx?fbclid=IwAR1nJo0ulDtPlVH3lFVCJKou9QqwfRpfvM6SnrGvobs2cNbymRMMiyG_XA0)
139 | or
140 | [This playlist](https://www.youtube.com/playlist?list=PLsyeobzWxl7rooJFZhc3qPLwVROovGCfh)
141 |
142 | ## Before moving to the next level you have to make sure that you understand these topics:
143 | - The basic syntax of Kotlin
144 | - Null safety concept
145 | - Looping
146 | - Functions and different types of them *inline, infix, extension, etc.*
147 | - Types in Kotlin
148 | - Companion objects
149 | - Higher-order functions
150 | - Operations on collections *filter, map etc.*
151 | - Generics
152 | - :clipboard: **Build a console app to apply the skills you have learned in this level**
153 |
154 | ---
155 |
156 | ## Android Intermediate:
157 | 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.
158 |
159 | 
160 | ### :paperclip: Resources:
161 |
162 | [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:
163 | * Before advancing to lesson 5 try to search about *Design Patterns* and their different types.
164 | * [`English`](https://www.youtube.com/playlist?list=PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc) *(Recommended)*
165 | * Before advancing to lesson 6 we recommend:
166 | * Learning some SQLite basics:
167 | * [`English`](https://youtube.com/playlist?list=PLS1QulWo1RIa0-Cs2Qx6GFyiIVVVS9lCS) *(Recommended)*
168 | * [`Arabic`](https://youtu.be/7DQnyLIXEZw?list=PLF7pjAYSxOFu78LrDkXoN8XczDLeci-Fx)
169 | * [`Document`](https://www.sqlitetutorial.net/) *(Additional)*
170 | * Learning Coroutines:
171 | * [`Arabic`](https://youtube.com/playlist?list=PLXjbGq0ERjFqGlzZFDMCHJA_PBvUIaIto) *(Recommended)*
172 | * [`English`](https://youtube.com/playlist?list=PLSrm9z4zp4mE-o3sPq-PqzGHoFAIsQFI6)
173 | * Each topic in this course is very important so you have to make sure you understand them well.
174 | * Try to follow each lesson by answering its QUIZs and make projects to apply what you have learned.
175 |
176 | ## Before moving to the next level you have to make sure that you understand these topics:
177 | - Developing Android apps using Kotlin.
178 | - Good understanding of Android lifecycle.
179 | - Design architectures *MVC, MVP, **MVVM*** [(Watch this)](https://www.youtube.com/playlist?list=PLe_W3T1SDsYgXzPjQK91xnOaF1iF3KDJ3).
180 | - SQLite basics and Room database.
181 | - Connect your app to the internet using Retrofit.
182 | - Multithreading using Coroutines.
183 | - Design adaptive layouts depending on the settings of the user's device.
184 | - :clipboard: **Build applications to apply the knowledge you have learned in each topic**
185 |
186 | ---
187 |
188 | ## Advanced:
189 | 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.
190 |
191 | 
192 |
193 | ### Topics to learn:
194 | * [Watch this](https://www.udacity.com/course/advanced-android-with-kotlin--ud940) Udacity course which discussing these topics:
195 | * Notifications.
196 | * Custom views and Canvas.
197 | * Making animations.
198 | * Testing.
199 | * Dependency Injection.
200 | * MVI:
201 | * [Arabic Playlist *Coding with nerds*](https://www.youtube.com/playlist?list=PLXjbGq0ERjFrtwxjYICoXCbHXLTd8qgM-).
202 | * [English Article](https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started).
203 | * Jetpack compose: [Follow this course](https://developer.android.com/courses/pathways/compose) - [This Repository for more content](https://github.com/jetpack-compose/jetpack-compose-awesome).
204 | * Services.
205 | * Broadcast reciever.
206 | * Content provider.
207 | * Multi-Module applications.
208 | * Live Data.
209 | * Firebase auth.
210 | * Cloud Firestore.
211 |
212 | ---
213 |
214 | ## What to do Next? :thinking:
215 | **`once you stop learning you start dying`**
216 |
217 | You have to continue learning more and more and try to be always up-to-date with the new technologies coming to the field.
218 |
219 | 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.
220 |
221 | 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.
222 |
--------------------------------------------------------------------------------
/images/Android Advanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Android Advanced.png
--------------------------------------------------------------------------------
/images/Android Cover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Android Cover.png
--------------------------------------------------------------------------------
/images/Android Development.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Android Development.png
--------------------------------------------------------------------------------
/images/Android Devices.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Android Devices.png
--------------------------------------------------------------------------------
/images/Android Inter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Android Inter.png
--------------------------------------------------------------------------------
/images/Kotlin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Kotlin.png
--------------------------------------------------------------------------------
/images/Learning Java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mSaayeh/Android-Roadmap/e81236518ad7fba04292916f1faf59f341ba1ab6/images/Learning Java.png
--------------------------------------------------------------------------------