Skip to content
Commitwise
Menu

Android Development

Build Android apps with Kotlin and Jetpack Compose: lifecycle, state, coroutines, architecture and releasing on Google Play.

16 lessons
0 of 16 completed
  1. 01

    Kotlin for Android

    The Kotlin you need for Android development, from null safety, data classes and lambdas to scope functions, lateinit and lazy, and the Java interop traps that come from the Android SDK, with Java side by side where it helps.

    4–30 min beginner Junior & senior

  2. 02

    Jetpack Compose Basics

    Build your first Compose screens from composable functions, modifiers, Row, Column and Box, understand why modifier order matters and how constraints decide sizes, and make a screen react to taps.

    7–30 min beginner Junior & senior

  3. 03

    State and Recomposition

    Make Jetpack Compose screens update when they should and keep their state when they should, with remember, rememberSaveable, state hoisting and ViewModels.

    9–45 min beginner Junior & senior

  4. 04

    Activity lifecycle and configuration changes

    Know when Android creates, pauses, stops and destroys your Activity, what survives a rotation and what survives the system killing your app, and how to run work only while the screen is visible, in Kotlin with Java where it helps.

    4–25 min beginner Junior & senior

  5. 05

    ViewModel and unidirectional data flow

    Keep screen state in a ViewModel, expose it as one immutable UiState, send user actions back as events, and survive rotation and process death on Android.

    6–35 min beginner Junior & senior

  6. 06

    Coroutines and Flow

    Do background work without blocking the UI using suspend functions, scopes and dispatchers, and model data that changes over time with Flow and StateFlow on Android.

    5–30 min intermediate Junior & senior

  7. 07

    Navigation

    Move between Compose screens with Navigation Compose and type-safe routes, pass ids instead of objects, return results, control the back stack for login flows and bottom navigation, and open screens from deep links.

    4–20 min intermediate Junior & senior

  8. 08

    Networking with Retrofit and Ktor

    Call a REST API from an Android app with Retrofit or Ktor Client and kotlinx.serialization, turn HTTP and network failures into results the UI can show, add auth headers and timeouts with interceptors, and keep requests off the main thread and out of the composables.

    4–30 min intermediate Junior & senior

  9. 09

    Room database

    Store data on the device with Room, observe queries as Flow so the UI updates itself, make the local database the single source of truth for offline-first screens, and change the schema with migrations that never lose user data.

    3–30 min intermediate Junior & senior

  10. 10

    Dependency injection with Hilt

    Wire an Android app together with Hilt, using constructor injection, modules for third-party types and interfaces, scopes that match how long objects should live, @HiltViewModel for screens, and test replacements without changing production code.

    3–25 min intermediate Junior & senior

  11. 11

    WorkManager and background work

    Run work that must finish even if the user leaves the app or the phone restarts, with WorkManager's constraints, retries with backoff, unique and chained work, periodic jobs and expedited work, and know when to use a coroutine, a foreground service or nothing at all.

    4–25 min intermediate Junior & senior

  12. 12

    Architecture: MVVM, MVI and Clean

    Structure an Android app in UI, domain and data layers, make the local database the source of truth behind a repository, decide when use cases are worth it, choose between several StateFlows and one UI state, and split the app into feature and core modules without over-engineering it.

    4–25 min intermediate Junior & senior

  13. 13

    Testing

    Test an Android app at the right levels, with fast ViewModel tests using fakes, runTest, test dispatchers and Turbine for Flows, Compose UI tests that find elements by semantics, and a few instrumented tests on real storage and real devices, without sleeps or flakiness.

    4–25 min intermediate Junior & senior

  14. 14

    Performance and baseline profiles

    Make an Android app start fast and scroll smoothly, measure on release builds with Macrobenchmark and Perfetto instead of guessing, avoid unnecessary recomposition in Compose with keys, stable parameters and deferred state reads, keep work off the main thread at startup, and ship baseline profiles so critical code is compiled ahead of time.

    4–25 min advanced Junior & senior

  15. 15

    Permissions and notifications

    Ask for runtime permissions at the moment they make sense and handle every answer, including "don't ask again", then show notifications properly on modern Android, with channels, the POST_NOTIFICATIONS permission, PendingIntents that open the right screen, and FCM messages that behave the same in the foreground and background.

    4–25 min intermediate Junior & senior

  16. 16

    Google Play release and R8

    Ship an Android app to Google Play safely, with R8 shrinking and obfuscation, keep rules for code used through reflection, mapping files to read crash reports, App Bundles and Play App Signing, version codes, testing tracks, staged rollouts you can halt, and the target API level and vitals Google enforces.

    3–20 min intermediate Junior & senior

Esc

Type to search the whole site.