Android 12 Release Notes

This page summarizes the major features in the Android 12 release and provides links to additional information. These feature summaries are organized according to the feature's documentation location on this site.

Architecture

AlwaysOnHotwordDetector class updates

Starting in Android 12, the AlwaysOnHotwordDetector class including its factory method, android.service.voice.VoiceInteractionService.createAlwaysOnHotwordDetector(), is a system API (@SystemApi) instead of a public API. The AlwaysOnHotwordDetector class is intended for use by Assistant apps with system-level privileges, which are commonly bundled with the OS release. In Android 11 and lower, the API is protected by checks that ensure that the caller is the currently active Assistant app, making the API unusable by other third-party apps.

Additionally, Android 12 includes sound trigger feature enhancements to improve the attribution and enforcement of permissions related to microphone usage through the sound trigger API. Microphone usage, including indirect usage such as through the SoundTriggerManager or AlwaysOnHotwordDetector classes, is attributed to the originating package (Assistant app) that calls the AlwaysOnHotwordDetector class. This improves user privacy and transparency on the packages that use the microphone. In Android 11 and lower, microphone usage is attributed to the system user because the originating package doesn't use the sound trigger API directly but through higher-level services residing in the system_server process.

The impact of these changes is as follows:

  • Nonsystem apps using the AlwaysOnHotwordDetector class fail to compile against the Android 12 API because the API was removed from the public surface.
  • Existing system apps using the AlwaysOnHotwordDetector class might be denied from using sound trigger features at runtime. To address this issue and allow these apps to access the microphone through sound trigger, declare the RECORD_AUDIO and CAPTURE_AUDIO_HOTWORD permissions for these apps.

Android Rust language support

Android 12 now supports Rust code usage. A new section added to the Setup documentation provides guidance for developing on Android with Rust.

For more information about Android Rust, various modules, and to see examples (as well as to get IDE setup information), see the new Android Rust section at Android Rust Introduction.

Boot image header

Android 12 adds the use of boot image header version 4, which is the primary boot image for devices supporting the Generic Kernel Image (GKI) architecture. Android 12 also provides a boot_signature for checking the integrity of the kernel and the ramdisk. The check, which is done in VtsSecurityAvbTest, is required for devices using the GKI architecture.

To read more, see the Boot Image Header page.

Changes to implementing bootconfig

The bootconfig feature in Android 12, a mechanism for passing configuration details from the build and bootloader to Android 12, replaces the androidboot.* kernel cmdline options used with Android 11 and lower. This feature provides a way to separate the configuration parameters for Android user-space from those for the kernel.

To read more, visit Implementing Bootconfig.

Custom font fallback

Prior to Android 12, updating device-installed font files in AOSP (in the /system/fonts partition) or the vendor partitions (in the /product/fonts or /system/fonts partitions) required a system update from the OEM. This requirement has a significant impact on emoji compatibility. In Android 12 you can use the FontManager system service to manage installed font files and update device-installed font files without a system update.

For information on this new feature, see Implementing Custom Font Fallback.

DMA-BUF Heaps

In Android 12, GKI 2.0 replaces the ION allocator with DMA-BUF heaps.

Enabling locale filters

Android 12 introduces a feature that you can use to configure default system languages and locale filters for new device types. This enables you to set the filter property value and default language through oem/oem.prop during factory calibration, and to configure restrictions without baking the filter into the system image.

For more information, see Enabling the locale filter.

Flashing vendor ramdisks

Android 12 introduces support for flashing vendor ramdisks through a fastboot command that pulls the full vendor_boot image from a device. The command prompts the host-side fastboot tool to read the vendor boot header, reimage, and flash the new image. This support includes bootloader and fastbootd changes to obtain necessary data, such as partition size and offset.

For more information, see Flashing vendor ramdisks on the Fastboot in Userspace page.

GKI versioning

Starting in Android 12, the Android release part of the KMI version can be extracted from the kernel and injected into the device manifest at build time.

For further details, see GKI Versioning.

MM events-historical memory statistics

