From 28393491171d2a5339b048802a64e072f1957485 Mon Sep 17 00:00:00 2001
From: Ahmed Essameldin <37102071+ahmedessameldeen@users.noreply.github.com>
Date: Mon, 30 Jan 2023 04:51:28 +0200
Subject: [PATCH 1/3] Add roadmap bullet check-list
---
README.md | 255 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 255 insertions(+)
diff --git a/README.md b/README.md
index a1b22ec..b5a70c1 100644
--- a/README.md
+++ b/README.md
@@ -57,6 +57,261 @@ If you're interested in building a robust chat feature, which is an easy-to-use,
This project includes a demo project which shows the roadmap image. You can download the latest APK on the [Releases](https://github.com/skydoves/android-developer-roadmap/releases).
+## Roadmap list
+- - [ ] **Application Fundamentals**
+ - - [ ] Languages
+ - - [ ] Kotlin
+ - - [ ] Java
+ - - [ ] C++ (JNI)
+ - - [ ] Android Package
+ - - [ ] APK
+ - - [ ] AAB
+- - [ ] **Android Operating System**
+ - - [ ] Multi-User Linux
+ - - [ ] File Permissions
+ - - [ ] Resource Isolations
+ - - [ ] Process Management
+- - [ ] **Android Platform Architecture**
+ - - [ ] The Linux Kernel
+ - - [ ] Hardware Abstraction Layer
+ - - [ ] Android Runtime
+ - - [ ] Native Libraries
+ - - [ ] Java API Framework
+ - - [ ] System Apps
+- - [ ] **App Manifest**
+ - - [ ] Package
+ - - [ ] Application ID
+- - [ ] **App Components**
+ - - [ ] Activity (detailed later)
+ - - [ ] Service
+ - - [ ] Broadcast Receiver
+ - - [ ] Content Provider
+ - - [ ] Intent
+ - - [ ] Intent Filters
+ - - [ ] Explicit Intents
+ - - [ ] Implicit Intents
+- - [ ] **App Architecture**
+- - [ ] **App Entry Points**
+ - - [ ] Activities
+ - - [ ] Activity Lifecycles
+ - - [ ] Activity State Changes
+ - - [ ] Task and Back Stack
+ - - [ ] Parcelables and Bundles
+ - - [ ] App Shortcuts
+- - [ ] **App Navigation**
+ - - [ ] Navigation Component
+ - - [ ] Navigation Graph
+ - - [ ] Global Actions
+ - - [ ] Destinations
+ - - [ ] DeepLink
+ - - [ ] Fragments
+ - - [ ] DialogFragment
+ - - [ ] BottomSheetDialogFragment
+ - - [ ] Fragment Lifecycles
+ - - [ ] Fragment State Changes
+ - - [ ] Fragment Manager
+ - - [ ] Fragment Transactions
+ - - [ ] App Links
+ - - [ ] TabLayout
+ - - [ ] ViewPager
+ - - [ ] ViewPager2
+ - - [ ] Custom Back Navigation
+- - [ ] **App Startup**
+- - [ ] **Dependency Injection** (detailed later)
+- - [ ] **Architecture Components**
+ - - [ ] UI Layer
+ - - [ ] ViewBinding
+ - - [ ] DataBinding
+ - - [ ] Lifecycle
+ - - [ ] ViewModel
+ - - [ ] LiveData
+ - - [ ] Paging
+ - - [ ] Data Layer
+ - - [ ] Data Store
+ - - [ ] WorkManager
+- - [ ] **Design Patterns**
+ - - [ ] Builder Pattern
+ - - [ ] Factory Pattern
+ - - [ ] Dependency Injection
+ - - [ ] Dagger
+ - - [ ] Hilt
+ - - [ ] Koin
+ - - [ ] Kodein
+ - - [ ] Repository Pattern
+ - - [ ] Observer Pattern
+ - - [ ] Flow
+ - - [ ] RxJava/RxKotlin
+ - - [ ] LiveData
+- - [ ] **Architecture**
+ - - [ ] MVVM
+ - - [ ] MVP
+ - - [ ] MVI
+ - - [ ] MVC
+ - - [ ] Clean Architecture
+- - [ ] **Network**
+ - - [ ] OkHttp
+ - - [ ] Interceptor
+ - - [ ] Okio
+ - - [ ] Retrofit
+ - - [ ] Ktor
+ - - [ ] Volley
+ - - [ ] Apollo-Android
+- - [ ] **Image Loading**
+ - - [ ] Glide
+ - - [ ] Fresco
+ - - [ ] Coil
+ - - [ ] Picasso
+- - [ ] **Local Storage**
+ - - [ ] SQLite
+ - - [ ] SQLDelight
+ - - [ ] Room
+ - - [ ] DataStore
+ - - [ ] Realm
+ - - [ ] SharedPreferences
+- - [ ] **Asynchronous**
+ - - [ ] Coroutines
+ - - [ ] RxJava/RxKotlin
+ - - [ ] Thread
+ - - [ ] WorkManager
+- - [ ] **User Interface**
+ - - [ ] Layouts
+ - - [ ] ConstraintLayout
+ - - [ ] MotionLayout
+ - - [ ] LinearLayout
+ - - [ ] FrameLayout
+ - - [ ] Material
+ - - [ ] RecyclerView
+ - - [ ] Design Guides
+ - - [ ] Material
+ - - [ ] Material You
+ - - [ ] Neumorphism
+ - - [ ] Styles
+ - - [ ] Light Theme
+ - - [ ] Dark Theme
+ - - [ ] Message
+ - - [ ] Toast
+ - - [ ] Snackbar
+ - - [ ] Notification
+ - - [ ] Animation
+ - - [ ] ValueAnimator
+ - - [ ] ObjectAnimator
+ - - [ ] Lottie
+ - - [ ] Material Motion
+- - [ ] **Compose UI:**
+ - - [ ] Recomposition
+ - - [ ] Snapshot
+ - - [ ] State:
+ - - [ ] State Hoisting
+ - - [ ] MutableState
+ - - [ ] remember
+ - - [ ] rememberSaveable
+ - - [ ] Side-Effects:
+ - - [ ] LaunchedEffect
+ - - [ ] DisposableEffect
+ - - [ ] produceState
+ - - [ ] derivedStateOf
+ - - [ ] snapshotFlow
+ - - [ ] Theming:
+ - - [ ] Material
+ - - [ ] Color
+ - - [ ] Typography
+ - - [ ] Shape
+ - - [ ] Custom
+ - - [ ] Dimens
+ - - [ ] Factories
+ - - [ ] Data
+ - - [ ] Modifier:
+ - - [ ] Modifier Order
+ - - [ ] Chaining
+ - - [ ] Composed Modifier
+ - - [ ] Layout:
+ - - [ ] Column
+ - - [ ] Box
+ - - [ ] Row
+ - - [ ] ConstraintLayout
+ - - [ ] List:
+ - - [ ] LazyColumn
+ - - [ ] LazyRow
+ - - [ ] LazyVerticalGrid
+ - - [ ] LazyPagingItems
+ - - [ ] Image:
+ - - [ ] Icon
+ - - [ ] Image
+ - - [ ] coil-compose
+ - - [ ] Landscapist
+ - - [ ] Text:
+ - - [ ] TextField
+ - - [ ] OutlinedTextField
+ - - [ ] ClickableText
+ - - [ ] Graphics:
+ - - [ ] Surface
+ - - [ ] Canvas
+ - - [ ] Gestures:
+ - - [ ] Scrolling
+ - - [ ] Dragging
+ - - [ ] Swiping
+ - - [ ] Zooming
+ - - [ ] Animation:
+ - - [ ] AnimatedVisibility
+ - - [ ] AnimatedContent
+ - - [ ] Crossfade
+ - - [ ] rememberInfiniteTransition
+ - - [ ] animateContentSize
+ - - [ ] updateTransition
+ - - [ ] animate*AsState
+ - - [ ] AnimationState
+ - - [ ] animate
+ - - [ ] Animatable
+ - - [ ] Animation
+ - - [ ] CompositionLocal:
+ - - [ ] CompositionLocalProvider
+ - - [ ] compositionLocalOf
+ - - [ ] staticCompositionLocalOf
+- - [ ] **Service:**
+ - - [ ] Google:
+ - - [ ] Google Play Services
+ - - [ ] Google Maps
+ - - [ ] Firebase:
+ - - [ ] Authentication
+ - - [ ] Crashlytics
+ - - [ ] Remote Config
+ - - [ ] Cloud Messaging
+ - - [ ] FiresStore
+ - - [ ] Realtime Database
+ - - [ ] Advertisements:
+ - - [ ] Google AdMob
+ - - [ ] Meta Audience Network
+ - - [ ] MoPub
+ - - [ ] **Code Analysis & Testing**:
+ - - [ ] Linter:
+ - - [ ] Ktlint
+ - - [ ] Detekt
+ - - [ ] Android Lint
+ - - [ ] Debugging:
+ - - [ ] Timber
+ - - [ ] LeakCanary
+ - - [ ] Stetho
+ - - [ ] Chucker
+ - - [ ] Unit Testing:
+ - - [ ] Unit Test:
+ - - [ ] JUnit
+ - - [ ] Kluent
+ - - [ ] Mockk
+ - - [ ] Android Test:
+ - - [ ] Robolectric
+ - - [ ] Espresso
+ - - [ ] Kaspresso
+ - - [ ] Benchmark
+- - [ ] **CI/CD**:
+ - - [ ] GitHub Actions
+ - - [ ] Jenkins
+ - - [ ] Travis CI
+ - - [ ] Circle CI
+ - - [ ] Bitrise
+- - [ ] **QA & App Publishing**:
+ - - [ ] Firebase App Distribution
+ - - [ ] Google Play
+
## 🤝 Contribution
This project doesn't cover everything, so if something is missing or should be fixed, anyone can contribute to this project by following the [CONTRIBUTING](CONTRIBUTING.md) guides.
From 025b3997b28f5c115a0f8ef804f25cfea62e8ba5 Mon Sep 17 00:00:00 2001
From: Ahmed Essameldin <37102071+ahmedessameldeen@users.noreply.github.com>
Date: Mon, 30 Jan 2023 05:01:41 +0200
Subject: [PATCH 2/3] Remove checkboxes
---
README.md | 507 +++++++++++++++++++++++++++---------------------------
1 file changed, 253 insertions(+), 254 deletions(-)
diff --git a/README.md b/README.md
index b5a70c1..4bfc5ce 100644
--- a/README.md
+++ b/README.md
@@ -57,260 +57,259 @@ If you're interested in building a robust chat feature, which is an easy-to-use,
This project includes a demo project which shows the roadmap image. You can download the latest APK on the [Releases](https://github.com/skydoves/android-developer-roadmap/releases).
-## Roadmap list
-- - [ ] **Application Fundamentals**
- - - [ ] Languages
- - - [ ] Kotlin
- - - [ ] Java
- - - [ ] C++ (JNI)
- - - [ ] Android Package
- - - [ ] APK
- - - [ ] AAB
-- - [ ] **Android Operating System**
- - - [ ] Multi-User Linux
- - - [ ] File Permissions
- - - [ ] Resource Isolations
- - - [ ] Process Management
-- - [ ] **Android Platform Architecture**
- - - [ ] The Linux Kernel
- - - [ ] Hardware Abstraction Layer
- - - [ ] Android Runtime
- - - [ ] Native Libraries
- - - [ ] Java API Framework
- - - [ ] System Apps
-- - [ ] **App Manifest**
- - - [ ] Package
- - - [ ] Application ID
-- - [ ] **App Components**
- - - [ ] Activity (detailed later)
- - - [ ] Service
- - - [ ] Broadcast Receiver
- - - [ ] Content Provider
- - - [ ] Intent
- - - [ ] Intent Filters
- - - [ ] Explicit Intents
- - - [ ] Implicit Intents
-- - [ ] **App Architecture**
-- - [ ] **App Entry Points**
- - - [ ] Activities
- - - [ ] Activity Lifecycles
- - - [ ] Activity State Changes
- - - [ ] Task and Back Stack
- - - [ ] Parcelables and Bundles
- - - [ ] App Shortcuts
-- - [ ] **App Navigation**
- - - [ ] Navigation Component
- - - [ ] Navigation Graph
- - - [ ] Global Actions
- - - [ ] Destinations
- - - [ ] DeepLink
- - - [ ] Fragments
- - - [ ] DialogFragment
- - - [ ] BottomSheetDialogFragment
- - - [ ] Fragment Lifecycles
- - - [ ] Fragment State Changes
- - - [ ] Fragment Manager
- - - [ ] Fragment Transactions
- - - [ ] App Links
- - - [ ] TabLayout
- - - [ ] ViewPager
- - - [ ] ViewPager2
- - - [ ] Custom Back Navigation
-- - [ ] **App Startup**
-- - [ ] **Dependency Injection** (detailed later)
-- - [ ] **Architecture Components**
- - - [ ] UI Layer
- - - [ ] ViewBinding
- - - [ ] DataBinding
- - - [ ] Lifecycle
- - - [ ] ViewModel
- - - [ ] LiveData
- - - [ ] Paging
- - - [ ] Data Layer
- - - [ ] Data Store
- - - [ ] WorkManager
-- - [ ] **Design Patterns**
- - - [ ] Builder Pattern
- - - [ ] Factory Pattern
- - - [ ] Dependency Injection
- - - [ ] Dagger
- - - [ ] Hilt
- - - [ ] Koin
- - - [ ] Kodein
- - - [ ] Repository Pattern
- - - [ ] Observer Pattern
- - - [ ] Flow
- - - [ ] RxJava/RxKotlin
- - - [ ] LiveData
-- - [ ] **Architecture**
- - - [ ] MVVM
- - - [ ] MVP
- - - [ ] MVI
- - - [ ] MVC
- - - [ ] Clean Architecture
-- - [ ] **Network**
- - - [ ] OkHttp
- - - [ ] Interceptor
- - - [ ] Okio
- - - [ ] Retrofit
- - - [ ] Ktor
- - - [ ] Volley
- - - [ ] Apollo-Android
-- - [ ] **Image Loading**
- - - [ ] Glide
- - - [ ] Fresco
- - - [ ] Coil
- - - [ ] Picasso
-- - [ ] **Local Storage**
- - - [ ] SQLite
- - - [ ] SQLDelight
- - - [ ] Room
- - - [ ] DataStore
- - - [ ] Realm
- - - [ ] SharedPreferences
-- - [ ] **Asynchronous**
- - - [ ] Coroutines
- - - [ ] RxJava/RxKotlin
- - - [ ] Thread
- - - [ ] WorkManager
-- - [ ] **User Interface**
- - - [ ] Layouts
- - - [ ] ConstraintLayout
- - - [ ] MotionLayout
- - - [ ] LinearLayout
- - - [ ] FrameLayout
- - - [ ] Material
- - - [ ] RecyclerView
- - - [ ] Design Guides
- - - [ ] Material
- - - [ ] Material You
- - - [ ] Neumorphism
- - - [ ] Styles
- - - [ ] Light Theme
- - - [ ] Dark Theme
- - - [ ] Message
- - - [ ] Toast
- - - [ ] Snackbar
- - - [ ] Notification
- - - [ ] Animation
- - - [ ] ValueAnimator
- - - [ ] ObjectAnimator
- - - [ ] Lottie
- - - [ ] Material Motion
-- - [ ] **Compose UI:**
- - - [ ] Recomposition
- - - [ ] Snapshot
- - - [ ] State:
- - - [ ] State Hoisting
- - - [ ] MutableState
- - - [ ] remember
- - - [ ] rememberSaveable
- - - [ ] Side-Effects:
- - - [ ] LaunchedEffect
- - - [ ] DisposableEffect
- - - [ ] produceState
- - - [ ] derivedStateOf
- - - [ ] snapshotFlow
- - - [ ] Theming:
- - - [ ] Material
- - - [ ] Color
- - - [ ] Typography
- - - [ ] Shape
- - - [ ] Custom
- - - [ ] Dimens
- - - [ ] Factories
- - - [ ] Data
- - - [ ] Modifier:
- - - [ ] Modifier Order
- - - [ ] Chaining
- - - [ ] Composed Modifier
- - - [ ] Layout:
- - - [ ] Column
- - - [ ] Box
- - - [ ] Row
- - - [ ] ConstraintLayout
- - - [ ] List:
- - - [ ] LazyColumn
- - - [ ] LazyRow
- - - [ ] LazyVerticalGrid
- - - [ ] LazyPagingItems
- - - [ ] Image:
- - - [ ] Icon
- - - [ ] Image
- - - [ ] coil-compose
- - - [ ] Landscapist
- - - [ ] Text:
- - - [ ] TextField
- - - [ ] OutlinedTextField
- - - [ ] ClickableText
- - - [ ] Graphics:
- - - [ ] Surface
- - - [ ] Canvas
- - - [ ] Gestures:
- - - [ ] Scrolling
- - - [ ] Dragging
- - - [ ] Swiping
- - - [ ] Zooming
- - - [ ] Animation:
- - - [ ] AnimatedVisibility
- - - [ ] AnimatedContent
- - - [ ] Crossfade
- - - [ ] rememberInfiniteTransition
- - - [ ] animateContentSize
- - - [ ] updateTransition
- - - [ ] animate*AsState
- - - [ ] AnimationState
- - - [ ] animate
- - - [ ] Animatable
- - - [ ] Animation
- - - [ ] CompositionLocal:
- - - [ ] CompositionLocalProvider
- - - [ ] compositionLocalOf
- - - [ ] staticCompositionLocalOf
-- - [ ] **Service:**
- - - [ ] Google:
- - - [ ] Google Play Services
- - - [ ] Google Maps
- - - [ ] Firebase:
- - - [ ] Authentication
- - - [ ] Crashlytics
- - - [ ] Remote Config
- - - [ ] Cloud Messaging
- - - [ ] FiresStore
- - - [ ] Realtime Database
- - - [ ] Advertisements:
- - - [ ] Google AdMob
- - - [ ] Meta Audience Network
- - - [ ] MoPub
- - - [ ] **Code Analysis & Testing**:
- - - [ ] Linter:
- - - [ ] Ktlint
- - - [ ] Detekt
- - - [ ] Android Lint
- - - [ ] Debugging:
- - - [ ] Timber
- - - [ ] LeakCanary
- - - [ ] Stetho
- - - [ ] Chucker
- - - [ ] Unit Testing:
- - - [ ] Unit Test:
- - - [ ] JUnit
- - - [ ] Kluent
- - - [ ] Mockk
- - - [ ] Android Test:
- - - [ ] Robolectric
- - - [ ] Espresso
- - - [ ] Kaspresso
- - - [ ] Benchmark
-- - [ ] **CI/CD**:
- - - [ ] GitHub Actions
- - - [ ] Jenkins
- - - [ ] Travis CI
- - - [ ] Circle CI
- - - [ ] Bitrise
-- - [ ] **QA & App Publishing**:
- - - [ ] Firebase App Distribution
- - - [ ] Google Play
+- Application Fundamentals
+ - Languages
+ - Kotlin
+ - Java
+ - C++ (JNI)
+ - Android Package
+ - APK
+ - AAB
+- Android Operating System
+ - Multi-User Linux
+ - File Permissions
+ - Resource Isolations
+ - Process Management
+- Android Platform Architecture
+ - The Linux Kernel
+ - Hardware Abstraction Layer
+ - Android Runtime
+ - Native Libraries
+ - Java API Framework
+ - System Apps
+- App Manifest
+ - Package
+ - Application ID
+- App Components
+ - Activity (detailed later)
+ - Service
+ - Broadcast Receiver
+ - Content Provider
+ - Intent
+ - Intent Filters
+ - Explicit Intents
+ - Implicit Intents
+- App Architecture
+- App Entry Points
+ - Activities
+ - Activity Lifecycles
+ - Activity State Changes
+ - Task and Back Stack
+ - Parcelables and Bundles
+ - App Shortcuts
+- App Navigation
+ - Navigation Component
+ - Navigation Graph
+ - Global Actions
+ - Destinations
+ - DeepLink
+ - Fragments
+ - DialogFragment
+ - BottomSheetDialogFragment
+ - Fragment Lifecycles
+ - Fragment State Changes
+ - Fragment Manager
+ - Fragment Transactions
+ - App Links
+ - TabLayout
+ - ViewPager
+ - ViewPager2
+ - Custom Back Navigation
+- App Startup
+- Dependency Injection (detailed later)
+- Architecture Components
+ - UI Layer
+ - ViewBinding
+ - DataBinding
+ - Lifecycle
+ - ViewModel
+ - LiveData
+ - Paging
+ - Data Layer
+ - Data Store
+ - WorkManager
+- Design Patterns
+ - Builder Pattern
+ - Factory Pattern
+ - Dependency Injection
+ - Dagger
+ - Hilt
+ - Koin
+ - Kodein
+ - Repository Pattern
+ - Observer Pattern
+ - Flow
+ - RxJava/RxKotlin
+ - LiveData
+- Architecture
+ - MVVM
+ - MVP
+ - MVI
+ - MVC
+ - Clean Architecture
+- Network
+ - OkHttp
+ - Interceptor
+ - Okio
+ - Retrofit
+ - Ktor
+ - Volley
+ - Apollo-Android
+- Image Loading
+ - Glide
+ - Fresco
+ - Coil
+ - Picasso
+- Local Storage
+ - SQLite
+ - SQLDelight
+ - Room
+ - DataStore
+ - Realm
+ - SharedPreferences
+- Asynchronous
+ - Coroutines
+ - RxJava/RxKotlin
+ - Thread
+ - WorkManager
+- User Interface
+ - Layouts
+ - ConstraintLayout
+ - MotionLayout
+ - LinearLayout
+ - FrameLayout
+ - Material
+ - RecyclerView
+ - Design Guides
+ - Material
+ - Material You
+ - Neumorphism
+ - Styles
+ - Light Theme
+ - Dark Theme
+ - Message
+ - Toast
+ - Snackbar
+ - Notification
+ - Animation
+ - ValueAnimator
+ - ObjectAnimator
+ - Lottie
+ - Material Motion
+- Compose UI:
+ - Recomposition
+ - Snapshot
+ - State:
+ - State Hoisting
+ - MutableState
+ - remember
+ - rememberSaveable
+ - Side-Effects:
+ - LaunchedEffect
+ - DisposableEffect
+ - produceState
+ - derivedStateOf
+ - snapshotFlow
+ - Theming:
+ - Material
+ - Color
+ - Typography
+ - Shape
+ - Custom
+ - Dimens
+ - Factories
+ - Data
+ - Modifier:
+ - Modifier Order
+ - Chaining
+ - Composed Modifier
+ - Layout:
+ - Column
+ - Box
+ - Row
+ - ConstraintLayout
+ - List:
+ - LazyColumn
+ - LazyRow
+ - LazyVerticalGrid
+ - LazyPagingItems
+ - Image:
+ - Icon
+ - Image
+ - coil-compose
+ - Landscapist
+ - Text:
+ - TextField
+ - OutlinedTextField
+ - ClickableText
+ - Graphics:
+ - Surface
+ - Canvas
+ - Gestures:
+ - Scrolling
+ - Dragging
+ - Swiping
+ - Zooming
+ - Animation:
+ - AnimatedVisibility
+ - AnimatedContent
+ - Crossfade
+ - rememberInfiniteTransition
+ - animateContentSize
+ - updateTransition
+ - animate*AsState
+ - AnimationState
+ - animate
+ - Animatable
+ - Animation
+ - CompositionLocal:
+ - CompositionLocalProvider
+ - compositionLocalOf
+ - staticCompositionLocalOf
+- Service:
+ - Google:
+ - Google Play Services
+ - Google Maps
+ - Firebase:
+ - Authentication
+ - Crashlytics
+ - Remote Config
+ - Cloud Messaging
+ - FiresStore
+ - Realtime Database
+- Advertisements:
+ - Google AdMob
+ - Meta Audience Network
+ - MoPub
+ Code Analysis & Testing:
+- Linter:
+ - Ktlint
+ - Detekt
+ - Android Lint
+- Debugging:
+ - Timber
+ - LeakCanary
+ - Stetho
+ - Chucker
+- Unit Testing:
+ - Unit Test:
+ - JUnit
+ - Kluent
+ - Mockk
+ - Android Test:
+ - Robolectric
+ - Espresso
+ - Kaspresso
+- Benchmark
+- CI/CD:
+ - GitHub Actions
+ - Jenkins
+ - Travis CI
+ - Circle CI
+ - Bitrise
+- QA & App Publishing:
+ - Firebase App Distribution
+ - Google Play
## 🤝 Contribution
From d135387b0ee01f9f379193cb800d00ae89b216f2 Mon Sep 17 00:00:00 2001
From: Ahmed Essameldin <37102071+ahmedessameldeen@users.noreply.github.com>
Date: Mon, 30 Jan 2023 05:17:11 +0200
Subject: [PATCH 3/3] Move list below the roadmap image
---
README.md | 510 +++++++++++++++++++++++++++---------------------------
1 file changed, 256 insertions(+), 254 deletions(-)
diff --git a/README.md b/README.md
index 4bfc5ce..f50b1b3 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,262 @@ In addition, **you don't need to learn everything from this roadmap**. So we rec
![Roadmap](images/android_developer_roadmap.png)
+
+ ## Content list
+- - [ ] **Application Fundamentals**
+ - - [ ] Languages
+ - - [ ] Kotlin
+ - - [ ] Java
+ - - [ ] C++ (JNI)
+ - - [ ] Android Package
+ - - [ ] APK
+ - - [ ] AAB
+- - [ ] **Android Operating System**
+ - - [ ] Multi-User Linux
+ - - [ ] File Permissions
+ - - [ ] Resource Isolations
+ - - [ ] Process Management
+- - [ ] **Android Platform Architecture**
+ - - [ ] The Linux Kernel
+ - - [ ] Hardware Abstraction Layer
+ - - [ ] Android Runtime
+ - - [ ] Native Libraries
+ - - [ ] Java API Framework
+ - - [ ] System Apps
+- - [ ] **App Manifest**
+ - - [ ] Package
+ - - [ ] Application ID
+- - [ ] **App Components**
+ - - [ ] Activity (detailed later)
+ - - [ ] Service
+ - - [ ] Broadcast Receiver
+ - - [ ] Content Provider
+ - - [ ] Intent
+ - - [ ] Intent Filters
+ - - [ ] Explicit Intents
+ - - [ ] Implicit Intents
+- - [ ] **App Architecture**
+- - [ ] **App Entry Points**
+ - - [ ] Activities
+ - - [ ] Activity Lifecycles
+ - - [ ] Activity State Changes
+ - - [ ] Task and Back Stack
+ - - [ ] Parcelables and Bundles
+ - - [ ] App Shortcuts
+- - [ ] **App Navigation**
+ - - [ ] Navigation Component
+ - - [ ] Navigation Graph
+ - - [ ] Global Actions
+ - - [ ] Destinations
+ - - [ ] DeepLink
+ - - [ ] Fragments
+ - - [ ] DialogFragment
+ - - [ ] BottomSheetDialogFragment
+ - - [ ] Fragment Lifecycles
+ - - [ ] Fragment State Changes
+ - - [ ] Fragment Manager
+ - - [ ] Fragment Transactions
+ - - [ ] App Links
+ - - [ ] TabLayout
+ - - [ ] ViewPager
+ - - [ ] ViewPager2
+ - - [ ] Custom Back Navigation
+- - [ ] **App Startup**
+- - [ ] **Dependency Injection** (detailed later)
+- - [ ] **Architecture Components**
+ - - [ ] UI Layer
+ - - [ ] ViewBinding
+ - - [ ] DataBinding
+ - - [ ] Lifecycle
+ - - [ ] ViewModel
+ - - [ ] LiveData
+ - - [ ] Paging
+ - - [ ] Data Layer
+ - - [ ] Data Store
+ - - [ ] WorkManager
+- - [ ] **Design Patterns**
+ - - [ ] Builder Pattern
+ - - [ ] Factory Pattern
+ - - [ ] Dependency Injection
+ - - [ ] Dagger
+ - - [ ] Hilt
+ - - [ ] Koin
+ - - [ ] Kodein
+ - - [ ] Repository Pattern
+ - - [ ] Observer Pattern
+ - - [ ] Flow
+ - - [ ] RxJava/RxKotlin
+ - - [ ] LiveData
+- - [ ] **Architecture**
+ - - [ ] MVVM
+ - - [ ] MVP
+ - - [ ] MVI
+ - - [ ] MVC
+ - - [ ] Clean Architecture
+- - [ ] **Network**
+ - - [ ] OkHttp
+ - - [ ] Interceptor
+ - - [ ] Okio
+ - - [ ] Retrofit
+ - - [ ] Ktor
+ - - [ ] Volley
+ - - [ ] Apollo-Android
+- - [ ] **Image Loading**
+ - - [ ] Glide
+ - - [ ] Fresco
+ - - [ ] Coil
+ - - [ ] Picasso
+- - [ ] **Local Storage**
+ - - [ ] SQLite
+ - - [ ] SQLDelight
+ - - [ ] Room
+ - - [ ] DataStore
+ - - [ ] Realm
+ - - [ ] SharedPreferences
+- - [ ] **Asynchronous**
+ - - [ ] Coroutines
+ - - [ ] RxJava/RxKotlin
+ - - [ ] Thread
+ - - [ ] WorkManager
+- - [ ] **User Interface**
+ - - [ ] Layouts
+ - - [ ] ConstraintLayout
+ - - [ ] MotionLayout
+ - - [ ] LinearLayout
+ - - [ ] FrameLayout
+ - - [ ] Material
+ - - [ ] RecyclerView
+ - - [ ] Design Guides
+ - - [ ] Material
+ - - [ ] Material You
+ - - [ ] Neumorphism
+ - - [ ] Styles
+ - - [ ] Light Theme
+ - - [ ] Dark Theme
+ - - [ ] Message
+ - - [ ] Toast
+ - - [ ] Snackbar
+ - - [ ] Notification
+ - - [ ] Animation
+ - - [ ] ValueAnimator
+ - - [ ] ObjectAnimator
+ - - [ ] Lottie
+ - - [ ] Material Motion
+- - [ ] **Compose UI:**
+ - - [ ] Recomposition
+ - - [ ] Snapshot
+ - - [ ] State:
+ - - [ ] State Hoisting
+ - - [ ] MutableState
+ - - [ ] remember
+ - - [ ] rememberSaveable
+ - - [ ] Side-Effects:
+ - - [ ] LaunchedEffect
+ - - [ ] DisposableEffect
+ - - [ ] produceState
+ - - [ ] derivedStateOf
+ - - [ ] snapshotFlow
+ - - [ ] Theming:
+ - - [ ] Material
+ - - [ ] Color
+ - - [ ] Typography
+ - - [ ] Shape
+ - - [ ] Custom
+ - - [ ] Dimens
+ - - [ ] Factories
+ - - [ ] Data
+ - - [ ] Modifier:
+ - - [ ] Modifier Order
+ - - [ ] Chaining
+ - - [ ] Composed Modifier
+ - - [ ] Layout:
+ - - [ ] Column
+ - - [ ] Box
+ - - [ ] Row
+ - - [ ] ConstraintLayout
+ - - [ ] List:
+ - - [ ] LazyColumn
+ - - [ ] LazyRow
+ - - [ ] LazyVerticalGrid
+ - - [ ] LazyPagingItems
+ - - [ ] Image:
+ - - [ ] Icon
+ - - [ ] Image
+ - - [ ] coil-compose
+ - - [ ] Landscapist
+ - - [ ] Text:
+ - - [ ] TextField
+ - - [ ] OutlinedTextField
+ - - [ ] ClickableText
+ - - [ ] Graphics:
+ - - [ ] Surface
+ - - [ ] Canvas
+ - - [ ] Gestures:
+ - - [ ] Scrolling
+ - - [ ] Dragging
+ - - [ ] Swiping
+ - - [ ] Zooming
+ - - [ ] Animation:
+ - - [ ] AnimatedVisibility
+ - - [ ] AnimatedContent
+ - - [ ] Crossfade
+ - - [ ] rememberInfiniteTransition
+ - - [ ] animateContentSize
+ - - [ ] updateTransition
+ - - [ ] animate*AsState
+ - - [ ] AnimationState
+ - - [ ] animate
+ - - [ ] Animatable
+ - - [ ] Animation
+ - - [ ] CompositionLocal:
+ - - [ ] CompositionLocalProvider
+ - - [ ] compositionLocalOf
+ - - [ ] staticCompositionLocalOf
+- - [ ] **Service:**
+ - - [ ] Google:
+ - - [ ] Google Play Services
+ - - [ ] Google Maps
+ - - [ ] Firebase:
+ - - [ ] Authentication
+ - - [ ] Crashlytics
+ - - [ ] Remote Config
+ - - [ ] Cloud Messaging
+ - - [ ] FiresStore
+ - - [ ] Realtime Database
+ - - [ ] Advertisements:
+ - - [ ] Google AdMob
+ - - [ ] Meta Audience Network
+ - - [ ] MoPub
+ - - [ ] **Code Analysis & Testing**:
+ - - [ ] Linter:
+ - - [ ] Ktlint
+ - - [ ] Detekt
+ - - [ ] Android Lint
+ - - [ ] Debugging:
+ - - [ ] Timber
+ - - [ ] LeakCanary
+ - - [ ] Stetho
+ - - [ ] Chucker
+ - - [ ] Unit Testing:
+ - - [ ] Unit Test:
+ - - [ ] JUnit
+ - - [ ] Kluent
+ - - [ ] Mockk
+ - - [ ] Android Test:
+ - - [ ] Robolectric
+ - - [ ] Espresso
+ - - [ ] Kaspresso
+ - - [ ] Benchmark
+- - [ ] **CI/CD**:
+ - - [ ] GitHub Actions
+ - - [ ] Jenkins
+ - - [ ] Travis CI
+ - - [ ] Circle CI
+ - - [ ] Bitrise
+- - [ ] **QA & App Publishing**:
+ - - [ ] Firebase App Distribution
+ - - [ ] Google Play
+
## ✍️ Articles
@@ -56,260 +312,6 @@ If you're interested in building a robust chat feature, which is an easy-to-use,
## 📱 Demo Application
This project includes a demo project which shows the roadmap image. You can download the latest APK on the [Releases](https://github.com/skydoves/android-developer-roadmap/releases).
-
-- Application Fundamentals
- - Languages
- - Kotlin
- - Java
- - C++ (JNI)
- - Android Package
- - APK
- - AAB
-- Android Operating System
- - Multi-User Linux
- - File Permissions
- - Resource Isolations
- - Process Management
-- Android Platform Architecture
- - The Linux Kernel
- - Hardware Abstraction Layer
- - Android Runtime
- - Native Libraries
- - Java API Framework
- - System Apps
-- App Manifest
- - Package
- - Application ID
-- App Components
- - Activity (detailed later)
- - Service
- - Broadcast Receiver
- - Content Provider
- - Intent
- - Intent Filters
- - Explicit Intents
- - Implicit Intents
-- App Architecture
-- App Entry Points
- - Activities
- - Activity Lifecycles
- - Activity State Changes
- - Task and Back Stack
- - Parcelables and Bundles
- - App Shortcuts
-- App Navigation
- - Navigation Component
- - Navigation Graph
- - Global Actions
- - Destinations
- - DeepLink
- - Fragments
- - DialogFragment
- - BottomSheetDialogFragment
- - Fragment Lifecycles
- - Fragment State Changes
- - Fragment Manager
- - Fragment Transactions
- - App Links
- - TabLayout
- - ViewPager
- - ViewPager2
- - Custom Back Navigation
-- App Startup
-- Dependency Injection (detailed later)
-- Architecture Components
- - UI Layer
- - ViewBinding
- - DataBinding
- - Lifecycle
- - ViewModel
- - LiveData
- - Paging
- - Data Layer
- - Data Store
- - WorkManager
-- Design Patterns
- - Builder Pattern
- - Factory Pattern
- - Dependency Injection
- - Dagger
- - Hilt
- - Koin
- - Kodein
- - Repository Pattern
- - Observer Pattern
- - Flow
- - RxJava/RxKotlin
- - LiveData
-- Architecture
- - MVVM
- - MVP
- - MVI
- - MVC
- - Clean Architecture
-- Network
- - OkHttp
- - Interceptor
- - Okio
- - Retrofit
- - Ktor
- - Volley
- - Apollo-Android
-- Image Loading
- - Glide
- - Fresco
- - Coil
- - Picasso
-- Local Storage
- - SQLite
- - SQLDelight
- - Room
- - DataStore
- - Realm
- - SharedPreferences
-- Asynchronous
- - Coroutines
- - RxJava/RxKotlin
- - Thread
- - WorkManager
-- User Interface
- - Layouts
- - ConstraintLayout
- - MotionLayout
- - LinearLayout
- - FrameLayout
- - Material
- - RecyclerView
- - Design Guides
- - Material
- - Material You
- - Neumorphism
- - Styles
- - Light Theme
- - Dark Theme
- - Message
- - Toast
- - Snackbar
- - Notification
- - Animation
- - ValueAnimator
- - ObjectAnimator
- - Lottie
- - Material Motion
-- Compose UI:
- - Recomposition
- - Snapshot
- - State:
- - State Hoisting
- - MutableState
- - remember
- - rememberSaveable
- - Side-Effects:
- - LaunchedEffect
- - DisposableEffect
- - produceState
- - derivedStateOf
- - snapshotFlow
- - Theming:
- - Material
- - Color
- - Typography
- - Shape
- - Custom
- - Dimens
- - Factories
- - Data
- - Modifier:
- - Modifier Order
- - Chaining
- - Composed Modifier
- - Layout:
- - Column
- - Box
- - Row
- - ConstraintLayout
- - List:
- - LazyColumn
- - LazyRow
- - LazyVerticalGrid
- - LazyPagingItems
- - Image:
- - Icon
- - Image
- - coil-compose
- - Landscapist
- - Text:
- - TextField
- - OutlinedTextField
- - ClickableText
- - Graphics:
- - Surface
- - Canvas
- - Gestures:
- - Scrolling
- - Dragging
- - Swiping
- - Zooming
- - Animation:
- - AnimatedVisibility
- - AnimatedContent
- - Crossfade
- - rememberInfiniteTransition
- - animateContentSize
- - updateTransition
- - animate*AsState
- - AnimationState
- - animate
- - Animatable
- - Animation
- - CompositionLocal:
- - CompositionLocalProvider
- - compositionLocalOf
- - staticCompositionLocalOf
-- Service:
- - Google:
- - Google Play Services
- - Google Maps
- - Firebase:
- - Authentication
- - Crashlytics
- - Remote Config
- - Cloud Messaging
- - FiresStore
- - Realtime Database
-- Advertisements:
- - Google AdMob
- - Meta Audience Network
- - MoPub
- Code Analysis & Testing:
-- Linter:
- - Ktlint
- - Detekt
- - Android Lint
-- Debugging:
- - Timber
- - LeakCanary
- - Stetho
- - Chucker
-- Unit Testing:
- - Unit Test:
- - JUnit
- - Kluent
- - Mockk
- - Android Test:
- - Robolectric
- - Espresso
- - Kaspresso
-- Benchmark
-- CI/CD:
- - GitHub Actions
- - Jenkins
- - Travis CI
- - Circle CI
- - Bitrise
-- QA & App Publishing:
- - Firebase App Distribution
- - Google Play
## 🤝 Contribution