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

Linux Kernel
At the very bottom of all layers is Linux - Linux 3.6 with approximately 115 patches. It provides basic system functions such as process management, memory management, and device management (e.g., camera, keyboard, display). Meanwhile, the kernel handles all the work that Linux excels at, such as networking and a large number of device drivers, thereby avoiding the inconvenience of having to be compatible with a large number 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 and video, and the SSL library for network security, among others.
Android Libraries
This category includes Java-based libraries developed specifically for Android. Examples of libraries in this category include application framework libraries, such as user interface building, graphics drawing, and database access. Some of the Android core 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 message passing between applications and between application components.
- android.database - Used to access data published by content providers, including SQLite database management classes.
- android.opengl - The Java interface to the OpenGL ES 3D graphics rendering API.
- android.os - Provides applications with the ability to access standard operating system services, including messaging, system services, and inter-process communication.
- android.text - Renders and manipulates text on device displays.
- android.view - The fundamental building blocks of application user interfaces.
- android.widget - A rich collection of pre-built user interface components, including buttons, labels, lists, layout managers, radio buttons, and more.
- android.webkit - A collection of classes that allow applications to provide built-in Web browsing capabilities.
Now that we have reviewed the Java-based core libraries in the Android runtime layer, it is time to focus on the C/C++-based libraries in the Android software stack.
Android Runtime
This is the third section in the architecture and the second layer from the bottom. This section provides a key component called the Dalvik Virtual Machine, which is similar to the Java Virtual Machine but designed and optimized specifically for Android.
The Dalvik Virtual Machine enables the use of Linux core features such as memory management and multithreading in Java. The Dalvik Virtual Machine allows each Android application to run in its own independent virtual machine process.
The Android Runtime also provides a set of core libraries to enable Android application developers to write Android applications using the standard Java language.
Application Framework
The Application Framework layer provides many high-level 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 the activity stack.
- Content Providers - Allow applications to publish and share data between 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 users.
- View System - An extensible collection of views for creating application user interfaces.
Applications
At the top level are all Android applications. The applications you write will also be installed in this layer. These applications include contacts, browsers, games, and more.
Other Extensions