Hands-on
Builder track
Real Android projects that make each concept tangible.
21 pages89 min2 interactive16400 words
- 01The builder trackEight app projects and seven nerd guides, each tied to a concept page. What you build, what you learn, and how to get set up so the rest of the track works.beginner9 mininteractive
- 02B01 — Hello lifecycleBuild an activity that logs every lifecycle callback, rotate the device, and watch what the system actually does. The smallest project that makes a platform mechanism visible.beginner3 min
- 03B02 — Intent explorerBuild a small app that takes an action and a data URI, asks the package manager what would handle it, and shows the result. Intent resolution stops being abstract when your own name appears in the list.beginner3 min
- 04B03 — Tiny notesA notes app with a database: Room, a repository, and a ViewModel. The smallest project that shows why the data layer is separate, and what happens to your UI when the process is killed.beginner3 min
- 05B04 — Permissions playgroundBuild an app that asks for a runtime permission, reports the grant state, and demonstrates the difference between a permission check and an AppOp. Then change the target level and watch the same code behave differently.intermediate3 min
- 06B05 — Janky list, and the fixBuild a list that janks on purpose, measure it, then fix it three ways and measure again. A before-and-after you can reproduce on your own device, with the trace to prove it.intermediate7 mininteractive
- 07I01 — AIDL calculatorTwo processes, one interface: build a calculator service with AIDL, bind to it from a client, and look at the generated Stub and Proxy to see what a Binder call actually does.intermediate3 min
- 08I02 — Contacts-lite providerBuild a content provider that stores people, then read it from a second app through a content resolver. URIs, permissions and the query contract, all in one small project.intermediate3 min
- 09I03 — Custom view gaugeDraw a gauge by hand: measure, layout, draw, invalidate. A custom view is the shortest path to understanding why a frame costs what it costs, because you write the code that produces it.intermediate3 min
- 10I04 — WorkManager syncSchedule deferrable work with constraints, survive reboots and process death, and read the scheduler's state from the shell. WorkManager is the supported answer to background work, and its guarantees are narrower than most people assume.intermediate3 min
- 11I05 — Foreground music serviceBuild a media playback service with a notification, a media session and a foreground service type. Learn why the notification is mandatory, what the type buys you, and when the system will stop the service.intermediate3 min
- 12I06 — Looper labRebuild the main thread's message loop by hand: a Looper, a Handler, a MessageQueue, and a choreographer-style frame callback. Then break it on purpose and watch the ANR.nerd3 min
- 13I07 — A tiny launcherThe home screen is just an app that registers for a category. Build a list-based launcher: query the launchable apps, show them, and start the one that is tapped.intermediate2 min
- 14I08 — NDK helloCall C++ from Kotlin through JNI: a native library, a CMake build, an ABI split, and the JNI naming rules that make the call work. Then watch what happens when the ABI is wrong.intermediate3 min
- 15N01 — Build and boot AOSPCheck out AOSP, pick a target, build it and boot it in a virtual device. The guide every other nerd project depends on, and the one that needs the most disk, RAM and patience.nerd5 min
- 16N02 — Add a system serviceAdd a small service to system_server, register it with ServiceManager, and reach it through a Context manager object. The shortest path from reading about system services to having added one.nerd5 min
- 17N03 — Write an init serviceAdd a native daemon to the boot sequence: an init.rc service block, a tiny binary, an SELinux domain and the property that proves it started. The most self-contained platform change you can make.nerd6 min
- 18N04 — A toy HALAn AIDL HAL in the modern shape: an interface with VINTF stability, a service that implements it, a manifest fragment that declares it, and a client that finds it. The vendor boundary, built by hand.nerd6 min
- 19N05 — Modify SystemUIChange something you can see: a status bar layout, a quick settings tile, or a resource overlay. The fastest platform change to verify with your own eyes, and a lesson in why system apps are still apps.nerd5 min
- 20N06 — Kernel module on GKIBuild an out-of-tree module against a GKI kernel, load it, and watch the KMI decide whether it is allowed. The vendor side of the kernel seam, and why a module that compiles can still refuse to load.nerd6 min
- 21N07 — Custom boot animationReplace the boot animation: build a bootanimation.zip with a valid desc.txt, install it, and learn the format's rules about frame counts, part directories and loop counts. The most visible platform change per line of effort.nerd5 min
Test yourself
Test yourself: Builder track
Which sections does the builder track's house style require every project to have?