Skip to main content
Docs
What's new?
Release notes
Latest security bulletins
Latest Compatibility Definition Document (CDD)
Site updates
Getting Started
About
Start
Download
Build
Test
Create
Contribute
Community
Tools, build, and related reference
Security
Overview
Bulletins
Features
Testing
Best Practices
Core Topics
Architecture
Audio
Camera
Connectivity
Data
Display
Fonts
Graphics
Interaction
Media
Performance
Permissions
Power
Runtime
Settings
Storage
Tests
Updates
Virtualization
Compatibility
Compatibility Definition Document (CDD)
Compatibility Test Suite (CTS)
Android Devices
Cuttlefish
Enterprise
TV
Automotive
Get Started
Guidelines for Development
Development Tools
Testing Tools and Infrastructure
Release Details
Reference
HIDL
HAL
Trade Federation
Security Test Suite
Android Code Search
/
English
Deutsch
Español – América Latina
Français
Indonesia
Italiano
Polski
Português – Brasil
Tiếng Việt
Türkçe
Русский
עברית
العربيّة
فارسی
हिंदी
বাংলা
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
Sign in
Documentation
What's New?
Getting Started
Security
Core Topics
Compatibility
Android Devices
Automotive
Reference
Docs
More
What's New?
Getting Started
Security
Core Topics
Compatibility
Android Devices
Automotive
Reference
Android Code Search
Overview
Architecture
Overview
Hardware abstraction layer (HAL)
Overview
HIDL (deprecated)
Overview
Interfaces and packages
Interface hashing
Services and data transfer
Fast Message Queue
Use Binder IPC
Use MemoryBlock
Network stack configuration tools
Model threading
Convert HAL modules
Data types
Safe union
Interface versioning
Code style guide
HIDL C++
Overview
Packages
Interfaces
Data types
Functions
HIDL Java
Overview
Data types
Interface methods and errors
Export constants
Other
HIDL framework backward compatibility verification
Dynamically available HALs
Legacy HALs (AOSP <=v7)
Kernel
Overview
Kernel release notes
Stable kernel releases and updates
Android common kernels
GKI project
GKI development
GKI versioning scheme
GKI release builds
Overview
android12-5.10 release builds
android13-5.10 release builds
android13-5.15 release builds
android14-5.15 release builds
android14-6.1 release builds
android15-6.6 release builds
android16-6.12 release builds
GKI deprecated builds
android12-5.10 deprecated builds
android13-5.10 deprecated builds
android13-5.15 deprecated builds
android14-5.15 deprecated builds
android14-6.1 deprecated builds
android15-6.6 deprecated builds
android16-6.12 deprecated builds
GKI release process
GKI 16-6.12 android-mainline errata
Maintain a stable KMI
Kernel ABI monitoring
Overview
Run ABI monitoring
Work with symbol lists
Modules
Overview
Configure kernel features as GKI modules
Vendor module guidelines
Loadable kernel modules
Kernel module support
Test GKI modules
Boot time optimization
Debug features
Develop kernel code for GKI
Android kernel file system support
Extend the kernel with eBPF
Use DebugFS in Android 12
FIPS 140-3 certifiable GKI crypto module
EROFS
Android kernel FAQ
Kernel networking unit tests
Transition from ION to DMA-BUF heaps (5.4 kernel)
Incremental file system
Configuration
Overview
Implement system properties as APIs
Add system properties
Implement Config File Schema API
Archive
Overview
ConfigStore
Create the HAL interface
Implement the service
Client-side use
Add ConfigStore classes and items
Device tree overlays
Overview
Implement DTOs
DTO syntax
Compile and verify
Use multiple DTs
DTB and DTBO partitions
Optimize DTO
Vendor NDK (<=AOSP 14)
Overview
Enable VNDK
VNDK build system support
VNDK extensions
VNDK snapshot design
Generate VNDK snapshots
Generate vendor snapshots
Linker namespace
Directories, rules, and sepolicy
RenderScript
ABI stability
Prebuilt ABI usages checker
Vendor interface object
Overview
Manifests
Compatibility matrixes
FCM lifecycle
Device manifest development
Match rules
Additional resources
AIDL
Overview
AIDL language
AIDL backends
Stable AIDL
AIDL for HALs
Run AIDL services dynamically
Annotations in AIDL
FMQ with AIDL
AIDL fuzzing
AIDL style guide
Interprocess communication with Binder
Overview
Handle threads
Priority inheritance
Bootloader
Overview
Canonical boot reason
Boot image header
Implement bootconfig
Recovery images
DTB images
Implement OTA updates
Lock and unlock the bootloader
Version information in AVB properties
Move fastboot to userspace
Generic Bootloader
Overview
Deploy GBL
Partitions
Overview
Partition layout
Vendor boot partitions
Vendor and ODM DLKM partitions
Android shared system image
Ramdisk partitions
Generic boot partition
ODM partitions
Product partitions
Implement a GKI module partition
Enforce product partition interfaces
Trusty OS partitions
16 KB page size
Overview
Use Cuttlefish with 16 KB page size on ARM64
Simulate Cuttlefish with 16 KB page size on x86-64
Build and Flash Pixel 8 devices with 16 KB support
Flash Pixel with 16 KB page size support
Get the page size
Optimize performance for 16 KB mode
16 KB system properties
Enable 16 KB toggle
Enable 16 KB backcompat option
Vendor API level
Audio
Overview
Terminology
Implementation
Audio HAL
AIDL Audio HAL
Configurable Audio Policy support in AIDL HAL
AIDL and HIDL Audio HAL comparison
HIDL
HIDL Audio HAL
Configure audio policies
Configure a shared library
Configure preprocessing effects
Data formats
Attributes
Effects
High-resolution audio
Device type limit
AAudio and MMAP
Audio warmup
Latency
Overview
Contributors
Design for reduced latency
Measure audio latency
Audio loopback dongle
Measurements
For app developers
Avoid priority inversion
Sample rate conversion
Debugging
MIDI
Overview
MIDI architecture
MIDI test procedure
USB
USB digital audio
Preferred mixer attributes on USB devices
TV audio
Concurrent capture
Sound Trigger
Combined audio device routing
Spatial audio
Spatial audio and head tracking
Implementation
Head tracking over LE audio
Sound dose
Dynamic soundbar mode
Camera
Overview
Architecture
Camera HAL
HAL subsystem
Core concepts
3A modes and state transition
Camera debugging
Error and stream handling
Metadata and controls
Output streams, cropping, and zoom
Request creation and submission
Stream configurations
Performance
Camera HAL3 buffer management APIs
Session parameters
Single producer, multiple consumer
Camera features
10-bit camera output
Camera bokeh
Concurrent camera streaming
Camera extensions
Camera extensions validation tool
Camera preview stabilization
External USB cameras
High dynamic range modes
HEIF imaging
Monochrome cameras
Motion tracking
Multi-camera support
System cameras
Torch strength control
Ultra HDR
Use a device as a webcam
Wide gamut capture
Versioning
Camera version support
Connectivity
Overview
Bluetooth
Overview
Bluetooth services
Bluetooth Low Energy
Hearing aid audio support using BLE
BLE advertising
Verify and debug
HCI requirements
Presence calibration
Android OS identification
NFC
Host card emulation of FeliCa
NFC off-host payment synchronization
Secure NFC
Quick Access Wallet
Android proprietary NCI commands
Calling and messaging
5G non-standalone (NSA)
Implement phone number blocking
Call notifications
Domain selection service
Implement Emergency Affordance
Android emergency number database
Emergency numbers and emergency calling
Implement IMS
IMS service entitlement
IMS single registration
Phone account suggestion
Implement RTT
Support third-party calling apps
Visual voicemail
Carrier
Overview
5G network slicing
APN and CarrierConfig
Carrier identification
Implement data plans
Device identifiers
eSIM
Implement eSIM
Modem requirements for eSIM support
eUICC APIs
Multiple enabled profiles
Handle eUICC API errors
Downloadable test profiles
eSIM transfer carrier integration
Improve VPN user experience
Multi-operator network support
Customize device behavior for out-of-balance users
RIL refactoring
Small cell support
UICC carrier privileges
Time
Overview
Location time zone detection
Telephony time zone detection
Network time detection
GNSS time detection
External time detection
Time source priority
Time zone policy and recommendations
Time zone rules
Ultra-wideband
Overview
UWB HAL interface
Wi-Fi
Overview
Wi-Fi HAL
Wi-Fi infrastructure features
Test, debug, and tune Wi-Fi
Android Packet Filter
Carrier Wi-Fi
MAC randomization behavior
Implement MAC randomization
Passpoint (Hotspot 2.0)
Wi-Fi STA/AP concurrency
Wi-Fi STA/STA concurrency
Trust on First Use (TOFU)
Wi-Fi Aware
Wi-Fi/cellular coex channel avoidance
Wi-Fi Direct
Wi-Fi Easy Connect
Wi-Fi hotspot (Soft AP)
Wi-Fi AP/AP concurrency
Wi-Fi low-latency mode
Wi-Fi network selection
Wi-Fi preferred network offload scanning
Wi-Fi Round Trip Time (RTT)
WPA3 and Wi-Fi Enhanced Open
Wi-Fi 7
Companion device profiles
Connectivity Diagnostics API
Connectivity user interface
Network selection
Ranging: Out-of-band message sequence and payload specification
Signal strength reporting
Data
Overview
Data usage tags explained
Data Saver mode
eBPF traffic monitoring
Exclude network types from usage data
Network interface statistics overview
Tethering data
Tethering hardware offload
Usage cycle reset dates
Kernel overview
Kernel changes
Display
Overview
Apps
Implement adaptive icons
App shortcuts
Implement circular icons
Conversation notifications and widgets
Window blurs
Widgets and shortcuts
Implement synchronized app transitions
Color
Color management
Display cutouts
Do not disturb
HDR video playback
Implement night light
Tone mapping HDR luminance to an SDR-compatible range
Material You design
Dynamic color
Multi-Window
Overview
Desktop windowing features
Split-screen interactions
Picture-in-picture
Window magnification
Multi-Display
Overview
Recommended practices
Testing and development environment
Frequently asked questions
Multi-resume
Activity launch policy
Display support
System decorations support
Lock screen
Input method editor support
Input routing
Multi-zone audio
Notifications
Notification history
Permission for opt-In notifications
Task Manager
Retail demo mode
Rotate suggestions
Implement text classifier
Mixed SDR and HDR composition
Media controls in System UI
WindowManager extensions
Fonts
Implement custom font fallback
Graphics
Overview
Architecture
BufferQueue and Gralloc
Implement DMABUF and GPU memory accounting
Trace window transitions using Winscope
Overview
Run Winscope
Capture traces
Overview
ViewCapture in system apps
On device
Use Winscope
Use adb commands
Load traces
Analyze traces
Overview
Timeline navigation
Trace search
SurfaceFlinger
WindowManager
Protolog
Shell transitions
ViewCapture
Surface and SurfaceHolder
Overview
SurfaceView and GLSurfaceView
SurfaceTexture
TextureView
SurfaceFlinger and WindowManager
Overview
System properties in SurfaceFlinger
Hardware Composer HAL
Overview
Implement HWC HAL
Hotplug handling
AIDL for HWC HAL
Client framebuffer management
Reduce graphics memory consumption
Layers and displays
VSync
Frame pacing
Multiple refresh rate
Adaptive refresh rate
EGLSurfaces and OpenGL ES
Overview
Implement OpenGL ES and EGL
OpenGLRenderer configuration
Vulkan
Overview
Implement Vulkan
Synchronization framework
Testing
Implementation testing
Integrate with Android CTS
drawElements Quality Program testing
Unsignaled buffer latching with AutoSingleLayer
Add new pixel formats to Android
HDR in Android screenshots
Interaction
Overview
Input
Overview
Key layout files
Key character map files
Input device configuration files
Migration guide
Keyboard devices
Touch devices
getevent tool
validatekeymaps tool
Haptics
Overview
Implement haptics
Overview
Implement constants and primitives
Map constants between HAL and API
Implement piecewise linear envelope effects
Assess the hardware
UX foundation for haptic framework
Haptics UX design
Hardware assessment
Overview
Set up the testing equipment
Set up the test software
Measure and record target effects