What is Android ?
Before explaining about Android architecture, let me explain about what android is? Android is a mobile operating system that is based on a modified version of Linux. It was originally developed by a startup of the same name, Android, Inc. In 2005, as part of its strategy to enter the mobile space, Google purchased Android and took over its development work (as well as its development team).
Google wanted Android to be open and free; hence, most of the Android code was released under the open source Apache License, which means that anyone who wants to use Android can do so by downloading the full Android source code.
Open Source Impact of Android
Moreover, vendors (typically hardware manufacturers) can add their own proprietary extensions to Android and customize Android to differentiate their products from others. This simple development model makes Android very attractive and has thus piqued the interest of many vendors.
Some companies include Motorola and Sony Ericsson, which for many years have been developing their own mobile operating systems. When the iPhone was launched, many of these manufacturers had to scramble to find new ways of revitalizing their products. These manufacturers see Android as a solution. Now they are continuing to design their own hardware and use Android as the operating system that powers it.
Understanding the Android Architecture
The Android architecture is, put simply, a Linux kernel and a collection of C/C++ libraries exposed through an application framework that provides services for, and management of, the runtime and applications. The Android software stack is composed of the elements explained below:
- Linux kernel — Core services (including hardware drivers, process and memory management, security, network, and power management) are handled by a Linux 2.6 kernel. The kernel also provides an abstraction layer between the hardware and the remainder of the stack.
- Libraries — Running on top of the kernel, Android includes various C/C++ core libraries such as libc and SSL, as well as the following:
- A media library for playback of audio and video media
- A surface manager to provide display management
- Graphics libraries that include SGL and OpenGL for 2D and 3D graphics
- SQLite for native database support
- SSL and WebKit for integrated web browser and Internet security
- Android run time – The run time is what makes an Android phone an Android phone rather than a mobile Linux implementation. Including the core libraries and the Dalvik VM, the Android run time is the engine that powers your applications and, along with the libraries, forms the basis for the application framework.
- Core libraries — Although most Android application development have been written using the Java language, Dalvik is not a Java VM. The core Android libraries provide most of the functionality available in the core Java libraries, as well as the Android specific libraries.
- Dalvik VM — Dalvik is a register-based Virtual Machine that has been optimized to ensure that a device can run multiple instances efficiently. It relies on the Linux kernel for threading and low-level memory management.
- Application framework — The application framework provides the classes used to create Android applications. It also provides a generic abstraction for hardware access and manages the user interface and application resources. Android Framework include following services :-
- Activity Manager – It Controls all aspects of the application life cycle and activity stack.
- Content Providers – Content Providers Allows applications to publish and share data with other applications.
- Resource Manager – It Provides access to embedded resources such as strings, color settings and user interface layouts.
- Notifications Manager – It is used for display alerts and notifications to the user.
- View System – An extensible set of views used to create application user interfaces.
- Package Manager – The system which can be used by applications find out information about other applications currently installed on the device.
- Telephony Manager – Provides information to the application about the telephony services available on the device such as status and subscriber information.
Location Manager –It Provides access to the location services allowing an application to receive updates about location changes.
Application layer — All applications, both native and third-party, are built on the application layer by means of the same API libraries. The application layer runs within the Android runtime, using the classes and services made available from the application framework.
I hope you have understood about Android Architecture by reading the article.
Have a great Programming Journey !