The Android software stack generally consists of a Linux kernel and a collection of C/C++ libraries that are exposed through an application framework that provides services, and management of the applications and run time.
Android was created on the open-source kernel of Linux. One main reason for choosing this kernel was that it provided proven core features on which to develop the Android operating system. The features of the Linux kernel are:
1. Security: The Linux kernel handles the security between the application and the system.
2. Memory Management: It efficiently handles memory management thereby providing the freedom to develop our apps.
3. Process Management: It manages the process well and allocates resources to processes whenever they need them.
4. Network Stack: It effectively handles network communication.
5. Driver Model: It ensures that the application works. Hardware manufacturers can build their drivers into the Linux build.
Running on top of the kernel, the Android framework was developed with various features. It consists of various C/C++ core libraries with numerous open-source tools. Some of these are:
1. The Android Runtime: The Android runtime consists of core libraries of Java and ART(the Android RunTime). Older versions of Android (4.x and earlier) had Dalvik runtime.
2. Open GL(graphics library): This cross-language, cross-platform application program interface (API) is used to produce 2D and 3D computer graphics.
3. WebKit: This open-source web browser engine provides all the functionality to display web content and simplify page loading.
4. Media frameworks: These libraries allow you to play and record audio and video.
5. Secure Socket Layer (SSL): These libraries are there for Internet security.
It is the third section of the architecture. It provides one of the key components which is called Dalvik Virtual Machine. It acts like Java Virtual Machine which is designed especially for Android. Android uses its own custom VM designed to ensure that multiple instances run efficiently on a single device.
The Dalvik VM uses the device’s underlying Linux kernel to handle low-level functionality, including security, threading, and memory management.
The Android team has built on a known set of proven libraries, built in the background, and all of it is exposed through Android interfaces. These interfaces wrap up all the various libraries and make them useful for the Developer. They don’t have to build any of the functionality provided by the android. Some of these interfaces include:
1. Activity Manager: It manages the activity lifecycle and the activity stack.
2. Telephony Manager: It provides access to telephony services as related subscriber information, such as phone numbers.
3. View System: It builds the user interface by handling the views and layouts.
4. Location manager: It finds the device’s geographic location.
Android applications can be found at the topmost layer. At the application layer, we write our application to be installed on this layer only. Examples of applications are Games, Messages, Contacts, etc.