The Android glossary

The short version of 53 systems terms. Each one connects to a chapter.

53 terms

AOSP

Android Open Source Project: the public source code and engineering project behind the Android platform.

Read the explanation

ADB

Android Debug Bridge: a client/server tool for communicating with a device. An ADB shell is not automatically root.

Read the explanation

Address

A number identifying a location in an address space. A process virtual address is not automatically a physical RAM or device-bus address.

Read the explanation

ABI

Application Binary Interface: the contract between compiled components, such as calling conventions and symbol layouts.

Read the explanation

AIDL

Android Interface Definition Language: describes an interface from which Binder communication code can be generated.

Read the explanation

ART

Android Runtime: runs managed application code, with interpretation, compilation, and garbage collection.

Read the explanation

AVB

Android Verified Boot: verifies signed metadata and protected partitions as part of a chain of trust.

Read the explanation

AVC

Access Vector Cache. An SELinux AVC denial records a policy decision about a subject, object, class, and requested permission; it does not by itself identify the correct fix.

Read the explanation

Binder

Android’s inter-process communication system. A call crosses a process boundary rather than sharing an ordinary object.

Read the explanation

BufferQueue

A graphics producer/consumer mechanism coordinating reusable buffers and their ownership. Queueing a buffer is not proof its producing work is complete.

Read the explanation

Bootloader

Early software that selects, checks, and starts a boot image. Unlocking it is not the same thing as gaining root.

Read the explanation

Callback

A function supplied for another component to invoke later. Ask which thread can call it and how long the referenced objects remain alive.

Read the explanation

Compiler

A program that translates source code into another form, such as machine-code object files. Building and running are separate steps.

Read the explanation

CTS / VTS

Compatibility Test Suite / Vendor Test Suite. They test specified platform or vendor contracts; passing selected tests is not proof of complete device compatibility.

Read the explanation

Cuttlefish

A configurable virtual Android device used for platform development and testing.

Read the explanation

DAC

Discretionary access control: Linux ownership and mode-based access rules, alongside other security mechanisms.

Read the explanation

DEX

Dalvik Executable: a bytecode format Android Runtime can execute. Java source, DEX, native machine code, and a running process are different things.

Read the explanation

DMA

Direct memory access: a device transfers data under an explicit mapping and ownership protocol. A CPU pointer is not automatically a device DMA address.

Read the explanation

DTB / DTBO

Compiled device-tree data / a device-tree overlay. They describe hardware or changes to that description; they are not driver executable code.

Read the explanation

Environment variable

A named value passed to a program, such as PATH. A variable on the host is not automatically set inside an Android device shell.

Read the explanation

FBE

File-based encryption: encrypts files using different keys and availability policies, including before and after user unlock.

Read the explanation

Fence

A synchronization object describing completion of asynchronous work. Its acquire, release, or presentation role determines what completion means.

Read the explanation

GKI

Generic Kernel Image: a common Android kernel with a defined interface for compatible vendor modules.

Read the explanation

GID

Group identifier: a numeric Linux group identity used in access decisions. A process can also have supplementary groups.

Read the explanation

HAL

Hardware Abstraction Layer: a defined interface between Android framework components and hardware-specific implementations.

Read the explanation

init

The first userspace process, with PID 1. Android init reads configuration, responds to events, and manages services.

Read the explanation

JNI

Java Native Interface: the boundary through which managed Java code and native code communicate. Crossing it does not automatically grant privilege.

Read the explanation

JIT / AOT

Just-in-time / ahead-of-time compilation. ART combines execution strategies and profile guidance rather than compiling every method the same way.

Read the explanation

KMI

Kernel Module Interface: the binary interface used by kernel modules. Stability is constrained to its supported kernel line.

Read the explanation

Kernel

The privileged core that mediates CPU time, memory, hardware access, and system calls.

Read the explanation

Magisk

A third-party root framework that modifies the boot path and provides policy-controlled privileged execution.

Read the explanation

Mount namespace

A process-specific view of the mount tree. It can change path resolution without changing UID or rewriting the underlying base image.

Read the explanation

Mutex

A mutual-exclusion lock used to coordinate access to shared state. It is not a substitute for a correct lifetime or lock-order design.

Read the explanation

OTA

Over-the-air update. Android update implementations can involve inactive slots or snapshots; automatic boot fallback and cryptographic anti-rollback are distinct mechanisms.

Read the explanation

Partition

A named region of storage. Android also uses logical partitions whose data lives inside a larger physical partition.

Read the explanation

PATH

A host or device environment variable listing directories searched for commands. The two machines have separate paths and executables.

Read the explanation

PID

Process identifier: a number identifying a running process. It is not a user identity or a permanent app identifier.

Read the explanation

Pointer

A typed value used to refer to an object or function in a program. Its validity depends on the address space, bounds, and object lifetime.

Read the explanation

Property

An Android configuration/state interface with shared reads, authorized writes, labels, and specialized persistence/control behavior; not a host environment variable.

Read the explanation

Race

Behavior that depends on the order of concurrent events. A data race is a specific unsafe form of unsynchronized conflicting memory access.

Read the explanation

Root

Conventionally Linux user ID 0. Root does not automatically override SELinux, encryption, or every other Android security boundary.

Read the explanation

Saved UID

A retained set-user-ID identity involved in permitted effective-identity transitions. An ordinary app cannot acquire UID 0 merely by requesting it.

Read the explanation

SELinux

Security-Enhanced Linux: mandatory access control based on labels, domains, and policy—even for processes with UID 0.

Read the explanation

Soong

Android’s build system that reads Android.bp module definitions and generates build actions.

Read the explanation

Standard streams

Standard input, output, and error: conventional program I/O channels. A shell can redirect or connect them using files or pipes.

Read the explanation

system_server

The process hosting many core Java Android system services, launched as part of framework startup.

Read the explanation

Treble

Android’s separation of the framework and vendor implementations through defined, versioned interfaces.

Read the explanation

TCB

Trusted computing base: the components a security claim depends on. Adding a root framework changes what must be trusted.

Read the explanation

UID

User identifier: a numeric Linux identity used in ownership and access decisions. Android assigns app identities using UIDs.

Read the explanation

userdebug

A platform build variant with development/debugging features, distinct from a production user build.

Read the explanation

VFS

Virtual Filesystem: the Linux abstraction that dispatches generic file operations to filesystem or device implementations.

Read the explanation

VINTF

Vendor Interface object: manifests and compatibility matrices describe provided interfaces and required supported contracts. A match is not a physical hardware test.

Read the explanation

Zygote

An Android process that initializes runtime state and forks processes that run applications or system_server.

Read the explanation