Android and its Architecture

Android

Android is an Operating system based on the Linux kernel, designed primarily for touchscreen mobile devices such as smart phones and tablet computers.

  • Kernel type : Modified Linux (Monolithic)
  • OS family : Unix like
  • Default User Interface : Graphical (Multi touch)
  • Initial release : 23 September 2008
  • Latest release : 9 December 2013 (4.4 Kitkat)



Why Android ?

  • Open source framework
  • Simple usage of tools
  • Availability of Apps
  • Inbuilt support for the Flash.
  • Great social networking integration
  • Integrated Applications & Features
  • Free to customize
  • Better Notification System
  • Updated user interface design



Android Architecture

 

Android
Android Architecture

 


Android Applications

Applications are the top layer in the Android architecture.
 

Android Application
Android Application

Several standard applications comes pre-installed with every device, such as:

  • SMS client app
  • Dialer
  • Web browser
  • Contact manager



Application framework

These are the blocks that our applications directly interact with.
 

Application framework
Application framework

 
Important blocks of Application framework are:
Activity Manager: Manages the activity life cycle of applications
Content Providers: Manage the data sharing between applications
Telephony Manager: Manages all voice calls. We use telephony manager if we want to access voice calls in our application.
Location Manager: Location management, using GPS or cell tower
Resource Manager: Manage the various types of resources we use in our Application.
 


Native libraries and Android Runtime

Native Libraries enable the device to handle different types of data. These libraries are written in c or c++ language and are specific for a particular hardware.
 

Native libraries and Android Runtime
Native libraries and Android Runtime

Some of the important native libraries include:

  • Surface Manager
  • Media Framework
  • SQLite
  • Web Kit
  • OpenGL



Android Runtime

Android Runtime consists of Dalvik Virtual machine and Core Java libraries.
Dalvik Virtual Machine

  • Type of JVM which provides environment on which every android application runs
  • Each Android application runs in its own process, with its own instance of the Dalvik VM.
  • Dalvik has been written such that a device can run multiple VMs efficiently.
  • .dex format is optimized for minimal memory footprint.
  • Written such that a device can run multiple VMs efficiently

Android Runtime
Android Runtime

 


Core Java Libraries

  • These are different from Java SE and Java ME libraries. However these libraries provides most of the functionalities defined in the Java SE libraries.
  • Includes a set of C/C++ libraries used by components of the Android system.
  • Exposed to developers through the Android application framework
  • Providing most of the functionality available in the core libraries of the Java language

APIs

  • Data Structures
  • Utilities
  • File Access
  • Network Access
  • Graphics
  • Etc



Linux kernel

The basic layer is the Linux kernel. The whole Android OS is built on top of the Linux 2.6 Kernel with some further architectural changes made by Google.
 

Linux kernel
Linux kernel

  • Contains all the essential hardware drivers
  • Android uses the Linux for all its core functionality such as
    • Memory management
    • process management
    • networking
    • security settings