Android OS is a Linux-based platform for mobile phones. Android was released under the Apache v2 open source license.
Initially developed by Android, Inc., which Google bought in 2005, Android was unveiled in 2007 along with the founding of the Open Handset Alliance – a consortium of hardware, software, and telecommunication companies devoted to advancing open standards for mobile devices.
According to a report of Statista, in 2015 1160million people are using Android OS.
Today I am going to uncover the internal Architecture of world’s most popular Operating system Android.
Internally the android architecture is divided into 5 parts:
- Application Framework
- Android Runtime
- Linux Kernel
Located at the top of the Android software stack are the applications, or you can say it’s the interface which you see when you operate your phone. Applications created by third party users or developer will be installed on application layer.(i.e email,contacts,browser etc).
It is the 2nd topmost component in android operating system stack.
Android applications directly interact with application framework.
Application framework manages the basic functions of android device such as resource management, voice call management etc.
- Activity Manager -Controls all aspects of the application lifecycle and activity stack.
- Content Providers – Allows applications to publish and share data with other applications.
- Telephony Manager-Block is used to manages all voice calls.
- Location Manager – Provides access to the location services allowing an application to receive updates about location changes
- Resource Manager-Block is used to manage the different types of resources used in android app.
- Package Manager -The system by which applications are able to find out information about other applications currently installed on the device.
- View System – An extensible set of views used to create application user interfaces.
Android Runtime :
It is the third component of the android architecture and placed in second layer from bottom
It provides most important part of android called Dalvik Virtual Machine.
Dalvik Virtual Machine is similar to JVM but the only difference is that it is designed and optimized for Android.
Dalvik Virtual machine uses core functions of Linux such as memory management and multithreading and enables each android app to run its own process.
This category encompasses those Java-based libraries that are specific to Android development. Examples of libraries in this category include the application framework libraries in addition to those that facilitate user interface building, graphics drawing and database access.
- 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.graphics – A low-level 2D graphics drawing API including colors, points, filters, rectangles and canvases.
- android.hardware – Presents an API providing access to hardware such as the accelerometer and light sensor.
- android.opengl – A Java interface to the OpenGL ES 3D graphics rendering API.
- android.os – Provides applications with access to standard operating system services including messages, system services and inter-process communication.
- android.media – Provides classes to enable playback of audio and video.
- android.view – The fundamental building blocks of application user interfaces.
- android.widget – A rich collection of pre-built user interface components such as buttons, labels, list views, layout managers, radio buttons etc.
- android.webkit – A set of classes intended to allow web-browsing capabilities to be built into applications.
On the top of Linux Kernel another layer called libraries is present.It provides the different libraries useful for well functioning of android operating system.Libraries are java libraries build specific for android operating system.
- SQLite-It is used to access data published by content providers and includes SQLite database management classes.
- SSL-It is used to provide internet security.
- OpenGL-It is used to provide Java interface to the OpenGL/ES 3D graphics rendering API.
- Media framework-It is used to provides different media codecs which allow the recording and playback of different media formats.
- WebKit -It is the browser engine used to display internet content or HTML content.
Positioned at the bottom of the Android software stack, the Linux Kernel provides a level of abstraction between the device hardware and the upper layers of the Android software stack. It contains all the essential hardware drivers like camera, keypad, display etc. Linux kernel also provides array of device drivers which make our task easier while interfacing the android with peripheral devices.