Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
OTA updates
Stay organized with collections
Save and categorize content based on your preferences.
Android devices in the field can receive and install over-the-air (OTA) updates to the system,
app software, and time zone rules. This section describes the structure of update packages and
the tools provided to build them. It is intended for developers who want to make OTA updates
work on new Android devices and those who want to build update packages for released devices.
OTA updates are designed to upgrade the underlying operating system, the read-only apps
installed on the system partition, and time zone rules; these updates do not affect
apps installed by the user from Google Play.
Virtual A/B (seamless) system updates
Modern Android devices (Android 11 and after) maintain two copies of each partition (A and B) during an update. This
update mechanism is called Virtual A/B with compression. While legacy A/B updates (Android 10 and earlier) kept two
copies for every single partition, Virtual A/B only keeps two physical slots for boot critical
partitions. The unused slot is written to directly for bootcritical partitions. Dynamic
partitions have new operating system data written as compressed snapshots since their image
size tends to be much larger. Compressed snapshots allows a device to simulate the experience
of having two slots, while reducing space requirements. For more information about Virtual A/B
OTA updates, see
Virtual A/B (seamless) system updates. For
a sample app that provides examples on using Android system update APIs (that is,
update_engine
) to install A/B updates, refer to
SystemUpdaterSample
(app details available in
updater_sample/README.md
).
Legacy A/B updates and Non-A/B system updates
Legacy A/B updates were the first version of A/B updates in Android. This update mechanism
kept two slots of every single partition, but had the drawback of needing twice the storage
for each partition. For more information see,
A/B system updates. As of
Android 15, non A/B updates are deprecated. For more information, see
Non-A/B system updates.
Time zone rule updates
As of Android 8.1, OEMs can push updated time zone rules data to devices without requiring a
system update. This mechanism enables users to receive timely updates (thus extending the
useful lifetime of an Android device) and OEMs to test time zone updates independently of
system image updates. For details, see
Time zone rules.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# OTA updates\n\nAndroid devices in the field can receive and install over-the-air (OTA) updates to the system,\napp software, and time zone rules. This section describes the structure of update packages and\nthe tools provided to build them. It is intended for developers who want to make OTA updates\nwork on new Android devices and those who want to build update packages for released devices.\n\n\nOTA updates are designed to upgrade the underlying operating system, the read-only apps\ninstalled on the system partition, and time zone rules; these updates do *not* affect\napps installed by the user from Google Play.\n\nVirtual A/B (seamless) system updates\n-------------------------------------\n\n\nModern Android devices (Android 11 and after) maintain two copies of each partition (A and B) during an update. This\nupdate mechanism is called Virtual A/B with compression. While legacy A/B updates (Android 10 and earlier) kept two\ncopies for every single partition, Virtual A/B only keeps two physical slots for boot critical\npartitions. The unused slot is written to directly for bootcritical partitions. Dynamic\npartitions have new operating system data written as compressed snapshots since their image\nsize tends to be much larger. Compressed snapshots allows a device to simulate the experience\nof having two slots, while reducing space requirements. For more information about Virtual A/B\nOTA updates, see\n[Virtual A/B (seamless) system updates](/docs/core/ota/virtual_ab). For\na sample app that provides examples on using Android system update APIs (that is,\n`update_engine`) to install A/B updates, refer to\n[SystemUpdaterSample](https://android.googlesource.com/platform/bootable/recovery/+/android16-release/updater_sample/)\n(app details available in\n[`updater_sample/README.md`](https://android.googlesource.com/platform/bootable/recovery/+/android16-release/updater_sample/README.md)).\n\nLegacy A/B updates and Non-A/B system updates\n---------------------------------------------\n\n\nLegacy A/B updates were the first version of A/B updates in Android. This update mechanism\nkept two slots of every single partition, but had the drawback of needing twice the storage\nfor each partition. For more information see,\n[A/B system updates](/docs/core/ota/ab). As of\nAndroid 15, non A/B updates are deprecated. For more information, see\n[Non-A/B system updates](/docs/core/ota/nonab).\n\nTime zone rule updates\n----------------------\n\n\nAs of Android 8.1, OEMs can push updated time zone rules data to devices without requiring a\nsystem update. This mechanism enables users to receive timely updates (thus extending the\nuseful lifetime of an Android device) and OEMs to test time zone updates independently of\nsystem image updates. For details, see\n[Time zone rules](/docs/core/permissions/timezone-rules)."]]