Code Crunch Labs · Tier IISub-brand · Droid24 weeks · semesterGPL-3.0

Crunch Droid.

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.

24weeks
Program length
864hrs
Total workload
24+1
Labs + capstone
$0
Tuition · always

§ I · The Program

Android that ships.

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

Four engineers, one device.

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.

No. 01

The Python or JS Developer Going Native

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.

No. 02

The KMP-Curious Cross-Platform Dev

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.

No. 03

The Java / JVM Backend Pivoting to Mobile

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.

No. 04

The New Grad Targeting Google, Meta, TikTok

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

From first 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.

Phase I · Wk. 01—06

Foundations

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.

Phase II · Wk. 07—12

Compose & Architecture

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.

Phase III · Wk. 13—18

Production Android

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.

Phase IV · Wk. 19—24

Capstone & Polish

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

Twenty-four weeks, week by week.

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.

01

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.

Mini-Project 01

kt-stat — directory line counter, Gradle KTS fat JAR

02

Null Safety, Sealed Types, the Algebraic Core

Nullables and the ? family · let/run/apply/also · sealed classes and interfaces · data classes · inline value classes · exhaustive when.

Mini-Project 02

Typed JSON parser returning a sealed JsonNode tree

03

Generics, Inline Functions, Context Receivers

Declaration- and use-site variance · reified type parameters · inline and crossinline · context receivers (Kotlin 2.x) · higher-order functions · SAM conversion.

Mini-Project 03

kt-bus — typed event bus published to mavenLocal

04

Coroutines: Structured Concurrency from First Principles

Suspending functions · CoroutineScope · Job and SupervisorJob · dispatchers · coroutineScope vs supervisorScope · cancellation cooperation.

Mini-Project 04

Parallel downloader — bounded concurrency, cancellable, 100 URLs

05

Flow, StateFlow, SharedFlow, Channels

Cold flows · operators (map, flatMapLatest, transformLatest) · backpressure · hot flows · channelFlow and callbackFlow · Turbine.

Mini-Project 05

Reactive ticker — cold Flow, hot StateFlow, alert SharedFlow

06

The Android Runtime, ART, Gradle, AOSP-Aware Mental Model

ART vs desktop JVM · lifecycle history · AOSP at a high level · Gradle Kotlin DSL · version catalogs · build variants · R8 introduction.

Mini-Project 06

Two-module Android project — :core + :app, free/pro variants

07

Jetpack Compose: Composition, Recomposition, Three Phases

Declarative UI · composition tree · recomposition phases · @Stable and @Immutable · skippable functions · the Compose Compiler report.

Mini-Project 07

Pure-Compose Pomodoro timer with recomposition counter overlay

08

State, Side Effects, Snapshots

remember · rememberSaveable · state hoisting · the Snapshot system · LaunchedEffect · DisposableEffect · produceState · derivedStateOf · snapshotFlow.

Mini-Project 08

Search-as-you-type — debounced via snapshotFlow, cancellable

09

Layout, Gestures, Animation, Accessibility

Custom Layout · Modifier chain ordering · pointerInput gestures · animate*AsState · AnimatedContent · semantics for TalkBack · WCAG contrast.

Mini-Project 09

Swipe-to-dismiss card stack with full TalkBack actions

10

Navigation 3 with Type-Safe Routes

Serializable routes · nested graphs · deep links · predictive back · bottom-bar navigation · the end of string-key arguments.

Mini-Project 10

Three-tab app — Home / Catalog / Profile, deep-linked, UI-tested

11

Material 3, Material You, Dynamic Color, Edge-to-Edge

Material 3 components · dynamic color extraction · ColorScheme and Typography · WindowCompat · inset-padding modifiers · audited dark theme.

Mini-Project 11

Reader app — Material 3, dynamic color on Android 12+, dark theme

12

MVVM, UDF, the Now-In-Android Pattern

Jetpack ViewModel · unidirectional data flow · sealed UiState · data / domain / UI layers · SavedStateHandle · process-death survival.

Mini-Project 12

Two-screen feed — StateFlow<UiState>, tested round-trip

13

Dependency Injection with Hilt (and the Dagger Graph Beneath)

@HiltAndroidApp · @AndroidEntryPoint · @HiltViewModel · modules, components, scopes · assisted injection · reading Dagger-generated code.

Mini-Project 13

Four-module Hilt graph — network, database, auth, app

14

Persistence: Room, DataStore, the File System

Room entities, DAOs, relations · Paging 3 integration · Preferences DataStore · Proto DataStore · scoped storage post-Android-11 · migrations with schema export.

Mini-Project 14

Local-first notes — Room, Proto DataStore, v1→v3 migration tested

15

Networking: Retrofit, OkHttp, Ktor Client, gRPC

Retrofit + kotlinx-serialization · OkHttp interceptors · certificate pinning · Ktor Client for KMP · grpc-kotlin · sealed NetworkResult · retry and pooling.

Mini-Project 15

Weather client twice over — Retrofit and Ktor; gRPC bonus path

16

Background Work: WorkManager, Foreground Services, Exact Alarms

WorkManager — one-time, periodic, expedited · constraints · foreground service types · exact alarms after Android 12 · Doze · App Standby.

Mini-Project 16

Offline-first sync engine — exponential backoff, foreground-promotable

17

Testing Across Every Layer

JUnit 5 · Turbine for Flow · Robolectric · Compose UI test · Espresso · Paparazzi snapshots · MockK · test-only module pattern.

Mini-Project 17

:feature-checkout — ViewModel, DAO, Compose, snapshot, smoke

18

Performance: Macrobenchmark, Baseline Profiles, R8

