Kotlin 2.x as a First-Class JVM Language
K2 compiler · top-level functions · immutability defaults · val vs var · smart casts · reading bytecode with javap.
kt-stat — directory line counter, Gradle KTS fat JAR
Twenty-four weeks of production-grade Android engineering. From Kotlin 2 and the K2 compiler to a Jetpack Compose application with Coroutines and Flow throughout, a Hilt-wired graph, Room persistence, WorkManager-backed offline sync, a Compose for Wear OS companion, a Kotlin Multiplatform shared core, Play Integrity attestation, macrobenchmark plus Baseline Profiles, and a complete Play Console release pipeline. Open-source-first. Free, forever.
§ I · The Program
Crunch Droid is the Android engineering specialization of the Code Crunch academy — a Crunch Labs Tier II track built for engineers who want to ship Android applications onto three billion devices. Not tutorial apps, not a Compose hello-world, but a Jetpack Compose application with an offline-first WorkManager-backed sync engine, a Hilt-wired Room persistence layer, a Compose for Wear OS companion, a Kotlin Multiplatform shared core, and a complete Play Console release pipeline.
You write Kotlin 2.x as a first-class JVM language — null safety, sealed types, inline value classes, K2 compile pragmas — and you learn Coroutines and Flow at the structured-concurrency level, not the syntax-tour level. You build Compose at the recomposition level. You wire a multi-module Gradle Kotlin DSL project with version catalogs. By Week 24 you have shipped a multi-form-factor release-candidate AAB, run three chaos drills, written postmortems another engineer can read at three in the morning, and submitted to a Play Console closed track.
“Twenty-four weeks of Kotlin 2, Compose, AOSP-aware patterns, production constraints, and the engineering discipline that gets you hired onto a senior Android team.”— Crunch Droid, course README
§ II · Who It's For
Droid is opinionated about its audience. C1 (Code Crunch Convos) — or equivalent fluency in a typed object-oriented language — is the floor. You should know what an interface is, what generics are for, and what null costs you when you ignore it.
You have shipped in dynamic languages. You want a fast, typed runtime that runs on three billion devices — Kotlin proper, with coroutines and a real type system, and Compose explained at the recomposition level.
You have done React Native or Flutter and hit the platform-channel ceiling once too often. You want native Android plus a sane way to share business logic with iOS via Kotlin Multiplatform — without paying the bridge tax.
You know the JVM. You know Spring or Micronaut. You want that mental model on mobile — Gradle, bytecode, R8, ProGuard, the lifecycle, threading — and to emerge fluent in modern Kotlin idioms and the whole Jetpack stack.
You want a portfolio that survives a senior mobile system-design interview. You want to talk about recomposition phases, structured concurrency, cold versus hot flows, and exact-alarm constraints after Android 12.
§ III · Four Phases
fun to a Play Store release.The arc of the program is composed in four phases — six weeks each — each building on the last like floors of a building.
Kotlin 2.x as a first-class JVM language. Null safety, sealed types, inline value classes, context receivers, the K2 compiler. Then coroutines and Flow as a discipline — structured concurrency before any UI. The Android runtime, ART, AOSP, and your Gradle Kotlin DSL toolchain.
Jetpack Compose as a discipline, not a tutorial. Recomposition phases, stability, snapshots, side effects, animation, gestures, accessibility. Navigation 3 with type-safe routes. Material 3, Material You, dynamic color, edge-to-edge. MVVM with UDF and the Now-In-Android architecture as a reference.
Hilt and the Dagger graph beneath. Room, DataStore (Preferences and Proto), the file system. WorkManager and foreground services under the post-Android-12 regime. Retrofit, OkHttp, Ktor Client, and gRPC. Testing across every layer. Macrobenchmark, Baseline Profiles, R8.
Kotlin Multiplatform shared cores. Compose for Wear OS — tiles, complications, ongoing activities. Foldables via window size classes. CI/CD on GitHub Actions and fastlane. Play Integrity attestation. Capstone build, three chaos drills, postmortems, Play submission, senior-interview prep.
§ IV · The Curriculum
Each entry corresponds to a folder in the GitHub repository with lecture notes, exercises, challenges, a quiz, homework, and a mini-project. Detailed acceptance criteria live in the syllabus.
K2 compiler · top-level functions · immutability defaults · val vs var · smart casts · reading bytecode with javap.
kt-stat — directory line counter, Gradle KTS fat JAR
Nullables and the ? family · let/run/apply/also · sealed classes and interfaces · data classes · inline value classes · exhaustive when.
Typed JSON parser returning a sealed JsonNode tree
Declaration- and use-site variance · reified type parameters · inline and crossinline · context receivers (Kotlin 2.x) · higher-order functions · SAM conversion.
kt-bus — typed event bus published to mavenLocal
Suspending functions · CoroutineScope · Job and SupervisorJob · dispatchers · coroutineScope vs supervisorScope · cancellation cooperation.
Parallel downloader — bounded concurrency, cancellable, 100 URLs
Cold flows · operators (map, flatMapLatest, transformLatest) · backpressure · hot flows · channelFlow and callbackFlow · Turbine.
Reactive ticker — cold Flow, hot StateFlow, alert SharedFlow
ART vs desktop JVM · lifecycle history · AOSP at a high level · Gradle Kotlin DSL · version catalogs · build variants · R8 introduction.
Two-module Android project — :core + :app, free/pro variants
Declarative UI · composition tree · recomposition phases · @Stable and @Immutable · skippable functions · the Compose Compiler report.
Pure-Compose Pomodoro timer with recomposition counter overlay
remember · rememberSaveable · state hoisting · the Snapshot system · LaunchedEffect · DisposableEffect · produceState · derivedStateOf · snapshotFlow.
Search-as-you-type — debounced via snapshotFlow, cancellable
Custom Layout · Modifier chain ordering · pointerInput gestures · animate*AsState · AnimatedContent · semantics for TalkBack · WCAG contrast.
Swipe-to-dismiss card stack with full TalkBack actions
Serializable routes · nested graphs · deep links · predictive back · bottom-bar navigation · the end of string-key arguments.
Three-tab app — Home / Catalog / Profile, deep-linked, UI-tested
Material 3 components · dynamic color extraction · ColorScheme and Typography · WindowCompat · inset-padding modifiers · audited dark theme.
Reader app — Material 3, dynamic color on Android 12+, dark theme
Jetpack ViewModel · unidirectional data flow · sealed UiState · data / domain / UI layers · SavedStateHandle · process-death survival.
Two-screen feed — StateFlow<UiState>, tested round-trip
@HiltAndroidApp · @AndroidEntryPoint · @HiltViewModel · modules, components, scopes · assisted injection · reading Dagger-generated code.
Four-module Hilt graph — network, database, auth, app
Room entities, DAOs, relations · Paging 3 integration · Preferences DataStore · Proto DataStore · scoped storage post-Android-11 · migrations with schema export.
Local-first notes — Room, Proto DataStore, v1→v3 migration tested
Retrofit + kotlinx-serialization · OkHttp interceptors · certificate pinning · Ktor Client for KMP · grpc-kotlin · sealed NetworkResult · retry and pooling.
Weather client twice over — Retrofit and Ktor; gRPC bonus path
WorkManager — one-time, periodic, expedited · constraints · foreground service types · exact alarms after Android 12 · Doze · App Standby.
Offline-first sync engine — exponential backoff, foreground-promotable
JUnit 5 · Turbine for Flow · Robolectric · Compose UI test · Espresso · Paparazzi snapshots · MockK · test-only module pattern.
:feature-checkout — ViewModel, DAO, Compose, snapshot, smoke
Macrobenchmark · cold / warm / hot start · Baseline Profile generation and packaging · R8 full mode · ProGuard keep rules · App Startup library · Strict Mode.
Baseline Profile on Week-11 reader — ≥20% cold-start improvement
KMP — commonMain, androidMain, iosMain · expect/actual · KMP-friendly libraries · Compose Multiplatform · Compose for Wear OS — tiles, complications.
:shared-core KMP — typed WeatherForecast, Ktor repo
Window size classes · adaptive layouts · WindowInfoTracker · ScalingLazyColumn · Wear tiles and complications · Android TV and Automotive overview.
Wear OS companion — tile, complication, ongoing activity
Caching · parallel matrices · signed AABs · fastlane lanes · Play App Signing · internal, closed, open, production tracks · staged rollouts.
Tag-triggered workflow — build, test, screenshot, upload to internal
Android Keystore · key attestation · EncryptedFile · OkHttp certificate pinning · SafetyNet → Play Integrity migration · permissions post-Android-13.
Keystore-backed notes + pinned weather API + Play Integrity gate
Capstone integration · pulling Weeks 1–22 into one shipping system · release-readiness checklist · pre-submission audit.
Release-candidate AAB + signed Wear APK + shared KMP core
Chaos drill execution · postmortem write-up · Play Store closed-track submission · senior Android system design · live capstone reviews · four mock interviews.
Three chaos drills · Play Console closed-track submission
§ V · The Toolchain
Every primary tool below is free and open core. Android Studio, the Android SDK, Kotlin, OpenJDK, the emulator — all zero cost. We design every assignment so an engineer on the lowest-cost laptop in the lowest-cost market can complete it.
§ VI · Skills You Will Carry
By the end of Week 24, you are able to do each of the following — credibly, on a real device, in front of a real reviewer.
channelFlow for callback bridges.expect/actual, kotlinx-serialization, kotlinx-datetime.§ VII · The Capstone
Week 23 builds the capstone; Week 24 polishes it, runs the chaos drills, and submits to the Play Console closed track. Architecture diagram, live deploy, video walkthrough, three chaos-drill postmortems.
Capstone Brief
An offline-first Jetpack Compose application for a fictional field-force operations team, with a Compose for Wear OS companion, a Kotlin Multiplatform shared core, gRPC sync to a typed backend, WorkManager-backed exponential-backoff synchronization, encrypted local storage, Play Integrity attestation, and a complete Play Console release pipeline. One substantial multi-form-factor system, not a portfolio of toys.
:shared-core (KMP) — typed domain model, Ktor API surface, kotlinx-serialization wire format, kotlinx-coroutines flows, kotlinx-datetime.:app (Android) — Compose UI, Material 3 dynamic color, Navigation 3, MVVM with StateFlow<UiState>, Hilt-wired graph.:wear (Wear OS) — Compose for Wear, one tile, one complication, ongoing activity for active dispatches.:feature-sync — WorkManager periodic job, BackoffPolicy.EXPONENTIAL, network and battery constraints, foreground-promotion path.:feature-auth — Play Integrity attestation at sign-in, Keystore-backed token storage.:core-network — grpc-kotlin client with certificate pinning, structured retry, typed sealed NetworkResult.:core-database — Room with three entities, Proto DataStore, schema export in source control, two migrations exercised in tests.§ VIII · Getting Started
The setup is intentionally lightweight. If you have a laptop with 16 GB of RAM and Android Studio installed, you can begin Week 1 today. The emulator is fully hardware-accelerated on Apple Silicon and on x86 Linux / Windows — a physical device is recommended but never required.
# 1. Clone the curriculum repository git clone https://github.com/CODE-CRUNCH-WORLDWIDE/C21-CRUNCH-DROID.git cd C21-CRUNCH-DROID # 2. Install Android Studio (free, every OS) and confirm the toolchain # Android Studio ships with the JDK, SDK, and emulator. No brew/apt step required. ./gradlew tasks # list build tasks for week 01 # 3. Open Week 1 README and begin $EDITOR curriculum/week-01-kotlin-foundations/README.md
Need the laptop spec, the optional device list, or the F-Droid fallback for the capstone? See the README.
§ IX · Frequently Asked
Any 64-bit machine with 16 GB of RAM and roughly 100 GB of free disk. The Android emulator is fully hardware-accelerated on Apple Silicon, x86 Linux, and Windows 11 — we test the curriculum on Ubuntu 24.04 LTS, macOS 14, and Windows 11. Chromebooks with developer mode work for everything except macrobenchmark.
No. The emulator covers every assignment, including Wear OS via the Wear emulator and foldables via the resizable emulator. A real USB-C Android phone is recommended for the capstone polish week — any phone running Android 10 or later works, and used Pixels are inexpensive — but not required to complete the track.
Compose, throughout. Phase II is six weeks of Jetpack Compose at the recomposition level — phases, stability, snapshots, side effects, Navigation 3, Material 3, MVVM with UDF. We do briefly cover the Activity / Fragment / View history in Week 6 as the historical context Compose replaced, so you can read older codebases without panic. We do not teach you to write new XML layouts.
C20 and C21 are siblings — the iOS and Android mobile tracks of Code Crunch Labs Tier II. The cross-platform pathway is C1 → C20 → C21 (take both platforms in sequence and finish with a Kotlin Multiplatform capstone that shares a typed core between iOS and Android). Take whichever platform your target employer ships on first, then take the other.
Because C21 is an Android engineering track, not a cross-platform UI track. KMP lets you share the business layer — typed domain models, networking, serialization, time math — while keeping native Compose on Android and native SwiftUI on iOS. You do not pay the platform-channel bridge tax, and your UI does not look like a transplant. Flutter is a fine tool; it is just not what this course is about.
Recommended but not required. The Play Console developer account is a one-time USD 25 fee and unlocks the closed-track submission path the capstone uses. Learners who choose not to pay can take the F-Droid fallback path documented in the capstone brief — same architectural requirements, same chaos drills, same engineering rigor, just a different distribution endpoint.
§ X · Begin
Open the repository. Read Week 1. The device is yours.