Devices that launch on Android 12 can utilize mm_events, a set of memory-related statistics that get captured periodically while a system experiences memory pressure. mm_events is integrated with perfetto tracing mechanisms and adds minimal performance overhead. The statistics collection stays active for a configurable period of time, capturing statistics at regular intervals.

For information on how to utilize mm_events stats, see MM Events - Historical Memory Statistics.

System Alert Window restrictions

To improve the security of the Android Ecosystem, Android 12 has made it harder to acquire the SYSTEM_ALERT_WINDOW permission and allows third-party apps to block overlays from other third-party apps.

Preinstalled apps aren't automatically granted the SYSTEM_ALERT_WINDOW appOp in Android 12. It must be explicitly granted by the user before a preinstalled app can use it. System apps still get the permission by default.

Third-party apps can opt-out of having application overlays drawn over them. This provides a protection mechanism against cloak and dagger -style attacks. This is available to all apps so that security-sensitive apps, such as banking apps, can protect themselves. To use this functionality, an app must declare the HIDE_OVERLAY_WINDOWS permission in their manifest.

HIDE_NON_SYSTEM_OVERLAY_WINDOWS(signature|privileged) is deprecated in favor of HIDE_OVERLAY_WINDOWS.

Vendor boot partitions changes

Android 12 devices using boot image header version 4 have support for multiple vendor ramdisks in the vendor_boot partition. These ramdisk fragments are serially concatenated in the vendor ramdisk section. A vendor ramdisk table describes the layout of the vendor ramdisk section and the metadata of each vendor ramdisk fragment.

Because of the changes to the vendor boot partitions in Android 12 and higher, you can't use default as a vendor ramdisk fragment name; it’s designated as reserved. Using it to name vendor ramdisk fragments isn't allowed under any circumstances.

To learn more, see Vendor Boot Partitions and Multiple vendor ramdisks.

Audio

Combined audio device routing

The combined audio device routing feature adds support for streaming audio to multiple audio devices simultaneously. Using this feature, privileged apps can select multiple preferred devices for a particular strategy by way of system APIs. Apps can discover capabilities of audio devices more precisely by using the public APIs provided by this feature.

For more information, see the Combined Audio Device Routing page.

Updates to Audio HAL V7

In order to address backward compatibility issues, Stable AIDL will be mandatory for all HAL changes starting Android T. To prepare for and enhance this future AIDL adoption, significant changes are made to version 7 of the Audio HAL in Android 12.

For more information, see Updates to the Audio HAL V7 section and the audio policy example.

Camera

CameraX vendor extension support requirement

In Android 12, devices supporting CameraX extensions must have the ro.camerax.extensions.enabled property set to true, which allows for querying whether a device supports extensions.

For more information, see Setting up the vendor library on a device.

Quad bayer camera sensor support

Android 12 introduces platform APIs that let apps take advantage of devices with ultra high-resolution camera sensors, typically with quad or nona bayer patterns that offer flexibility in terms of image quality and low-light performance. The new APIs support the behavior of these sensors taking into account that they might support different stream configurations and combinations when operating in "maximum resolution" mode instead of "default" mode.

To implement camera HAL support for ultra high-resolution camera sensors, device manufacturers must implement changes for the following files:

Compatibility

ADN support requirement for SIM cards

From Android 12, all SIM cards in devices used for CTS testing must have support for storing abbreviated dialing numbers (ADN).

For more details, see Screen and storage.

Camera ITS updates

Android 12 introduces various updates to the Camera Image Test Suite (ITS) including new and updated tests, refactoring to Python 3, and the adoption of the Mobly test framework.

For more information, see Android 12 Camera Image Test Suite Release Notes.

CDD Updates

The Android 12 Compatibility Definition Document iterates upon previous versions with updates for new features and changes to requirements for previously released functionality.

Connectivity

5G network slicing

Android 12 provides support for 5G network slicing, the use of network virtualization to divide single network connections into multiple distinct virtual connections that provide different amounts of resources to different types of traffic. This allows network operators to dedicate a portion of the network to providing specific features for a particular segment of customers.

For more information, see 5G Network Slicing.

Companion Device Manager profiles

Apps that target Android 12 and higher can use companion device profiles when connecting to a watch. Using a profile simplifies the enrollment process by bundling the granting of a device-type-specific set of permissions into one step.

