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