Build understanding through one real app
PocketChat is a Compose conversation app and the Android Engineers AI learning assistant. The roadmap explains the engineering; the codelab makes you inspect, change, and verify the same source. You begin with a runnable sample, not an empty project. The goal is to explain why it works and make a tested improvement.
The core journey contains eight lessons with eight practical assignments, this guide, a capstone, and an assessment: 19 units. Four preserved advanced units then explore structured output and tools as design exercises. Those features are not present in the pinned app. Roadmap completion currently counts all 23 units; completing the advanced exercises means producing their design/test evidence, not claiming those integrations exist.
Prerequisites and reproducible setup
Know basic Kotlin, Compose state, coroutines, and HTTP/JSON. PocketCards is useful background, but Firebase is not required. Install Git, Android Studio, JDK 17 and SDK 36. Use API 26+ for the app; automated device evidence was collected on an API 36.1 emulator. Use a dedicated test emulator for instrumented tests: the test runner can uninstall its app and remove that installation's data.
git clone https://github.com/AndroidEngineers/android-ai-cookbook.git
cd android-ai-cookbook
git switch -c learning/pocketchat d259f6b34cb4f2aa5965124446ef815d61a625e9
cd gemini-chat
./gradlew :app:assembleDebug :app:testDebugUnitTest
Open gemini-chat/ in Android Studio. Configure your SDK through its ignored local.properties or ANDROID_HOME; use gradlew.bat on Windows. Initial dependency resolution needs network access. Keep the pinned revision even if main has moved.
Two verification tracks
Without a key, build, inspect the code, run unit tests, and implement the context-policy exercise. With your own Gemini access, enter the key in the debug app's Settings and evaluate live answers. These tracks produce different evidence. Fake responses verify app logic; live requests verify model access and observed answer behavior.
Never put a provider key in the repository or learning log. PocketChat clears debug credentials on backgrounding. The release APK has no direct Gemini transport; an authenticated backend is still future work.
What is implemented
Text streaming, follow-up context, Stop/Retry, saved answers, local history, draft restoration, and a curated Android Engineers resource directory. Room currently stores a serialized library aggregate. Context uses character limits, not exact tokens. Navigation is selected-conversation state with a width-based layout. These are deliberate small-sample tradeoffs to critique, not hidden production features.
Keep a log containing revision, hypothesis, action, expected result, observation, and remaining uncertainty. Allow several focused sessions; time varies with Android experience and provider setup. No timed completion claim is made.