• Platform Architecture of Android

    Platform Architecture

    Android is an open source Linux based software stack created for a wide array of devices and form factor. Android OS is a stack of SW components which is roughly divided into 5 sectors and four main layers.



    Linux kernel:

    At the bottom layer of the architecture resides the Linux kernel-Linux 3.6 with approximately 115 patches. This provides a level of abstraction between the device hardware and it contains all the essential hardware drivers like camera keypad display etc also the kernel handles all the things that Linux is really good at such as networking and a vast array of device drivers which take the pain out of interfacing to a peripheral hardware.

    Hardware Abstraction Layer (HAL):

    The hardware abstraction layer (HAL) provides standard interfaces that expose device hardware capabilities to the higher-level Java API framework. The HAL consists of multiple library modules, each of which implements an interface for a specific type of hardware component, such as the camera or Bluetooth module. When a framework API makes a call to access device hardware, the Android system loads the library module for that hardware component.

    Android Runtime:

    For devices running Android version 5.0 (API level 21) or higher, each app runs in its own process and with its own instance of the Android Runtime (ART). ART is written to run multiple virtual machines on low-memory devices by executing DEX files, a bytecode format designed specially for Android that's optimized for minimal memory footprint. Build toolchains, such as Jack, compile Java sources into DEX bytecode, which can run on the Android platform.
    Some of the major features of ART include the following:

    Ahead-of-time (AOT) and just-in-time (JIT) compilation.
    • Optimized garbage collection (GC).
    • On Android 9 (API level 28) and higher, conversion of an app package's Dalvik Executable format (DEX) files to more compact machine code.

    • Better debugging support, including a dedicated sampling profiler, detailed diagnostic exceptions and crash reporting, and the ability to set watchpoints to monitor specific fields.
    Prior to Android version 5.0 (API level 21), Dalvik was the Android runtime. If your app runs well on ART, then it should work on Dalvik as well, but the reverse may not be true.
    Android also includes a set of core runtime libraries that provide most of the functionality of the Java programming language, including some Java 8 language features, that the Java API framework uses.

    Android Libraries

    This category encompasses those Java-based libraries that are specific to Android
    development. Examples of libraries in this category include the application framework libraries in addition to those that facilitate user interface building, graphics drawing and database access. A summary of some key core Android libraries available to the Android developer is as follows –
    • android.app − Provides access to the application model and is the cornerstone of all Android applications.
    • android.content − Facilitates content access, publishing and messaging between applications and application components.
    • android.database − Used to access data published by content providers and includes SQLite database management classes.
    • android.opengl − A Java interface to the OpenGL ES 3D graphics rendering API.
    • android.os − Provides applications with access to standard operating system services including messages, system services and inter-process communication.
    • android.text − Used to render and manipulate text on a device display.
    • android.view − The fundamental building blocks of application user interfaces.
    • android.widget − A rich collection of pre-built user interface components such as buttons, labels, list views, layout managers, radio buttons etc.
    • android.webkit − A set of classes intended to allow web-browsing capabilities to be built into applications.

    Native C/C++ Libraries

    Many core Android system components and services, such as ART and HAL, are built from native code that require native libraries written in C and C++. The Android platform provides Java framework APIs to expose the functionality of some of these native libraries to apps. For example, you can access OpenGL ES through the Android framework’s Java OpenGL API to add support for drawing and manipulating 2D and 3D graphics in your app.
    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.

    Java API Framework

    The entire feature-set of the Android OS is available to you through APIs written in the Java language. These APIs form the building blocks you need to create Android apps by simplifying the reuse of core, modular system components and services, which include the following:

    • A rich and extensible View System you can use to build an app’s UI, including lists, grids, text boxes, buttons, and even an embeddable web browser.
    • A Resource Manager, providing access to non-code resources such as localized strings, graphics, and layout files.
    • A Notification Manager that enables all apps to display custom alerts in the status bar.
    • An Activity Manager that manages the life-cycle of apps and provides a common navigation back stack.
    • Content Providers that enable apps to access data from other apps, such as the Contacts app, or to share their own data.
    Developers have full access to the same framework APIs that Android system apps use.

    System Apps

    Android comes with a set of core apps for email, SMS messaging, calendars, internet browsing, contacts, and more. Apps included with the platform have no special status among the apps the user chooses to install. So, a third-party app can become the user's default web browser, SMS messenger, or even the default keyboard (some exceptions apply, such as the system's Settings app).

    The system apps function both as apps for users and to provide key capabilities that developers can access from their own app. For example, if your app would like to deliver an SMS message, you don't need to build that functionality yourself—you can instead invoke whichever SMS app is already installed to deliver a message to the recipient you specify.




  • You might also like

    No comments:

    Post a Comment

search topics

NEWSLETTER

Get All The Latest Updates Delivered Straight Into Your Inbox For Free!