blob: 6c0431c81a5ed7bcd56d270698402d7f85c52fa5 [file] [log] [blame]
<html devsite>
<head>
<title>OTA Updates</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>
Android devices in the field can receive and install over-the-air (OTA)
updates to the system, application 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.
</p>
<p>OTA updates are designed to upgrade the underlying operating system, the
read-only apps installed on the system partition, and/or time zone rules;
these updates do <em>not</em> affect applications installed by the user
from Google Play.
</p>
<h2 id="ab_updates">A/B (Seamless) system updates</h2>
<p>
Modern Android devices have two copies of each partition (A and B) and can
apply an update to the currently unused partition while the system is
running but idle. A/B devices do not need space to download the update
package because they can apply the update as they read it from the
network; this is known as <em>streaming A/B</em>. For more information
about OTA updates for A/B devices, see
<a href="/devices/tech/ota/ab/index.html">A/B (Seamless) System
Updates</a>. For a sample app that provides examples on using Android
system update APIs (i.e., <code>update_engine</code>) to install A/B
updates, refer to
<a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/"
class="external">SystemUpdaterSample</a> (app details available in
<a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/README.md"
class="external"><code>updater_sample/README.md</code></a>).
</p>
<h2 id="nonab_updates">Non-A/B system updates</h2>
<p>
Older Android devices have a dedicated recovery partition containing the
software needed to unpack a downloaded update package and apply the
update to the other partitions. For more information, see
<a href="/devices/tech/ota/nonab/index.html">Non-A/B System Updates</a>.
</p>
<h2 id=time-zone-updates>Time zone rule updates</h2>
<p>
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
<a href="/devices/tech/config/timezone-rules">Time Zone Rules</a>.
</p>
</body>
</html>