Tuesday, July 5, 2016

Android Architecture

Android OS consist of different software layer and each layer provides services to layer just above it.
These layers are Linux kernel, a runtime environment and corresponding libraries, an application framework and a set of applications as shown below.

Android Architecture, Learn Android App Development

Linux Kernel:

Linux Kernel is an abstract layer between hardware and other software layer and whole Android OS is built on the top of the Linux Kernel with some changes.

NOTE: Kernel means core of any Operating System

  • Android is based upon Linux Kernel that doesn’t mean that you can run Linux packages on Android, It’s totally a new OS.
  • Linux Kernel interacts with hardware and contains all the essential hardware drivers for example Display Driver to interact with display, Camera Driver to interact with Camera etc.
NOTE: Drivers are programs that control and communicate with the hardware.

Libraries


  • It is the layer that enables the device to handle different types of data.
NOTE: Just like Book Library, this library is also a collection of non-volatile resources used by computer programs, often to develop software/application. These may include pre-written code, classes or help data etc.
  • These libraries are written in C or C++ language and are specific for particular hardware.
  • Some important native libraries are
  1. Surface manager: Used for creating the final screen, the user will see.
  2. Media framework: Allows recording and playbacks of different media formats.
  3. WebKit: It is the browser engine used to display HTML content.

Android Runtime


  • It consists of Dalvik Virtual Machine and Core Java libraries.

NOTE: Applications are written in Java and run within individual instances of the Dalvik virtual machine but now Google has introduced a new Virtual Machine known as ART(Android Runtime) in their newer release of Android.

Application Framework


  • These are the blocks that are interacted by Applications to perform basic functions.
  • Being developer, you are allowed to make use of these blocks, some of these blocks are –

  1. Activity Manager: Manages the activity life cycle of applications
  2. Content Providers: Manage the data sharing between applications
  3. Resource manager: Manage various types of resources we use in our Application.
  4. Notification Manager: Manages notification being displayed to user.
  5. View System: Manages the user interface, It is a set of views.

Applications


  • These are the top layer in the Android Architecture and we will write our application to be installed on this layer only. 
  • Examples : Contacts, Camera, Games, Browser etc.