Screenshot of a phone showing a prompt offering to grant
permissions

The bundled permissions are granted to the companion app once the device connects and last only while the device is associated. Deleting the app or removing the association removes the permissions.

For more information, see Companion Device Profiles.

IMS service entitlement (TS.43)

Android 12 includes support for TS.43 Service Entitlement Configuration, a GSMA specification that defines the entitlement verification step for the activation of services including Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), On-Device Service Activation (ODSA) of eSIM companion devices (associated with the requesting device) and data plan information.

For more information, see IMS Service Entitlement.

IMS single registration

Android 12 adds support for a single registration model for providing MMTEL and RCS features. This model allows devices to have all IMS features managed through a single IMS registration provided by the device's ImsService. Compared with a dual registration model, where multiple IMS registrations are managed on one device, single registration reduces traffic on a carrier's network and increases reliability.

For more information, see IMS Single Registraion.

Location time zone detection

Android 12 includes Location Time Zone Detection, an optional automatic time zone detection feature that allows devices to use their location and time zone map data to determine the current time zone.

For more information, see Location Time Zone Detection.

MAC randomization

Android 12 introduces the non-persistent MAC randomization type, which allows Android to re-randomize MAC addresses for certain networks at the start of every connection.

For more information, see MAC Randomization Behavior.

Network selection

Android 12 introduces a new network selection mechanism using the NetworkScore class. Network selection affects how Android fulfills app and system network requests, and influences how the default network for an app is chosen.

For more information, see Network Selection.

Notification CallStyle

Starting in Android 12, we recommend that apps use the new notification style, CallStyle, for incoming and ongoing voice and video calls. This notification style includes action buttons for answering, declining, and hanging up phone calls. It also uses the same person-centric style used by conversations, which is consistent with its behavior of ranking call notifications at the top of the shade.

For apps to use the CallStyle notification style, they must use either a full screen intent or a foreground service (with the associated premission). This style ranks notifications for calls at the top of the shade. For calls in the ongoing state, this style adds a chip to the status bar allowing users to quickly return to the calling app.

For more information, see Call Notifications.

Passpoint updates

Android 12 introduces Passpoint R3 and other Passpoint features such as terms and conditions, venue information URLs, decorated identity prefixes, and deauthentication imminent handling.

For more information about these features, see Passpoint (Hotspot 2.0).

Quick Access Wallet updates

In Android 12 or higher, the Quick Access Wallet feature is available from the shade instead of from the power menu as in Android 11. The Wallet UI now runs in System UI and is located in frameworks/base/packages/SystemUI/src/com/android/systemui/wallet.

For more information, see Quick Access Wallet.

Simplified connectivity user experience

Android 12 provides an optional simplified connectivity experience that helps users better understand their network connections, switch between internet providers, and troubleshoot network connectivity issues.

For more information, see Connectivity User Interface.

Time source priority

Starting in Android 12, the framework prioritizes the Network Time Protocol (NTP) time source over the Network Identity and Time Zone (NITZ) source by default.

For details on how to configure and test the time source priority on your device, see Time Source Priority.

Toggle to disable 2G

To improve security, Android 12 introduces a 2G toggle in Settings that allows users to completely disable 2G cellular connections. Radio 1.6 HAL must be implemented for this feature.

The 2G toggle feature is enabled by default. Carriers can disable the feature at runtime through the CarrierConfig flag KEY_HIDE_ENABLE_2G.

Device manufacturers must ensure that all networks are available during emergency calling.

UICC specifications

In Android 12, to run the CTS carrier API tests, the device needs to use a developer UICC with CTS carrier privileges meeting the requirements specified in the latest version of third-party GSMA TS.48 Test Profile specification.

See Preparing the UICC for more information.

Wi-Fi AP/AP concurrency

Android 12 introduces the Wi-Fi AP/AP concurrency feature, which allows devices to bring up a bridged Dual (AP+AP) tethering hotspot.

For more information, see Wi-Fi AP/AP Concurrency.

Wi-Fi/cellular coex channel avoidance

Android 12 introduces the Wi-Fi/cellular coex channel avoidance feature, which identifies and prevents the use of unsafe Wi-Fi channels when there is interference between cellular channels. This includes interfaces such as STA, SoftAp, Wi-Fi Direct (P2P), Wi-Fi Aware (NAN).

Wi-Fi security protocol enhancements

Android 12 introduces support for WPA3 Hash-to-Element (H2E), WPA2/WPA3-Enterprise transition mode, and Transition Disable indication.

For more information, see WPA3 and Wi-Fi Enhanced Open.

Wi-Fi STA/STA concurrency

Android 12 introduces the Wi-Fi STA/STA concurrency feature, which allows devices to connect to two Wi-Fi networks concurrently.

For more information, see Wi-Fi STA/STA Concurrency.

Devices

Android 12 new automotive features

See Automotive What's New to learn more about these new features:

Display

Block untrusted touches

To preserve system security and for a good user experience, Android 12 adds support for blocking untrusted touch events. This prevents apps from consuming touch events where an overlay obscures the app in an unsafe way.

Conversation Notifications and Widgets

Android 11 added support for customizing the behavior and placement of Conversation Notifications on the Notifications shade by priority and alerting level, allowing Conversations to be marked as Important and conversation specific bubbles to be launched in the Conversation space. Building on these Android 11 features, the Android 12 Conversation Widget feature enables users to add Conversation widgets for important contacts to the home screen, allowing them to easily resume conversations without waiting for a notification.

For more information, see Conversation Notifications and Widgets.

Window Blurs

Public APIs are available in Android 12 for implementing window-blur effects (such as background blur and blur behind). With these APIs, you can blur whatever is behind your own window. You can create windows with blurred backgrounds, creating a frosted glass effect, or show windows with the entire screen behind them blurred, creating a depth of field effect. You can also combine these two.

For more information about this new feature and how to implement it, see the Window Blurs page.

Window magnification

In Android 12, low-vision Users can magnify anything on their display by using the window magnification feature. Window magnification lets Users magnify a selected part of the screen, unlike using a zoom function on an entire screen. The selected window can be dragged throughout the display, which enables them to magnify different parts of the screen as needed.

For more information, see Window Magnifier.

Enterprise

Device Administration updates

Android 12 includes the following device administration updates:

  • Managed profile data segregation updates. On personal devices with a work profile, Android 12 removes access to device hardware identifiers (IMEI, MEID, serial number) and provides a unique, enrollment-specific ID that identifies the work profile enrollment for a specific organization. For details, see Device identifiers.

  • Device provisioning updates. Android 12 includes several changes to device provisioning. For details and a list of changes, see Android 12 updates.

Graphics

Hot plug handling in Composer HAL

Display capabilities (such as display modes and supported HDR types) can change dynamically on devices which have externally connected displays (via HDMI or DisplayPort), such as Android TV set-top-boxes (STB) and over-the-top (OTT) devices. From Android 12 on, changes in the framework support hot plug handling and dynamic display capabilities.

For more information, see Hot plug handling in Composer HAL.

Modular system components

Mainline module updates

Android 12 introduces two new modules.

ART

Android 12 or higher supports ART module, which aims to improve the Android experience by offering users the latest managed runtime optimizations, features, and bug fixes.

Device Scheduling

Android 12 or higher supports Device Scheduling module, which contains logic that detects whether or not the device is in an idle state, and may be rebooted without user disruption.

Media

Compatible media transcoding

Compatible media transcoding allows devices to use modern, storage-efficient media formats for video capture, such as HEVC, while maintaining compatibility with apps. With this feature, device manufacturers can use HEVC instead of AVC by default to improve video quality while reducing storage and bandwidth requirements. For more information, see Compatible Media Transcoding.

Performance

App Hibernation

Android 12 offers the ability to hibernate apps that the user does not use for a few months, similar to permission auto-revocation.

See App Hibernation for more information.

Cgroup Abstraction Layer

The control group (cgroup) abstraction layer in Android 12 introduces new features, such as the ability to define specific cgroup controllers as optional, and to use a new task_profiles command that replaces the deprecated writepid command. This replacement ensures underlying cgroup implementations have no effect on upper layers when migrating tasks in cgroup hierarchies. Android 12 also introduces support for per-API-level task profiles.

