Dragging Samsung, kicking and screaming, into the future —
Dual system partitions significantly cut down on update downtime.
Google is putting new rules in place for Android 11: it’s going to make support for Android’s “seamless update” feature mandatory for devices launching with the new OS. The news comes to us via an Android source code commit first spotted by XDA Developers, which reads, “Require Virtual A/B on R launches.” In English, this means the seamless update system, which requires two partitions (labeled “A” and “B”), will be required on Android R, aka Android 11.
Android’s seamless update system was introduced in Android 7.0 Nougat (it was actually borrowed from Chrome OS) as a way to reduce the downtime caused by OS updates and to offer a recovery mechanism in case an update applies incorrectly. Applying an update to an operating system usually means taking the OS offline for an extended period of downtime. On Android, before seamless updates, the phone would boot into recovery and could be stuck on the “Installing System Update” screen for as much as 25 minutes. That’s a lot of downtime, and during this time you can’t run any apps, see any text messages, or get any phone calls. The downtime happens because updating the system files requires taking the system partition offline, but the seamless update system fixes this by just having a second copy of the system partition.
As referenced in the commit, the two system partitions are called “A” and “B.” Normally they are exact copies of each other. One of the system partitions is online and being used for the phone operating system, and the other one is offline, just sitting there. When it comes time to apply an update, the update is applied to the offline partition first. So if you’re running on system partition A, then it’s system partition B that gets updated. This happens, well, seamlessly, in the background, and while system partition B is having files updated, you can still do all the normal phone stuff on system partition A. Instead of having to stare at a phone locked to an “Installing System Update” screen for 25 minutes, the phone only has an “installing system update” notification that you can ignore.
Because you have two system partitions, the phone never has an extended period of downtime. Once the update on the offline partition is completed, the phone asks for a reboot, and at that time it will swap active partitions. So if you were running on partition A and partition B got updated, the phone will swap to running on the freshly updated B partition, and A will be updated at a later time, usually when the phone is idle and on a charger.
The other benefit to seamless updates is that if something goes wrong during an update and a partition becomes unbootable, it still has the other partition as a backup. Android is smart enough to set a flag when it swaps to a new partition for the first boot, and if that boot doesn’t complete, it can swap back and boot into the older version of the OS. From there it can contact update servers again, download the OS files again, and try to re-apply the update. Without seamless updates, a failed OS update would turn your phone into a brick, and recovering it would require a PC and special software, but the seamless update system can seamlessly recover, too.
Many OEMs have already adopted seamless updates voluntarily, like Google, OnePlus, Nokia, LG, Motorola, HTC, Sony, and Asus. The biggest holdout is Samsung—why is it always Samsung?—which still requires its phones to go offline for an extended period. It’s easy to make the “Well, Samsung phones never get updates anyway” joke, but they do still get monthly security updates, so this required downtime is still happening every month. Making this feature mandatory for Android 11 will mean Samsung will finally be forced to adopt it, along with any other stragglers, usually OEMs in China.
Seamless updates do have some downsides, namely that two system partitions use more storage space than one system partition. As part of the A/B partition push, Google did a lot of work to slim down what a system partition looks like and actually cut the size in half before it needed to be doubled, so the year-over-year change was not that high. Google has a big FAQ on the A/B partition system and has detailed storage numbers for the 2016 Pixel 1, which is when this first shipped, saying, “For the Pixel A/B and non-A/B variants tested internally (only A/B shipped), the space used differed by only 320MiB. On a 32GiB device, this is just under 1%. For a 16GiB device this would be less than 2%, and for an 8GiB device almost 4% (assuming all three devices had the same system image).”
In the FAQ, Google recommends using the A/B partitions on every storage configuration down to 8GB, which covers even the lowest-end smartphones. Some of Google’s requirements, like mandatory encryption support, have shipped with exceptions for low-end devices in the past, so it’s possible this won’t apply to cheaper phones. To know for sure, we’d need to see the Android Compatibility Definition Document for Android 11, which isn’t published yet.