Android Architecture

Android is a software stack for mobile devices that includes an operating system, middleware and key applications.

The following diagram shows the major components of the Android operating system:

Basically Android has the following layers:

Applications –Mostly applications are written in java and executing in Dalvik. Basic applications include an email client, SMS program, calendar etc. Any applications that you write are located at this layer. The application layer runs within the Android run time, using the classes and services made available from the application framework.

Application Framework: The developers have full access to the same framework APIs used by applications base. The architecture is designed to simplify the reuse of components.

Libraries: Mostly libraries are written in C, C++ used by various component of Android System. This layer includes:

Surface Manager: it manages access to the display subsystem and composites 2D and 3D graphics layers from multiple applications.

Media libraries: It supports playback and recording of many popular audio and video formats.

Free type: It supports Bitmap and vector font rendering.

SQLite : It is a powerful and light weight relational database engine which is available to all applications.

Runtime Android: Android includes a set of base libraries that provide most of the features available in the libraries of the Java language base.

Core libraries– The core Android libraries provide most of the functionality available in the core Java libraries as well as the Android-specific libraries.

Dalvik virtual machine-Dalvik is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instances efficiently. It relies on the Linux kernel for threading and low-level memory management.

Linux kernel: This is the kernel on which Android is based. This layer contains all the low level device drivers for the various hardware components of an Android device. Core services (including hardware drivers, process and memory management, security, network, and power management) are handled by a Linux 2.6 kernel. The kernel also provides an abstraction layer between the hardware and the remainder of the stack.