PPrepLearn
Progress Β· 0/7 phases

πŸ“‹ πŸ“‹ AOSP Master Checklist

5 min read Β· Notion

Track your complete AOSP learning journey. Work through phases sequentially.


πŸ”§ Phase 1 β€” Prerequisites & Environment

  • Ubuntu machine ready with 250 GB+ disk
  • Build dependencies installed (apt-get)
  • repo tool installed
  • AOSP source synced (android-14 branch, ~100 GB)
  • source build/envsetup.sh && lunch aosp_x86_64-eng working
  • Full AOSP build completed (m)
  • Emulator runs successfully
  • adb shell works into emulator
  • Comfortable with top-level directory structure
  • Can use cs.android.com for code navigation
  • Read and understood a simple Android.bp file
  • Made a trivial code change + incremental build

πŸ›οΈ Phase 2 β€” Architecture & Source Code

  • Can explain all 5 Android architecture layers
  • Understand Soong (Android.bp) vs Make (Android.mk)
  • Can build a single module with mmm
  • Know purpose of: frameworks/, system/, hardware/, art/, bionic/
  • Read SystemServer.java and listed all services
  • Read ActivityThread.java β€” understand main loop
  • Written and built a custom Android.bp module
  • Understand what ART does, AOT vs JIT compilation
  • Know what bionic is (Android's libc)

πŸ₯Ύ Phase 3 β€” Boot Process & Linux Kernel

  • Can draw boot sequence: BootROM β†’ Bootloader β†’ Kernel β†’ init β†’ Zygote β†’ SystemServer
  • Understand BootROM vs Bootloader responsibilities
  • Know Android-specific kernel additions: Binder, Wakelocks, LMK, ION, Ashmem
  • Read system/core/init/main.cpp
  • Understand init.rc service/action/trigger syntax
  • Know why Zygote exists and how forking saves startup time
  • Read ZygoteInit.java β€” understand class preloading
  • Read SystemServer.java β€” listed bootstrap/core/other services
  • Used adb shell ps to identify PID 1, Zygote, SystemServer
  • Traced startActivity to Zygote fork

πŸ”Œ Phase 4 β€” HAL, Binder IPC & System Services

  • Can explain Binder IPC flow (client proxy β†’ kernel driver β†’ stub)
  • Know why Binder is faster than UNIX sockets for Android
  • Understand Parcel serialization
  • Written a basic AIDL interface + service implementation
  • Read IActivityManager.aidl and traced a call
  • Understand ServiceManager as a Binder name registry
  • Know Legacy HAL vs HIDL vs AIDL HAL differences
  • Read a HIDL .hal interface definition
  • Implemented a stub Legacy HAL module
  • Registered a custom service in SystemServer.java
  • Used service list and service call from adb shell

βš™οΈ Phase 5 β€” Framework Internals

  • Can explain roles of AMS, WMS, PMS
  • Traced startActivity() from app to Activity.onCreate()
  • Read ActivityRecord.java and Task.java
  • Understand window hierarchy in WMS
  • Know SurfaceFlinger's role vs WMS
  • Traced APK install flow through PMS
  • Understand OomAdjuster β€” process kill decisions
  • Understand BroadcastQueue dispatch chain
  • Used dumpsys activity to inspect AMS state
  • Used dumpsys window to inspect WMS state
  • Used dumpsys package <app> to see parsed manifest
  • Modified a system service + incremental build

πŸš€ Phase 6 β€” Customization, OTA & Contributing

  • Understand SystemUI process components (statusbar, QS, lockscreen)
  • Modified SystemUI (custom icon or QS tile)
  • Understand A/B partition seamless update model
  • Know OTA package generation pipeline
  • Understand Android Verified Boot (AVB) and dm-verity
  • Generated an OTA package with m otapackage
  • Set up Gerrit account
  • Know AOSP commit message format (Bug:, Test: fields)
  • Studied LineageOS source for one custom feature
  • Submitted or reviewed a change on Gerrit

🌟 Bonus / Advanced Topics

  • SELinux policies in Android (system/sepolicy/)
  • Android Keystore and TEE (Trusted Execution Environment)
  • Camera HAL3 architecture
  • Audio HAL and AudioFlinger
  • Graphics pipeline: OpenGL β†’ Vulkan β†’ SurfaceFlinger β†’ HWC2
  • Treble architecture (vendor interface / VNDK)
  • Android App Sandbox and permissions model
  • ART internals: dex2oat, garbage collector
  • Android Automotive OS (AAOS)
  • Fuchsia / Fuchsia driver model (Google's next-gen OS)

πŸ“š Essential Reference Files

FileWhy It Matters
system/core/init/main.cppFirst userspace process
system/core/rootdir/init.rcSystem service definitions
frameworks/base/core/java/com/android/internal/os/ZygoteInit.javaApp process factory
frameworks/base/services/java/com/android/server/SystemServer.javaAll service launches
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.javaActivity/process mgmt
frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.javaWindow management
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.javaAPK management
frameworks/base/core/java/android/app/ActivityThread.javaApp main thread
kernel/drivers/android/binder.cBinder IPC kernel driver
frameworks/native/services/surfaceflinger/SurfaceFlinger.cppDisplay compositing

Related