Android architecture is a stack of software components. It takes the shape of software apps, operating systems, runtime, C / C++ libraries and services. It is categorized into six parts as below:
The foundation of the Android platform is the Linux kernel. This gives the hardware and upper layers in the Android stack an abstraction level.
A variety of device drivers, including Camera driver, display driver, Bluetooth driver, key pad driver, memory management, process management, power management, etc. are controlled in a Linux kernel.
The Abstraction hardware layer (HAL) offers standard interfaces, which allow the Java API framework in a higher level to display hardware functionality.
The HAL consists of several library modules, each with an interface to a particular hardware component, such as a camera or a bluetooth module.
When a framework API calls for hardware to access the device, the library module is loaded by the Android system.
Android Runtime is the fourth section of the architecture and situated on the third layer from the bottom.
Android Runtime includes core libraries and the Dalvik Virtual Machine (DVM) that runs Android.
Dalvik Virtual Machine (DVM) is like Java Virtual Machine (JVM) in Java, but DVM is optimized for mobile Devices.
DVM makes use of the Linux core features like memory management and multi-threading, which are essential in the Java language.
DVM provides fast performance and consumes less memory.
Native libraries (for instance Media, WebKit, SQLite, OpenGL, FreeType and the C library, library runtime etc.) can be located on top of a Linux kernel.
Media library is responsible for audio and video formats, font support is provided in FreeType, browser support is provided in WebKit,
database support for SQLite is available, web security is provided in SSL, and so on.
A summary of some key core Android libraries available is as follows
android.app : Provides access to the application model and is the cornerstone of all Android applications.
android.content : Enables the access, publishing and messaging of content between apps and application components.
android.database : Used to access published data from content providers, including SQLite database administration classes.
android.opengl : A OpenGL ES 3D rendering API Java interface. Java interfaces.
android.os : Provides the access of applications to the standard operating systems services including messages, system services and interprocess communication.
android.text : Used for rendering and handling text on a display device.
android.view : The basic building blocks of the interfaces between applications.
android.widget : A rich collection of built - in components of user interfaces like buttons, labels, list views, layout managers, radio buttons, etc.
android.webkit : A series of classes designed to allow the integration of web browsing capabilities.
If you are developing an app that requires C or C++ code, you can use the Android NDK to access some of these native platform libraries directly from your native code.
You can access the whole set of features of the Android OS through Java written APIs. These APIs form the basis for creating Android applications by simplifying the reuse of core, modular system components and services, which include the following:
Developers have full access to the same Android System apps framework APIs.
Apps that are included on the platform are not specific in the user's apps.
A third - party app can thus become a standard user web browser, a SMS messager and even a default keyboard (some exceptions apply, such as a System Setup app).
The system applications are functionally equipped for Android's core email apps, SMS messages, calendars, web browsing, contacts and more.
For example, if your app would like to deliver an SMS message, you do not have to build this feature yourself — instead you can invoke any SMS app that you have already set up to deliver a message to your recipient.