Android runs on more devices than any other operating system on Earth. The kernel is Linux, but almost everything above it — the runtime, the app model, the IPC layer, the security sandbox — is Google's own. Understanding Android is understanding how a Linux kernel was bent into a battery-aware, sandboxed, app-store-driven mobile platform.
← Back to Foundations.apk / .aab.| Layer | What It Contains |
|---|---|
| Linux kernel | Process scheduling, memory, drivers — plus Android extras (Binder, ashmem, wakelocks). |
| HAL (Hardware Abstraction Layer) | Vendor-implemented interfaces for camera, audio, sensors, radio. |
| Native libraries | Bionic libc (smaller than glibc), OpenGL/Vulkan, SQLite, WebKit/Chromium. |
| ART runtime | Executes app bytecode. AOT compiles on install, JIT for hot paths. |
| System services | ActivityManager, PackageManager, WindowManager — all reachable via Binder. |
| Framework APIs | The Java/Kotlin SDK apps call (android.*, Jetpack libraries). |
| Apps | Sandboxed, signed APKs running in their own process. |
Every installed app gets its own Linux UID. The kernel's standard file permissions enforce isolation — your app literally cannot read another app's files, because it doesn't own them. This is the entire foundation of Android's sandbox.
The secret sauce. Binder is a kernel driver that lets apps and system services pass typed objects across process boundaries cheaply and securely. Every Intent, every system API call, ultimately goes through Binder.
Manifest declares what the app needs (CAMERA, ACCESS_FINE_LOCATION). Dangerous permissions require a runtime prompt (Android 6.0+). Background location, photo access, and others tightened progressively across versions.
apt.fork()-friendly process tree. All app processes are spawned from zygote, a pre-warmed VM that copy-on-writes its heap.| Tool | Role |
|---|---|
| Android Studio | The official IDE — IntelliJ-based with Android-specific tooling. |
| Gradle + Android Gradle Plugin | Build system. Kotlin/Java → DEX → APK/AAB. |
| Jetpack Compose | Declarative Kotlin UI toolkit (replaces XML layouts). |
| adb | Android Debug Bridge — install, shell into, log from a device. |
| Emulator | QEMU-based, runs full system images of various Android versions. |
| Play Console | Submission, staged rollouts, crash analytics. |