> For the complete documentation index, see [llms.txt](https://riteshs4hu.gitbook.io/infosec-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://riteshs4hu.gitbook.io/infosec-notes/android-appsec/fundamenteals/its-architecture.md).

# It's Architecture

Android’s architecture is based on a modified version of the Linux kernel and is designed to be open and flexible. It comprises several key components that work together to deliver a rich user experience.

<figure><img src="/files/QERgKDlh1pEPrHjZ4YSW" alt=""><figcaption></figcaption></figure>

### **Applications:**

At the top of the Android architecture are the applications themselves. These are the software programs that users interact with, such as messaging apps, web browsers, games, and tools.&#x20;

### **Android Framework:**&#x20;

Android framework provides a set of Java libraries and APIs that developers use to build applications. It includes various components such as **Activity Manager**, **Content Providers**, **View System**, and **Notification Manager etc**. These components provide the building blocks for creating applications and interacting with the system services.

### **Native Libraries and Android Runtime (ART/Dalvik VM):**&#x20;

Android includes a set of native libraries written in C/C++ that provide core functionalities such as ***graphics rendering (OpenGL),*** ***database access (SQLite),*** and ***web rendering (WebKit).*** The Android framework and applications use these native libraries to access low-level system functionalities.

{% hint style="warning" %}
Android applications are written in **Java** or **Kotlin** and are compiled into **bytecode** that runs on the ***Android Runtime (ART)***.
{% endhint %}

***Android Runtime (ART)*** is the runtime environment used to run Android applications. It uses **ahead-of-time (AOT)** compilation to convert application bytecode into native machine code, which improves performance and efficiency compared to the earlier Dalvik virtual machine. Dalvik VM was the original runtime used in Android before being replaced by ART.

### **Hardware Abstraction Layer (HAL):**

Provides a standardised interface for Android to communicate with hardware components, allowing device manufacturers to write drivers for their specific hardware.

### **Linux Kernel:**

The Linux kernel serves as the foundation of the Android operating system. It provides core functionalities such as device drivers, memory management, process management, and networking. The Linux kernel is responsible for interacting with the device’s hardware and managing system resources.
