3. Kernel Level
Android uses a specialized version of Linux kernel with a few special
additions such as wakelocks, a memory management system, the
Binder IPC driver and other features that are important for a mobile embedded
platform like Android.
4. Library Level
Libraries wrote in C/C++ already compiled and preinstalled by vendor
for particular hardware abstraction.
9. Kernel Level
Android uses a specialized version of Linux kernel with a few special
additions such as wakelocks, a memory management system, the
Binder IPC driver and other features that are important for a mobile embedded
platform like Android.
10. HAL Level
HAL (Hardware Abstraction Layer) is a standard interface that allows
the Android system to call into the device driver layer while being agnostic
about the lower-level implementations of your drivers and hardware.
11. Services that allows API to access the underlying hardware.
(Window Manager, Search Service, Notification Manager, etc)
System Services Level
12. The Binder Inter-Process Communication mechanism allows the application
framework to cross process boundaries and call into the Android system
services code. That is it allows high level framework APIs to interact
with Android’s system services.
Binder IPC Level
17. Init
Run /init.rc file
Set up filesystem permission
Set OOM adjustments properties
Start daemons: adbd, servicemanager, vold, netd. rild, zygote, etc
18. Zygote
Zygote is a daemon which only mission is to launch applications.
It creates the first Dalvik VM and calls Zygote’s main method. Once
Zygote starts, it preload all necessary Java classes and resources, start
System Server and opens a socket /dev/socket/zygote to listen for requests
for staring applications.
19. System Server
The System Services is a set of services that provide the user applications
with the information and capabilities necessary to work.