Android Anatomy and Physiology
Agenda
• Android Anatomy
• Linux Kernel
• Native Libraries
• Android Runtime
• Application Framework
• Android Physiology
• Start-up Walkthrough
• Layer Interaction
Android Anatomy
Applications
Home
Dialer
SMS/MMS
IM
Browser
Camera
Alarm
Calculator
Contacts
Voice Dial
Email
Calendar
Media Player
Albums
Clock
…
Application Framework
Activity Manager
Package Manager
Window
Manager
Telephony
Manager
Content Providers
Resource Manager
View
System
Location
Manager
Notification
Manager
…
Libraries
Surface Manager
Media Framework
OpenGL|ES
FreeType
SGL
SSL
SQLite
WebKit
Libc
Android Runtime
Core Libraries
Dalvik Virtual Machine
Linux Kernel
Display Driver
Camera Driver
Bluetooth Driver
USB Driver
Keypad Driver
WiFi Driver
Shared Memory
Driver
Audio
Drivers
Binder (IPC) Driver
Power
Management
Agenda
• Android Anatomy
• Linux Kernel
• Native Libraries
• Android Runtime
• Application Framework
• Android Physiology
• Start-up Walkthrough
• Layer Interaction
Linux Kernel
• Android is built on the Linux kernel, but Android is not
Linux
• No native windowing system
• No glibc support
• Does not include the full set of standard Linux utilities
Linux Kernel
Display Driver
Camera Driver
Bluetooth Driver
USB Driver
Keypad Driver
WiFi Driver
Shared Memory
Driver
Audio
Drivers
Binder (IPC) Driver
Power
Management
Linux Kernel
• Standard Linux 2.6.24 Kernel
• Patch of “kernel enhancements” to support Android
Linux Kernel
Display Driver
Camera Driver
Bluetooth Driver
USB Driver
Keypad Driver
WiFi Driver
Shared Memory
Driver
Audio
Drivers
Binder (IPC) Driver
Power
Management
Why Linux Kernel?
• Great memory and process management
• Permissions-based security model
• Proven driver model
• Support for shared libraries
• Itʼs already open source!
Linux Kernel
Display Driver
Camera Driver
Bluetooth Driver
USB Driver
Keypad Driver
WiFi Driver
Shared Memory
Driver
Audio
Drivers
Binder (IPC) Driver
Power
Management
Kernel Enhancements
• Alarm
• Ashmem
• Binder
• Power Management
• Low Memory Killer
• Kernel Debugger
• Logger
Linux Kernel
Display Driver
Camera Driver
Bluetooth Driver
USB Driver
Keypad Driver
WiFi Driver
Shared Memory
Driver
Audio
Drivers
Binder (IPC) Driver
Power
Management