Android Architecture
# Android Architecture
The Android operating system is a stack of software components, which can be roughly divided into five sections and four main layers in the architecture diagram.

* * *
## Linux Kernel
At the very bottom of all layers is Linux - specifically Linux 3.6 with approximately 115 patches. It provides basic system functionalities such as process management, memory management, and device management (like cameras, keyboards, displays). The kernel also handles all the tasks that Linux excels at, such as networking and a vast array of device drivers, thereby avoiding the inconvenience of supporting a multitude of peripheral hardware interfaces.
* * *
## Libraries
Above the Linux kernel layer is a collection of libraries, including the open-source Web browser engine WebKit, the well-known libc library, the SQLite database for data storage and application data sharing, libraries for playing and recording audio/video, the SSL library for network security, and more.
* * *
## Android Libraries
This category includes Java-based libraries developed specifically for Android. Examples of libraries in this category include application framework libraries for building user interfaces, graphics rendering, and database access. Some of the core Android libraries available to Android developers are summarized below:
* android.app - Provides access to the application model and is the cornerstone of all Android applications.
* android.content - Facilitates content access, publishing, and messaging between applications and application components.
* android.database - Used to access data published by content providers and includes SQLite database management classes.
* android.opengl - A Java interface for the OpenGL ES 3D graphics rendering API.
* android.os - Provides applications with access to standard operating system services, including messaging, system services, and inter-process communication.
* android.text - Used for rendering and manipulating text on device displays.
* android.view - The fundamental building blocks for application user interfaces.
* android.widget - A rich set of pre-built user interface components, including buttons, labels, lists, layout managers, radio buttons, etc.
* android.webkit - A collection of classes that allow applications to have built-in web browsing capabilities.
Having looked at the Java-based core libraries within the Android Runtime, it's time to turn our attention to the C/C++ based libraries in the Android software stack.
* * *
## Android Runtime
This is the third part of the architecture, the second layer from the bottom up. This section provides the key component known as the Dalvik Virtual Machine, which is similar to the Java Virtual Machine but was designed and optimized specifically for Android.
The Dalvik Virtual Machine allows the use of core Linux functionalities, such as memory management and multithreading, within Java. The Dalvik Virtual Machine ensures that each Android application runs in its own independent virtual machine process.
The Android Runtime also provides a set of core libraries that allow Android application developers to write Android applications using the standard Java programming language.
* * *
## Application Framework
The Application Framework layer provides many advanced services to applications in the form of Java classes. Application developers are allowed to use these services in their applications.
* Activity Manager - Controls all aspects of the application lifecycle and activity stack.
* Content Provider - Allows applications to publish and share data with other applications.
* Resource Manager - Provides access to non-code embedded resources, such as strings, color settings, and user interface layouts.
* Notification Manager - Allows applications to display dialogs or notifications to the user.
* View System - An extensible collection of views used to build application user interfaces.
* * *
## Applications
At the top layer are all the Android applications. The applications you write will also be installed in this layer. These applications include contacts, browsers, games, and more.
YouTip