Android architecture is a software stack of components to support mobile device needs. The software stack of android consists of a Linux Kernel and collection of c/c++ libraries that are exposed through an application framework services, runtime, and application.
Following are the main components of android architecture:
- Applications
- Android Framework
- Android Runtime
- Platform Libraries
- Linux Kernel
From the above components, the Linux Kernel is the main component that provides its operating system functions to mobile and Dalvik Virtual Machine (DVM) which is responsible for running a mobile application.
Following is the android architecture with different components.

Applications:
The topmost layer of the android architecture stack consists of applications called apps, which are programs that users directly interact with. It consists of the native and third-party applications like contacts, email, music, gallery, clock, games, etc, whatever we will build those will be installed on this layer only. The applications use the android framework which uses android runtime and libraries.
There are two types of apps:
- System Apps: System applications are pre-installed on the phone and are shipped along with the phone. Examples of system applications are default browser, email client, contacts and message, etc. Normally these applications cannot be uninstalled, though some devices offer the ability to disable these applications. If system applications are disabled, the app and all of its data remain on the device on the system partition, the application icon is simply hidden from the user.
- User Installed Apps: These applications are downloaded and installed by the user from different platforms such as Google Play. Google Play is the official app store for the Android operating system using which users can browse and download the applications. Based on December 2017 statistics from Statista, there are around 3.5 million Android apps in the Play Store.
Application Framework:
The application framework provides classes that are used to create android applications. A generic abstraction is also provided by the application framework for hardware access and it manages the user interface and application resources. It provides the services through which we can create a particular class and make that class helpful for application development.
It consists of different services like telephony service, notification manager, location services, NFC service, view system, etc. which can be used for application development as per our requirements.
Android Runtime:
Android runtime environment is one of the important parts of android rather than an internal part and it contains components like core libraries and the Dalvik virtual machine. The android run time is nothing but the engine that powers our applications along with the libraries and it forms the basis for the application framework.
Dalvik Virtual Machine (DVM) is a register-based virtual machine like Java Virtual Machine (JVM). It is specially designed and optimized for android to ensure that a device can run multiple instances efficiently. It depends on the Linux kernel for threading and low-level memory management. The core libraries of android runtime will enable us to implement android applications using standard JAVA programming language.
Platform Libraries:
The platform libraries include different C/C++ core libraries and Java-based libraries such as SSL, Graphics, SQLite, Webkit, Media, Surface Manager, OpenGL, etc. to provide support for android development.
The following are the details of some core android libraries available:
- Media library for playing and recording audio and video formats
- SGL and OpenGL Graphics libraries for 2D and 3D graphics
- Surface manager library for providing a display management
- SQLite is for database support and FreeType for font support
- Web-Kit is for web browser support and SSL for Internet security.
Linux Kernel:
Linux kernel is the heart of the android architecture and it is the bottom layer. The function of Linux kernel is to manage all the drivers such as display drivers, camera drivers, Bluetooth drivers, audio drivers, memory drivers, etc. that are required for the android device during the runtime.
The abstraction layer is provided by the Linux kernel between the device hardware and the remainder of the stack and it is responsible for memory management, power management, device management, resource access, etc.