The following diagram shows the major components of the Android operating system.
Linux Kernel: Linux version provides more security, memory management, process management, network stack, and driver model. The kernel is also part the OS that acts as an abstraction layer between the hardware and the rest of the software stack.
Libraries : Android includes a set of C/C++ libraries used by various components of the Android system.
Application Framework :
Android provides an open development platform, So Developers have full access to the same framework APIs used by the core applications. Developers are free to take advantage of the device hardware, access location information, run background services, set alarms, add notifications to the status bar, and much, much more.
Underlying all applications is a set of services and systems, including
- A rich and extensible set of Views that can be used to build an application, including lists, grids, text boxes, buttons, and even an embeddable web browser.
- Content Providers that enable applications to access data from other applications (such as Contacts), or to share their own data
- A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files
- A Notification Manager that enables all applications to display custom alerts in the status bar
- An Activity Manager that manages the lifecycle of applications and provides a common navigation backstack.
Every Android application runs in its own process, with its own instance of the Dalvik virtual machine.
Dalvik has been written so that a device can run multiple VMs efficiently.The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint.
The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.
Android includes a set of core libraries that provides most of the functionality.
Some of the core libraries are listed below
Media Libraries based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG.
Surface Manager manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications.
LibWebCore a modern web browser engine which powers both the Android browser and an embeddable web view.
3D libraries an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer
FreeType bitmap and vector font rendering.
SQLite a powerful and lightweight relational database engine available to all applications.
System C library a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices
Android will ship with a set of core applications including an email client, SMS program, calendar, maps, browser, contacts, and others. All applications are written using the Java programming language.