Macrobenchmark · cold / warm / hot start · Baseline Profile generation and packaging · R8 full mode · ProGuard keep rules · App Startup library · Strict Mode.

Mini-Project 18

Baseline Profile on Week-11 reader — ≥20% cold-start improvement

19

Kotlin Multiplatform Overview, Wear OS Introduction

KMP — commonMain, androidMain, iosMain · expect/actual · KMP-friendly libraries · Compose Multiplatform · Compose for Wear OS — tiles, complications.

Mini-Project 19

:shared-core KMP — typed WeatherForecast, Ktor repo

20

Multi-Form-Factor: Foldables, Wear OS Deep, TV / Automotive

Window size classes · adaptive layouts · WindowInfoTracker · ScalingLazyColumn · Wear tiles and complications · Android TV and Automotive overview.

Mini-Project 20

Wear OS companion — tile, complication, ongoing activity

21

CI/CD: GitHub Actions, fastlane, Play Console API

Caching · parallel matrices · signed AABs · fastlane lanes · Play App Signing · internal, closed, open, production tracks · staged rollouts.

Mini-Project 21

Tag-triggered workflow — build, test, screenshot, upload to internal

22

Security: Keystore, EncryptedSharedPreferences, Play Integrity

Android Keystore · key attestation · EncryptedFile · OkHttp certificate pinning · SafetyNet → Play Integrity migration · permissions post-Android-13.

Mini-Project 22

Keystore-backed notes + pinned weather API + Play Integrity gate

23

Capstone Build Week — Field-Force Companion

Capstone integration · pulling Weeks 1–22 into one shipping system · release-readiness checklist · pre-submission audit.

Capstone Build

Release-candidate AAB + signed Wear APK + shared KMP core

24

Capstone Polish, Chaos Drill, Play Submission, Interview Prep

Chaos drill execution · postmortem write-up · Play Store closed-track submission · senior Android system design · live capstone reviews · four mock interviews.

Capstone Polish

Three chaos drills · Play Console closed-track submission

§ V · The Toolchain

Jetpack-first, open-source throughout.

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.

Language
Kotlin 2.x
K2 compiler · Apache-2.0
UI
Jetpack Compose
declarative · Material 3
Concurrency
Coroutines · Flow
structured concurrency
DI
Hilt
Dagger overlay
Persistence
Room · DataStore
SQLite + Proto
Background
WorkManager
constraint-aware
Cross-Platform
Kotlin Multiplatform
shared business layer
Wearables
Wear OS · Compose for Wear
tiles · complications
Design
Material 3 · Material You
dynamic color
Build
Gradle Kotlin DSL
version catalogs · R8
Testing
Compose UI Test · Paparazzi
snapshots · Turbine · MockK
Release
fastlane
Play Console API

§ VI · Skills You Will Carry

What you walk away with.

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.

  • Ship a production-grade Jetpack Compose application with Material 3 dynamic color, edge-to-edge insets, predictive back, and full accessibility.
  • Architect an offline-first system with Room, DataStore, and WorkManager — conflict resolution, exponential backoff, constraint-aware scheduling.
  • Write idiomatic Kotlin 2.x — null-safe, sealed-class-driven, with inline value classes and K2-aware compile pragmas.
  • Use Coroutines and Flow correctly — structured concurrency, supervisor scopes, cold versus hot streams, channelFlow for callback bridges.
  • Wire a multi-module Android project with Gradle Kotlin DSL, version catalogs, and convention plugins — sub-minute clean builds.
  • Inject dependencies with Hilt and reason about the Dagger graph that sits underneath, including assisted injection.
  • Talk to backends with Retrofit, OkHttp interceptors, certificate pinning, Ktor Client for KMP, and gRPC on the device side.
  • Test every layer — JUnit, Turbine, Robolectric, Compose UI test, Paparazzi snapshots, Espresso end-to-end.
  • Profile with macrobenchmark and ship Baseline Profiles that meaningfully shorten cold-start time.
  • Tune R8 and ProGuard rules without breaking reflection-heavy code.
  • Build for multiple form factors — phones, foldables, Compose for Wear OS, with TV and Automotive on the horizon.
  • Stand up a Play Store release pipeline on GitHub Actions and fastlane — signed AABs, staged rollouts, Play App Signing.
  • Integrate Play Integrity attestation as a real sign-in flow, not a checkbox.
  • Share a typed business layer across Android and iOS with Kotlin Multiplatform — expect/actual, kotlinx-serialization, kotlinx-datetime.
  • Write a production runbook for an on-call Android rotation — Crashlytics triage, Play Console vitals, ANR rate budgets.
  • Hold your own in a senior Android system-design interview — recomposition deep questions, structured-concurrency edge cases, FCM versus polling.

§ VII · The Capstone

One app. Shipped, signed, attested.

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

Field-Force Companion

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-networkgrpc-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.
  • GitHub Actions workflow that, on tag, builds a signed AAB, runs the full test suite, snapshots with Paparazzi, and uploads via fastlane to the Play internal track.
  • Baseline Profile generated, packaged, and demonstrated to reduce cold-start time by ≥ 20%.
  • Three chaos drills — offline-sync conflict, FCM token rotation, Play Integrity attestation failure — each with a postmortem (timeline, root cause, blast radius, change, what-we-would-do-differently).

§ VIII · Getting Started

Three commands. Then begin.

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

Questions, anticipated.

What laptop do I need?

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.

Do I need a physical Android device?

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 or XML — which does this teach?

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.

How does this differ from C20 (Crunch Swift)?

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.

Why Kotlin Multiplatform and not Flutter?

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.

Do I have to pay the Play Console fee?

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

Twenty-four weeks from now,
you will have shipped an app.

Open the repository. Read Week 1. The device is yours.