
Learn Android OS internals and AOSP development from architecture environment setup to advanced topics like SELinux, system services, and SDK add ons.
Android is an open source operating system built on the Linux kernel, with layers from the hardware abstraction layer to the apps, and source.android.com provides code, branches, and build documentation.
Review the system requirements for building AOSP, including 64-bit hardware, 400 gb storage, and minimum 16 gb ram; note ssd benefits and macos limitations on arm.
Set up the build environment, download the AOSp source, build the Android open source project, and install required packages to enable emulator use.
Install repo, a git-wrapping tool for managing AOSP source code, using curl if needed. If Ubuntu latest versions fail, pull repo into bin/repo and set permissions, then verify version.
Download the AOSP source by initializing a repo, selecting the latest branch, and syncing with repo, then build the repo; expect three to four hours total.
Build and run the AOSP12 phone emulator by configuring the environment, choosing the x86_64 lunch option, and building with make using all CPU cores before launching the emulator.
Download Android 13 source, configure branch and thread count, then build and run a phone emulator; verify the build and enable developer options by seven taps.
Learn to download and build Android 15 from source by setting up the environment, obtaining the AOSP code with repo, and compiling on a 64-bit Linux system.
Initialize and sync the Android 15 source tree with repo, create a large working directory, optimize with partial clone and other flags, troubleshoot network issues, and launch the automotive emulator.
Explore essential AOSP terminal commands for navigation and building, including top, cd, and root changes. Build with m, install via adb, and search code with cgrep, jgrep.
Introduces Android Studio for platform, a specialized IDE for AOSP developers, supporting Java, Kotlin, and C++, with a project setup wizard to configure lunch target and modules, noting limitations.
Learn to open Android Studio or IntelliJ projects with AIDEGEN, explore a system UI project, and navigate dependencies while using -s to skip builds and build from the command line.
Explore android's five-layer architecture—from application and framework layers to system runtime, hal, and linux kernel—and learn how key managers and libraries enable apps and hardware interaction.
Explore the Android boot sequence from power-on to init, including bootloader handoff to the Linux kernel, SELinux policies, and zygote startup.
The zygote process initializes the Android runtime and Dalvik virtual machine, forks to create the application and system server processes, and waits for Activity Management Service requests to start processes.
Explore how the system server boot sequence starts bootstrap services, core services, and other services like the installer, activity manager, power manager, and package manager, coordinating device readiness.
Discover the Android system source code structure via an overview of aosp folders, examining Android runtime (team), bionic, bootable, build, ctd, and cts to understand runtime and compatibility.
Explore the Android source tree in folder walkthrough2, including the Dalvik VM, code generators, demos, samples, device drivers, and open source projects.
Explore the Android framework, the core Java and C++ layer that hosts system services and core implementations. See how the framework base and services folders expose the APIs developers use.
Explore the hardware abstraction layer folder, detailing HAL modules for camera, audio, USB, and power, and explain how the camera service uses the camera module to interface with devices.
Explore Android release structures for chipset vendors, focusing on BTK and PDK folders that enable platform development and vendor migration, with platform tests and apps.
Explore the folder walkthrough 6 of android os internals, revealing pre-built binaries and tools like android emulator, sdk and toolchain assets, embedded linux system configurations, test assets, and benchmarking resources.
Explores how Android's Soong build system converts BP blueprint files and Make files into Ninja build inputs for the Android OS.
Analyze the Aosp build system architecture by tracing how configurations load, main.mk, and makefiles drive product and module builds, producing images and sdk while cleaning up.
Execute envsetup.sh with the source command to load the AOSP environment and run lunch to view 73 build flavors for arm and x86 devices like highkey and cuttlefish.
Navigate the android build tree with croot to the top, then use m, mm, and triple m to build modules and their dependencies, and install via adb when needed.
Discover how to use various grep variants to search C/C++ files, gradle, go, java, kotlin resources, manifest, and owner information across AOSP modules.
Learn aosp mod commands to list modules, go to module paths, locate apk files, install modules, and refresh mod.
Explore the envsetup.sh script by reviewing the NBC reporter search setup, built-in search commands, the lengths and grep functions, and the go directory to understand the setup asset.
Definitions.mk defines a library of methods used by other makefiles in Aosp build system, and includes a function listing Java files under a path.
Explore the Android System UI, including the status bar, navigation bar, keyguard, and recent apps, plus volume, split screen, overlays, screenshot interfaces, and security options like password, pin, and pattern.
Explore the system ui architecture and the abstract SystemUI class that unifies initialization, configuration changes, and adb debugging hooks for the status bar, navigation bar, and toast ui.
Learn how the android system ui starts from the kernel to the system server, which launches services including the system ui app. Initialize the navigation bar and status bar.
Shows how Android system UI boots via system server, using package manager to start the system UI service and initialize modules like volume, status bar, and keyboard UI.
Explore how Android system UI quick settings are built and customized, from the panel to tiles like internet and airplane mode, and how editing rearranges them.
Investigate how the Android keyguard handles power button presses, swipe up pattern, and login via pattern or PIN, through the System UI and the Keyguard view mediator.
Trace the sequence from physical key input to the display of the key guard security window, detailing input dispatcher, window manager, guard service, binder ipc, and system ui mediation.
Explore runtime resource overlays (RRO) in Android, showing how overlays modify layouts, colors, fonts, and other resources without changing source code, and compare static versus dynamic overlays.
Create and apply a runtime resource overlay (RRO) to the Settings app, demonstrating enablement and disablement to alter colors and styles, with a focus on the RRO package structure.
Over the years, Android has captured Phones, tablets, TV, Automotive HMI, and Wear devices. It's running on 2.5 billion active devices. Even though Android has been in the market for a long, it's still pretty hard to find structured courses or online resources for AOSP development. That's the reason this course is here.
This course is specially designed for Developers of any level who wants to learn about developing Android OS (focusing more on Mobile devices).
We have tried to make this course as compact as possible so that you could learn something new in each minute of the tutorials. On a high level, the course is structured as follows.
Introduction
Architecture
Development Environment Setup
Folder Structure and important modules
Build System
Building the source
Projects
Advanced Topics (System Services, SystemUI, SE Linux, SDK, etc..)
This course is perfect for those new to the AOSP world or who want to learn more about different aspects of AOSP development. This course is also essential for Android Application Developers. You can be a better developer when you know the Android OS Internals. At the end of the course, you should gain enough knowledge to create your own Android version.
All the very best for your AOSP career. :)