Android operating system comprise of different software components arranges in stack. Different components of android operating system are-
Linux kernel provides a level abstraction between the device hardware and upper layer of android software stack. Linux kernel is responsible for device drivers, Binder(IPC) Driver, power management, memory management, device management and resource access.
Android Run time
In API level 21 or higher, each app runs in its own process and with its own instance of the Android Runtime (ART). ART is written to run multiple virtual machines on low-memory devices by executing DEX files and provides fast performance.
it includes core libraries, it divides into mainly three categories.
- Dalvik VM Specific Librarie,
- Java Interoperability Libraries,
- Android Libraries.
Native libraries written in C and C++. Native libraries such as,SQLite,Media framework, OpenGL|ES, FreeType, WebKit, SGL, SSL, C runtime library (libc) etc.
- WebKit library is responsible for browser support,
- SQLite is for database,
- FreeType for font support,
- Media for playing and recording audio and video formats,
- SSL is used to provide internet security,
- OpenGL/ES is used to provide Java interface to 3D graphics rendering API.
- SGL is the low-level graphics library implemented in native code that handles rendering – Text, Geometries, and Images
The Application Framework is a set of services that collectively form the environment in which Android applications run and are managed. This framework implements the concept that Android applications are constructed from reusable, interchangeable and replaceable components.
The Android framework includes the following key services:
- Activity Manager – Controls all aspects of the application lifecycle and activity stack.
- Content Providers – 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.
- Notifications Manager – Allows applications to display alerts and notifications to the user.
- View System – An extensible set of views used to create application user interfaces.
- Package Manager – The system by which applications are able to find out information about other applications currently installed on the device.
- Telephony Manager – Provides information to the application about the telephony services available on the device such as status and subscriber information.
- Location Manager – Provides access to the location services allowing an application to receive updates about location changes.
On the top of the Android software stack are the applications. All applications such as home, contact, SMS/MMS, email, dialer, calendar, alarm, settings, games, browsers etc.