Android Software Stack
• A solution stack or software stack is a set of software systems
or components needed to create complete platform such that
no additional software is needed to support applications
• Android OS is a stack of software components which is
divided into 5 sections and 4 main layers
• Linux kernel
• Native libraries (middleware),
• Android Runtime
• Application Framework
• Applications
Android architecture
1) Linux kernel
• The term ‘kernel’ means ‘core’ as the name indicates ,It is the
heart of android architecture that exists at the root of android
architecture.
• Linux kernel is the base of the software layers upon which all
other layers of the android are built.
• Users are not allowed to directly interact with this layer.
• All the essential hardware drivers are located in Linux Kernel
which communicates with the hardware.
• Linux Kernel can also act as an abstraction layer between
hardware and software layers
1) Linux kernel
• The following are the important functions of kernel in the
android system:
• Hardware abstraction
• Memory management programs
• Security settings
• Power management software
• Support for shared libraries
• Network stack
• Device driver management
2) Native Libraries
• Next to Linux Kernel layer is the Android’s Native Libraries.
• They provide capabilities for android’s core features. Libraries help the
device to handle different types of data.
• The following are some of the important native libraries:
• Surface Manager: manages access to the display subsystem and 2D
and 3D graphic layers from multiple applications .
• Media Framework: for playing and recording audio and video formats.
• SQLite : is an android database engine which stores data.
• WebKit : is a browser engine that displays HTML content.
• OpenGL : renders 2D or 3D graphic contents on the screen.
• FreeType :for font support
• C runtime library (libc)
3) Android Runtime
• This is the 3rd section of the architecture and available on the
second layer from the bottom
• In android runtime, there are core libraries and DVM (Dalvik
Virtual Machine) which is responsible to run android
application.
• DVM is like JVM but it is optimized for mobile devices. It
consumes less memory and provides fast performance.
• DVM takes the generated java class files and combines them
into one or more .dex files
• Goal of DVM is to find every possible ways to optimize the
JVM for space,performance and battery life
• The javac tool compiles the java source file
into the class file.
• The dx tool takes all the class files of your
application and generates a single .dex file.
• It is a platform-specific tool.
• The Android Assets Packaging Tool (aapt)
handles the packaging process.
4) Android Framework
• On the top of Native libraries and android runtime, there is
android framework.
• Android framework layer which is written in Java
includes Android API's such as UI (User Interface), telephony,
resources, locations, Content Providers (data) and package
managers.
• It provides a lot of classes and interfaces for android
application development.
4) Android Framework
• The following are some of the basic tools with which
applications are built:
• Activity Manager : Activity life cycles of applications are
managed.
• Content Providers : data sharing among applications are
managed.
• Telephony Manager : manages the location via GPS or base
station receiver.
• Resource Manager : various types of resources used in
applications are managed.
5) Applications
• On the top of android framework, there are applications.
• All applications such as home, contact, settings, games, browsers are
using android framework that uses android runtime and libraries.
• Android runtime and native libraries are using linux kernel.