The Android operating system architecture is a stack of software components that is divided into approximately five sections and four main layers, the architecture of which is shown in the figure below.
Linux kernel _ Linux kernel
In the lower layers of Linux – Linux 3.6 with approximately 115 patches, which creates an abstraction level between the device hardware and all the necessary hardware drivers such as camera, keyboard, screen, etc. It also offers the core of everything that Linux does well, such as networks and a wide range of device drivers, that take the hassle out of connecting to peripheral hardware.
At the top of the Linux kernel is a collection of libraries including the open source search engine WebKit, the popular libc library, the SQLite database, which is a useful repository for storing and sharing application data, audio and video playback libraries, SSL And libraries are responsible for Internet security and so on.
This category includes Java-based libraries dedicated to Android development. Examples of libraries in this group include application framework libraries, user interface creation, graphic design, and database access. The following is a summary of the major Android libraries available to developers:
- android.app – Provides access to the application model and is the cornerstone of all Android applications.
- android.content – Facilitates access to content, 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 – Java interface with OpenGL ES 3D graphic rendering API.
- android.os – Provides access to standard operating system services, including messaging, system services, and process communications.
- android.text – Used to present and manipulate text on the device screen.
- android.view – Basic building blocks of application interfaces.
- android.widget – A rich set of user interface prefixes such as buttons, labels, list views, layout managers, radio buttons and more.
- android.webkit – A set of classes to enable web search in applications.
With the coverage of major Java-based libraries running Android, now is the time to look at the C / ++ C-based libraries in this layer of the Android software stack.
This is the third part of the architecture and is located in the second layer from the bottom. This section introduces a key component called the Dalvik Virtual Machine, which is a type of Java virtual machine designed and optimized specifically for Android.
Dalvik VM uses basic Linux features such as memory management and multi-threading, which is inherent in Java. Dalvik VM enables any Android application to run in its own process using the Dalvik virtual machine.
Android runtime provides a set of core libraries that enable Android app developers to write applications using the standard Java programming language.
The Application Framework layer provides many higher-level services to applications in the form of Java classes. Application developers are allowed to use these services in their applications.
Android Framework includes the following key services –
- Activity Manager – Controls all aspects of the program life cycle and activity stack.
- Content Providers – Allows applications to share data with other applications.
- Resource Manager – Provides access to non-embedded non-code resources such as strings, color settings, and UI layouts.
- Notifications Manager – Allows applications to display alerts and notifications to the user.
- View System – A set of extensive views used to create application interfaces.
You will find all Android apps in this layer. The program written on this layer is installed. Examples of such applications are: phonebook, browser, games, etc.