Android operating system is a stack of software components which is roughly divided into six sections and five main layers as shown below in the architecture diagram.
- Linux kernel
At the bottom of the layers is Linux -Kernel which provides basic system functionality like process management, memory management, device management like camera, keypad, display etc. Also, the kernel handles all the things that Linux is really good at such as networking and a vast array of device drivers, which take the pain out of interfacing to peripheral hardware.
Android uses a version of the Linux kernel with a few special additions such as wake locks (a memory management system that is more aggressive in preserving memory), the Binder IPC driver, and other features important for a mobile embedded platform. These additions are primarily for system functionality and do not affect driver development.
- Hardware Abstraction Layer
Hardware Abstraction Layer (HAL) defines a standard interface for hardware vendors to implement and allows Android to be agnostic about lower-level driver implementations. It allows you to implement functionality without affecting or modifying the higher level system. HAL implementations are packaged into modules (.so) file and loaded by the Android system at the appropriate time.
We need to implement the corresponding HAL (and driver) for the specific hardware your product provides. HAL implementations are typically built into shared library modules (.so files).
Above to HAL there is Linux-Kernel there is a set of libraries like Surface Manager , Media Framework , SQLite , OpenGL/ES , FreeType , WebKit , SGL , SSL libc etc.
In which SQLite is responsible for storing and sharing of Application data , Media Framework is responsible to work with audio and video files , SSL libraries is responsible Internet Security etc.
- Android Runtime
This is the fourth section of the architecture and available on the third layer from the bottom. This section provides a key component called Dalvik Virtual Machine which help to run the Android applications on the Android OS.
The Dalvik Virtual Machine makes use of Linux core features like memory management and multi-threading, which is intrinsic in the Java language. The Dalvik VM enables every Android application to run in its own process, with its own instance of the Dalvik virtual machine.As compare to Java Virtual Machine Dalvik Virtual Machine uses dex compiler to generate classes.dex file , further this file is used to create .apk(Android application package file ).
Android runtime also comes with a set of core libraries which enable Android application developers to write Android applications using standard Java programming language.
- Application Framework
Application Framework layer provides many higher-level services to applications in the form of Java classes. Developer's uses this classes to develop application.Activity Manager , Window Manager , Content Providers ,View Systems , Package Manager , Telephony Manager , Resource Manager ,Location Manager , Notification Manager are embedded into this layer which hold java classes to create Android Applications.
Applications are at the topmost layer of the Android stack. An user of the Android device would mostly interact with this layer (for basic functions, such as making phone calls, accessing the Web browser etc.). The layers further down are accessed mostly by developers, programmers and the likes.
Some key applications already installed with every device, such as: