This page summarizes the major features in the Android 17 release and provides links to additional information. These feature summaries are organized by the feature's documentation location on this site.
Architecture
ION deprecation
The ION memory allocator is no longer supported on any Android version, because all kernels supporting ION reached end of life in December 2025. All vendor code attempting to use ION should fail. Remove all vendor code that uses ION.
Audio
Audio Managed SCO rearchitecture
If devices adopt Audio Managed synchronous connection-oriented (SCO) rearchitecture in Android 17 and higher, the Android audio framework uses the SCO management feature to manage SCO routing. Previously, the Bluetooth (BT) framework handled this routing. For more information, see Audio managed SCO rearchitecture.
Automotive
Advanced windowing with Scalable UI
In Android 17 and higher, use Scalable UI to build sophisticated, dynamic, and
multi-panel user experiences in cars. Add WindowManager invariants, configure
a setup wizard, and customize system and navigation bars. For more information,
see Advanced windowing with Scalable UI.
Software defined vehicle
In Android 17 and higher, you can use the software-defined vehicle (SDV). SDV uses software to play a critical role in the building, controlling, managing, and enhancement of vehicle operations. SDV transforms vehicles into connected, adaptable platforms that can evolve through software updates. For more information, see Software defined vehicle.
Compatibility
Test audio multi-channel input and output
Android 17 introduces CTS Verifier tests for audio multi-channel input and output. For information about running these tests, see Test audio multi-channel input and multi-channel output.
Run CTS-V tests
Android 17 requires an additional CTS-V setup step to grant the default browser role. For information on this step, see Run CTS-V tests.
Run ranging accuracy, telecom, and host-side interactive tests
Android 17 includes CTS-V interactive tests that are semi-automated tests, requiring you to perform some manual steps on the device under test (DUT).
In addition to the interactive tests, we converted manual ranging accuracy and telecom tests to multidevice tests. Wi-Fi connection tests are required. For information on setting up and running these tests, see Run host-side tests.
Run USB host-side interactive tests
Android 17 includes USB CTS-V host-side tests that require adb over Wi-Fi to
run. For information on setting up and running these tests, see Run USB
host-side tests.
Run media tests
Android 17 includes CTS-V media playback tests. For more information, see Run CTS Verifier media playback tests.
Run audio workload test
Android 17 includes the CTS-V audio workload test. For more information about running this test, see Run CTS Verifier Audio workload test.
Audio test updates
Android 17 introduces the following audio test updates:
- Adds USB-C to 3.5 mm audio adapters to the list of USB audio adapter
recommendations. For more information, see USB audio adapter
recommendations.
- Google (vendor ID: 0x18D1, product ID: 0x5025)
- Xumee (vendor ID: 0x3302, product ID: 0x56C5)
- Removes HDMI requirements from CTS Verifier Pro Audio test. For more information, see CTS Verifier Pro Audio test.
Camera ITS updates
Android 17 introduces updates to the Camera Image Test Suite (ITS). For more information, see:
Compatibility Definition Document (CDD)
The Android 17 Compatibility Definition Document (CDD) is released with Android 17 updates.
Connectivity
Autorouting OTT calls to premium network connections
Android 17 supports autorouting of over-the-top (OTT) voice and video calls to premium network connections. This feature lets the system automatically steer traffic from voice and video calls to a dedicated premium network interface, such as a premium 5G slice or a premium 4G PDN connection, without requiring changes to an app's networking stack. For more information, see 5G slicing auto-routing for OTT voice and video.
Ranging: Out-of-band specification updates
Android 17 introduces version 2 and version 3 of the out-of-band (OOB) specification.
Version 2 includes the following changes:
- Technology transitioning: Allows dynamic switching between ranging technologies during an active session without interrupting the data stream.
- Ranging Capability Response message payload: Includes a Supported technology transitioning field to indicate support for make-before-break technology transitions.
Version 3 includes the following changes:
- Motion Notification message payload: A data element (DE) that the advertiser device uses to notify the initiating device of a motion change.
- Ranging Configuration message payload: Includes a Motion support field to let the initiator signal the responder that it wishes to be notified of any changes in the peripheral movement from the responder.
Display
Desktop windowing
In Android 17 and higher, you can enable per-display desktop windowing. For more information, see Desktop windowing, System decorations support, and Recommended practices.
Large screen app compatibility
Android 17 introduces
config_isCameraCompatSimulateRequestedOrientationTreatmentEnabled,
config_isCameraCompatSimReqOrientationLandscapeTreatmentEnabled, and
config_enableSelfKillRecoveryBetweenInternalDisplays settings for large screen
app compatibility overlays. For more information, see Large screen app
compatibility setup guide.
Media
VVC support
Android 17 supports a video encoding standard, Versatile Video Coding (VVC), for decoding scenarios. The Android platform provides framework and parser support, but to enable VVC decoding, the SoC vendor or OEM must supply a decoder, either software or hardware, and the OEM must ensure it is enabled and properly registered with the Android media subsystem. For more information, see VVC support.
Performance
Gather general health information
To improve system health diagnostics with trade-in mode, Android 17 adds camera geometry and UICC slot information. For an example of these fields, see Obtain system health information.
Memory Limiter
The Memory Limiter is a system service that monitors and limits the memory usage of application processes using Linux cgroup v2. The Memory Limiter prevents individual apps from consuming excessive system memory, which reduces system-wide memory pressure and prevents aggressive out-of-memory (OOM) killing of critical processes. For more information, see Memory Limiter.
Memory management daemon
Android 17 and higher supports memory management daemon (mmd), a system
daemon, which is responsible for configuring and managing ZRAM-related
maintenance tasks. For more information see
Memory management daemon.
Process memory guardian daemon
The process memory guardian daemon (PMGD) protects system health and the user experience by proactively managing memory usage on a per-process basis. The daemon improves overall device stability by gracefully enforcing memory ceilings on specific target processes, verifying that isolated memory leaks or spikes don't cause system-wide performance degradation. For more information, see Process memory guardian daemon.
Permissions
Contact Picker
The Android Contact Picker lets app developers retrieve user-selected contact details without requiring full contact permissions. This approach aligns with Android's commitment to data transparency and minimized permission footprints.
Key features of the Contact Picker include:
- Privacy-first sharing: Grants apps read access only to selected data.
- Standardized UI: Provides a consistent user experience with built-in search, profile switching, and multi-selection.
- Backward compatibility: Automatically takes over legacy
Intent.ACTION_PICKrequests for apps targeting Android 17 and higher.
For more information see, Android Contact Picker.
Location indicators
Android 17 introduces real-time location indicators to the status bar, expanding the privacy transparency already available for camera and microphone usage. When a nonsystem app accesses device location in the foreground, a dedicated icon appears and transitions into a persistent dot, letting users tap and see which apps are tracking their data. For more information see, Privacy Indicators.
Security
Hardware-wrapped key improvements
Android 17 and higher simplifies the implementation of the existing hardware-wrapped keys storage encryption feature.
The simplified implementation generates, imports, and prepares hardware-wrapped inline encryption keys using Linux kernel ioctls instead of KeyMint. The Linux kernel communicates with the key wrapping hardware to perform these operations.
This simplifies the design by removing the unnecessary involvement of KeyMint in these operations. It also achieves compatibility with the upstream Linux kernel.
Implementers of hardware-wrapped keys must add support for the new Linux kernel ioctls.
After that, use wrappedkey instead of wrappedkey_v0 in
the fstab to enable the new implementation. This includes an on-disk format
change, so this is applicable only to newly launching devices. Devices already
using wrappedkey_v0 must continue using wrappedkey_v0.
KeyMint implementations used only on devices launching with Android 17
and higher don't need to support
TAG_STORAGE_KEY or convertStorageKeyToEphemeral. Their
functionality has been superseded by Linux kernel ioctls. KeyMint remains used
for other purposes.
For more information, see Hardware-wrapped keys.
Lock screen rate-limiting UX
Android 17 and higher uses stronger default lock screen rate-limiting than lower versions. Users can experience long lock screen timeouts in rare cases, so Android 17 and higher provides the following enhanced user feedback on the lock screen:
- Improved time formatting: The lock screen displays timeouts lasting 1 minute or longer using larger time units for better readability, such as Try again in 30 minutes instead of Try again in 1800 seconds.
- Recovery shortlink: The lock screen shows a shortlink (defaulting to
g.co/android/unlock) to help users find recovery options on
another device. This link is configurable through the
config_lockscreenLockoutShortlinkresource. - Duplicate attempt feedback: On devices with a Weaver implementation, the system displays a unique message when a duplicate incorrect guess is entered. This specific feedback is unavailable on Gatekeeper-only devices because they don't provide separate response codes for incorrect guesses and other verification failures.
- Consistent credential entry management: The lock screen disables the PIN entry pad if the device uses a PIN credential, similar to password and pattern credential entry.
The LockPatternUtils#getLockoutAttemptDeadline(int) method is renamed to
LockPatternUtils#getLockoutEndTime(int) and provides the lockout end time from
a system-managed cache. This update resolves an issue where they were cached
only per LockPatternUtils instance, erroneously showing no active timeout if
one was triggered using another instance. Developers of system credential
prompts such as the lock screen and settings activities must update them to
verify existing timeouts before allowing further attempts.
For more information, see Rate-limiting.
Policy compatibility
In Android 17 and higher, devices launching with the properties described in
Policy compatibility must enable the memfd_class
policy capability and
update their policy related to shared memory to support memfd_file class
objects.
Secure element prewarming
In Android 17 and higher, the Weaver HAL interface includes a method to prewarm the secure element. When a Weaver HAL supporting this method is present, Android calls the prewarming method when the lock screen PIN, pattern, or password starts being entered. This method can decrease the latency of verifying the lock screen PIN, pattern, or password by up to 200 milliseconds, depending on the secure element and its power management implementation.
Weaver HAL implementers can support this method when it improves performance.
For more information, see IWeaver#warmUp().
Setup
Troubleshoot build errors
In Android 17 and higher, the AOSP source tree is read-only. If a build you're running attempts to modify the source tree during product config, or any other part of the build, the build fails and reports read-only file system errors.
To resolve this issue, set the source tree to read-write. For more information, see Troubleshoot build errors.