<br />

The following table lists all documented features and behavior changes that
might affect app developers. Use this list to find changes that affect you,
and then use the corresponding link to read the documentation.  
Accessibility Camera and media Core functionality Developer productivity and tools Graphics Internationalization Privacy Security User experience Non-SDK interface restrictions Change (all apps) Change (apps targeting 14+) New features and APIs

| Category | Type | Name |
|---|---|---|
| Accessibility | Change (all apps) | [Test your app with non-linear font scaling](https://developer.android.com/about/versions/14/behavior-changes-all#non-linear-font-scaling) Because Android supports font scaling up to 200%, you should perform UI testing to ensure that your app can accommodate larger font sizes without impacting usability. |
| Accessibility | New features and APIs | [Non-linear font scaling to 200%](https://developer.android.com/about/versions/14/features#non-linear-font-scaling) Android supports font scaling up to 200%, providing additional accessibility options, particularly for users with low-vision. |
| Camera and media | New features and APIs | [Ultra HDR for images](https://developer.android.com/about/versions/14/features#ultra-hdr) Android 14 adds support for High Dynamic Range (HDR) images that retain more of the information from the sensor when taking a photo, which enables vibrant colors and greater contrast. |
| Camera and media | New features and APIs | [Zoom, Focus, Postview, and more in camera extensions](https://developer.android.com/about/versions/14/features#camera-extensions) Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. |
| Camera and media | New features and APIs | [In-sensor zoom](https://developer.android.com/about/versions/14/features#in-sensor_zoom) Implement request override controls to give users zoom control even before other camera controls are ready. |
| Camera and media | New features and APIs | [Lossless USB audio](https://developer.android.com/about/versions/14/features#lossless-usb-audio) Android 14 gains support for lossless audio formats for audiophile-level experiences over USB wired headsets. |
| Core functionality | Change (all apps) | [Schedule exact alarms are denied by default](https://developer.android.com/about/versions/14/changes/schedule-exact-alarms) The `SCHEDULE_EXACT_ALARM` permission is no longer being pre-granted to most newly-installed apps targeting Android 13 and higher---the permission is denied by default. |
| Core functionality | Change (all apps) | [Context-registered broadcasts are queued while apps are cached](https://developer.android.com/about/versions/14/behavior-changes-all#pending-broadcasts-queued) The system may place context-registered broadcasts in a queue when these broadcasts are queued for delivery to an app that's in the cached state. |
| Core functionality | Change (all apps) | [Apps can kill only their own background processes](https://developer.android.com/about/versions/14/behavior-changes-all#kill-own-background-processes) When your app calls `killBackgroundProcesses()`, the API can kill only the background processes of your own app. |
| Core functionality | Change (all apps) | [MTU is set to 517 for the first GATT client requesting an MTU](https://developer.android.com/about/versions/14/behavior-changes-all#mtu-set-to-517) The Android Bluetooth stack more strictly adheres to [Version 5.2 of the Bluetooth Core Specification](https://www.bluetooth.com/wp-content/uploads/2020/01/Bluetooth_5.2_Feature_Overview.pdf) and requests the BLE ATT MTU to 517 bytes when the first GATT client requests an MTU using the [`BluetoothGatt#requestMtu(int)`](https://developer.android.com/reference/android/bluetooth/BluetoothGatt#requestMtu(int)) API, and disregards all subsequent MTU requests on that ACL connection. |
| Core functionality | Change (all apps) | [New reason an app can be placed in the restricted standby bucket](https://developer.android.com/about/versions/14/behavior-changes-all#triggers-to-restricted-bucket) Android 14 introduces a new reason an app can be placed into the restricted standby bucket. |
| Core functionality | Change (all apps) | [mlock limited to 64 KB](https://developer.android.com/about/versions/14/behavior-changes-all#mlock) In Android 14 and higher, the platform reduces the maximum memory that can be locked using `mlock()` to 64 KB per process. |
| Core functionality | Change (all apps) | [System enforces cached-app resource usage](https://developer.android.com/about/versions/14/behavior-changes-all#cached-apps) Shortly after an app process enters a cached state, background work is disallowed, until a process component re-enters an active state of the lifecycle. |
| Core functionality | Change (apps targeting 14+) | [Foreground service types are required](https://developer.android.com/about/versions/14/behavior-changes-14#fgs-types) If your app targets Android 14 (API level 34) or higher, it must specify at least one foreground service type for each foreground service within your app. |
| Core functionality | Change (apps targeting 14+) | [Enforcement of BLUETOOTH_CONNECT permission in BluetoothAdapter](https://developer.android.com/about/versions/14/behavior-changes-14#enforce-bluetooth_connect) Android 14 enforces the [`BLUETOOTH_CONNECT`](https://developer.android.com/reference/android/Manifest.permission#BLUETOOTH_CONNECT) permission when calling the BluetoothAdapter [`getProfileConnectionState()`](https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#getProfileConnectionState(int)) method for apps targeting Android 14 (API level 34) or higher. |
| Core functionality | Change (apps targeting 14+) | [OpenJDK 17 updates](https://developer.android.com/about/versions/14/behavior-changes-14#core-libraries) As part of the OpenJDK 17 updates, there are some changes that can affect app compatibility, such as changes to regular expressions and UUID handling. |
| Core functionality | Change (apps targeting 14+) | [JobScheduler reinforces callback and network behavior](https://developer.android.com/about/versions/14/behavior-changes-14#jobscheduler-reinforces-behavior) If your app targets Android 14 (API level 34) or higher and exceeds the granted time on the main thread, the app triggers an ANR with the error message. |
| User experience | Change (apps targeting 14+) | [Tile launch API](https://developer.android.com/about/versions/14/behavior-changes-14#tiles-launch-api) Android 14 deprecates [`TileService#startActivityAndCollapse(Intent)`](https://developer.android.com/reference/android/service/quicksettings/TileService#startActivityAndCollapse(android.content.Intent)) in favor of [`TileService#startActivityAndCollapse(PendingIntent)`](https://developer.android.com/reference/android/service/quicksettings/TileService#startActivityAndCollapse(android.app.PendingIntent)). |
| Developer productivity and tools | New features and APIs | [Credential Manager](https://developer.android.com/about/versions/14/features#credential-manager) Android 14 introduces Credential Manager, which supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API. |
| Developer productivity and tools | New features and APIs | [Health Connect](https://developer.android.com/about/versions/14/features#health-connect) Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. |
| Developer productivity and tools | New features and APIs | [OpenJDK 17 updates](https://developer.android.com/about/versions/14/features#core-libraries) Android 14 includes features and improvements that further align with the OpenJDK 17 LTS release, including both library updates and Java 17 language support for app and platform developers. |
| Developer productivity and tools | New features and APIs | [Improvements for app stores](https://developer.android.com/about/versions/14/features#app-stores) Android 14 introduces several new `PackageInstaller` APIs that allow app stores to improve their user experience. |
| Developer productivity and tools | New features and APIs | [App metadata bundles](https://developer.android.com/about/versions/14/features/app-metadata) Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play. |
| Developer productivity and tools | New features and APIs | [Screenshot detection](https://developer.android.com/about/versions/14/features/screenshot-detection) A privacy-preserving API that invokes a callback and displays a toast message when the user takes a screenshot while an app activity is visible. |
| Graphics | New features and APIs | [Paths are now queryable and interpolatable](https://developer.android.com/about/versions/14/features#paths) Query paths to find out what's inside of them, interpolate between paths whose structures match exactly, and enable morphing effects. |
| Graphics | New features and APIs | [Custom meshes with vertex and fragment shaders](https://developer.android.com/about/versions/14/features#custom-meshes) Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. |
| Graphics | New features and APIs | [Hardware buffer renderer for Canvas](https://developer.android.com/about/versions/14/features#hardware-buffer-renderer) To assist in using Android's `Canvas` API to draw with hardware acceleration into a `HardwareBuffer`, Android 14 introduces `HardwareBufferRenderer`. |
| Internationalization | New features and APIs | [Per-app language preferences](https://developer.android.com/about/versions/14/features#app-languages) Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with some additional capabilities. |
| Internationalization | New features and APIs | [Grammatical Inflection API](https://developer.android.com/about/versions/14/features/grammatical-inflection) The Grammatical Infection API helps you add support for users who speak languages that have grammatical gender, providing a more personalized and natural-sounding user experience for those languages. |
| Internationalization | New features and APIs | [Regional preferences](https://developer.android.com/about/versions/14/features#regional-preferences) Apps can receive notifications when a user changes their regional preferences and mirror these preferences in app. |
| Non-SDK interface restrictions | Change (apps targeting 14+) | [Updates to non-SDK interface restrictions](https://developer.android.com/about/versions/14/changes/non-sdk-14) Android 14 includes updated lists of restricted non-SDK interfaces based on collaboration with Android developers and the latest internal testing. |
| Privacy | Change (apps targeting 14+) | [Partial access to photos and videos](https://developer.android.com/about/versions/14/changes/partial-photo-video-access) The user can grant partial access to their photos and videos when an app requests any visual media permissions that were introduced in Android 13 (API level 33): `READ_MEDIA_IMAGES` and `READ_MEDIA_VIDEO`. |
| Security | Change (all apps) | [Minimum installable target API level](https://developer.android.com/about/versions/14/behavior-changes-all#minimum-target-api-level) Apps with a `targetSdkVersion` lower than `23` can't be installed. |
| Security | Change (all apps) | [Media owner package names might be redacted](https://developer.android.com/about/versions/14/behavior-changes-all#media-owner-package-names) The value of [`OWNER_PACKAGE_NAME`](https://developer.android.com/reference/android/provider/MediaStore.MediaColumns#OWNER_PACKAGE_NAME) is redacted unless apps meet certain conditions. |
| Security | Change (apps targeting 14+) | [Restrictions to implicit and pending intents](https://developer.android.com/about/versions/14/behavior-changes-14#safer-intents) For apps targeting Android 14 (API level 34) or higher, Android restricts apps from sending implicit intents to internal app components. |
| Security | Change (apps targeting 14+) | [Runtime-registered broadcasts receivers must specify export behavior](https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported) Apps and services that target Android 14 (API level 34) or higher and use context-registered receivers are required to specify a flag to indicate whether or not the receiver should be exported to all other apps on the device. |
| Security | Change (apps targeting 14+) | [Safer dynamic code loading](https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading) If your app targets Android 14 (API level 34) or higher and uses Dynamic Code Loading (DCL), all dynamically-loaded files must be marked as read-only. |
| Security | Change (apps targeting 14+) | [Additional restrictions on starting activities from the background](https://developer.android.com/about/versions/14/behavior-changes-14#background-activity-restrictions) Apps that target Android 14 (API level 34) or higher must opt in if they want to grant their background activity launch privileges to another app either when sending that app's `PendingIntent`, or binding that app's service. |
| Security | Change (apps targeting 14+) | [Zip path traversal](https://developer.android.com/about/versions/14/behavior-changes-14#zip-path-traversal) For apps targeting Android 14 (API level 34) or higher, Android prevents the Zip Path Traversal Vulnerability by restricting what zip file entry names can contain. |
| Security | Change (apps targeting 14+) | [User consent required for each MediaProjection capture session](https://developer.android.com/about/versions/14/behavior-changes-14#media-projection-consent) For apps targeting Android 14 (API level 34) or higher, apps must ask the user to give consent before each `MediaProjection` capture session. |
| User experience | Change (all apps) | [Changes to how users experience non-dismissible notifications](https://developer.android.com/about/versions/14/behavior-changes-all#non-dismissable-notifications) If your app shows non-dismissable foreground notifications to users, Android 14 has changed the behavior to allow users to dismiss such notifications. |
| User experience | Change (all apps) | [Data safety information is more visible](https://developer.android.com/about/versions/14/behavior-changes-all#data-safety) Your app's data safety information, such as data-sharing practices, now appears in some permission rationale system dialogs and in system notifications. |
| User experience | Change (apps targeting 14+) | [Secure full-screen Intent notifications](https://developer.android.com/about/versions/14/behavior-changes-14#secure-fsi) For apps targeting Android 14 (API level 34) or higher, only apps that provide calling and alarms are allowed to use the `USE_FULL_SCREEN_INTENT` permission to support full-screen intent notifications. |
| User experience | New features and APIs | [Sharesheet custom actions and improved ranking](https://developer.android.com/about/versions/14/features#sharesheet-improvements) Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users. |
| User experience | New features and APIs | [Support for built-in and custom animations](https://developer.android.com/about/versions/14/features/predictive-back) Apps that use the new system back APIs can opt in to predictive back to automatically receive in-app animations and also support custom transitions. |
| User experience | New features and APIs | [Large screen OEM per-app overrides](https://developer.android.com/about/versions/14/features/manufacturer-per-app-overrides) Manifest properties enable you to disable OEM overrides for your app. |
| User experience | New features and APIs | [Large screen user per-app overrides](https://developer.android.com/about/versions/14/features/user-per-app-overrides) Android 14 QPR1 enables users to apply per-app overrides by means of a new settings menu on large screen devices. Apps can disable some overrides. |

*Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its
affiliates.*