For more information, see Cgroup Abstraction Layer.

Permissions

Bluetooth permissions

Android 12 introduces the following Bluetooth permissions, which replace the BLUETOOTH and BLUETOOTH_ADMIN permissions:

These permissions are part of the new NEARBY_DEVICES runtime permission group. This permission group enables use cases such as connecting to a smartwatch without requiring the LOCATION runtime permission.

These new permissions are app compatible and no changes are required for apps running on Android 11 or lower. For legacy apps targeting Android 11 or lower, the platform automatically translates requests for the legacy Bluetooth permissions into requests for the new permissions. When an app upgrades to target Android 12 or higher, the app must request the new Bluetooth permissions explicitly.

For more information on using the permissions, see New Bluetooth permissions in Android 12.

Privacy indicators

Android 12 provides users with transparency by displaying indicators when an app uses a private data source through the cameras and microphone app-op permissions.

App-op tracks both the activity status and the number of individual API calls, and interacts with the microphone and camera indicators in Android 12 to show users when apps have accessed audio and camera data on their devices. When users click the microphone or camera indicators, they see which apps have accessed their data.

This feature is mandatory for all OEMs. For more information, see Privacy Indicators.

Location

Starting in Android 12, users can request that an app gets only approximate accuracy when it access location information.

This change is designed to affect apps only when they target Android 12 or higher. However, on devices that have an older version of the PermissionController module, this change affects all apps, regardless of target SDK version.

Runtime

Dexpreopt and <uses-library> checks

Android 12 has build system changes to ahead-of-time (AOT) compilation of DEX files (dexpreopt) for Java modules that have <uses-library> dependencies. In some cases these build system changes can break builds.

For information on how to prepare for breakages and recipes for fixing and mitigating them, see Dexpreopt and <uses-library> Checks.

Tests

Compatibility Test Suite (CTS)

For Android 12, many new key modules and test changes are introduced for CTS. See CTS Release Notes for more information.

TV

HDMI-CEC control service

Android 12 uses HDMI-CEC to automatically control HDMI-connected displays when a device wakes up or goes to sleep.

For further details, see HDMI-CEC Control Service.

Tuner framework

In Android 12:

  • The frontend with Tuner HAL 1.1 or higher supports the DTMB DTV standard. The following frontend capabilities and settings are supported:

    • DtmbFrontendCapabilities

    • DtmbFrontendSettings

  • The Tuner SDK API supports new features in Tuner HAL 1.1, which is a backward-compatible version upgrade of Tuner 1.0.

  • android.media.tv.tuner.TunerVersionChecker.getTunerVersion() checks the running HAL version.

Updates

APEX compression

After an update to an Android Pony EXpress container (APEX) is installed, its pre-installed version isn't used anymore, but occupies the same amount of memory space. That occupied space remains unavailable. In Android 12, APEX compression minimizes this storage impact by using a highly compressed set of APEX files on read-only partitions (such as the /system partition). To read about APEX compression in Android 12, see Compressed APEXes.

Resume-on-Reboot security and convenience

Android 12 introduces enhanced multi-client support and server-based reboot functionality. The resume-on-reboot (RoR) process provides added security and convenience to users because OTA updates can be made during device idle times, while Android 12 multi-client and server-based update functionalities together provide device hardware-level type security.

For more information, see Resume-on-Reboot.

SIM PIN Replay with RoR

Android 12 features SIM-PIN replay for seamless PIN code verification after an RoR-initiated reboot.The SIM PIN is re-encrypted and stored each time a user successfully enables, verifies, or modifies it.

For more information, see SIM-PIN replay.

Virtual A/B Updates

Android 12 offers the option of Virtual A/B compression on snapshotted partitions. In Android 12, updateable partitions that the bootloader doesn't use can be snapshotted to save space. These can also be compressed. Enabling snapshot compression in your build for Android 12 saves space on the /data partition.

Implementing Virtual A/B with snapshots compression requires changes to device- specific code. See the changes and implementation details on the Virtual A/B Overview and Implementing Virtual A/B pages.