Android is a popular mobile operating system used in smartphones. Developed by the Open Handset Alliance, which is led by Google. After some years, Google made it open source in November 2007. Most of the Actually Android core is released under the open-source Apache License but most of the software on Android devices (such as Play Store, Google Search, Google Play Services, Google Music, and so on) are proprietary and licensed.
Android has the largest installed base of any mobile OS and sells more than Windows, iOS and Mac OS devices combined. In July 2013 the Google Play store published 1 million Android apps, and it could download over 50 billion apps (PHONEARENA, 2014). A developer survey conducted between April and May 2013. It is found that 71% of mobile developers work for Android. Android uses a Linux kernel with higher-level APIs (Application Program Interface) written in C and applications are normally programmed in Java.
These applications are executed using the Dalvik virtual machine (DVM) using just-in-time compilation. It translates Java byte code into Dalvik dex-code (i.e. class files into .dex). Due to Java byte code, applications have secure features, like shared memory management, preemptive multitasking, UNIX user identifiers (UIDs) and file permissions with the type-safe concept of Java. Processes have a unique ID and every application run in a separate process having distinct permissions, which means that applications can typically can’t read or write each other’s data or code.
But if any application wants to share the data or resources, it does explicitly. To make a resource sharing between applications possible, the permissions which are required must be declared statically at the time the application is installed. The Android system allows the user for permission at this time; a mechanism for granting permission dynamically at run-time is not possible and would lead to an increase of security transparency.
The system architecture consists of :
- A Linux Kernel
- Open source Libraries
- The Android Run-time
- An Application Framework
A Linux Kernel
The Bottom most layer is a Linux Kernel. It provides a high level of abstraction between hardware. It contains important hardware drivers like camera, keypad, display, etc. The kernel uses all good features of its own for the networking. Linux kernel provides security between applications and system. It manages the memory properly so that it provides freedom to develop the apps. Effective process management is done by the Linux kernel.
Open source Libraries
Open source libraries are coded with core languages C and C++ which are present at the top of the kernel. These are useful for the well functioning of the Android operating system. Open GL is a library used for graphics purposes produces 2D and 3D computer graphics. It can run on cross-platform with cross languages as API (Application Program Interface). WebKit used for providing the display of web pages and simplifies the page loading. MediaFramework library allows playing and recording the audio and videos. SSL(Secure Socket Layer is for Internet security).
It is the most vital component of Android architecture because it holds the Dalvik Virtual Machine. It acts like a Java Virtual Machine (JVM) which converts Java byte code into the .dex file. Android uses its own Virtual machine which is designed especially for it and it runs a number of instances simultaneously on a single device. Delvik uses the functionalities like security, memory management from Linux kernel.
The application framework has functionality in the form of Java classes. Application developers use these facilities to develop applications.
The Android framework includes the following important services
- Activity Manager: It Controls all aspects of the application life-cycle and activity stack.
- Content Providers: It allows applications to publish and share data with other applications.
- Resource Manager: It provides access to non-code embedded resources such as strings, color settings, and user interface layouts.
- Notifications Manager: It allows applications to display alerts and notifications to the user.
- View System: It provides the attractive views used to create application user interfaces.
The topmost layer is application layer means actual use of applications by the users. We can install our software here. Examples of applications are Games, Messages, and Contacts, browsers, books etc.