We've probably all had this happen at one point or another: it's time for an OS update, and your phone wants to download a ~1GB brick of an update file. On Android, normally this gets downloaded to the user storage partition and flashed to the system partition. But wait—if your phone is full of pictures, or videos, or apps, there may not be enough space to store the update file. In such circumstances, the update fails, and the user is told to "free up some space." According to the latest source.android.com documentation, Google has cooked up a scheme to make sure that an "insufficient space" error will never stop an update again.

Where the heck can Google store the update if your phone is full, though? If you remember in Android 7.0, Google introduced a new feature called " Seamless Updates ." This setup introduced a dual system partition scheme—a "System A" and "System B" partition. The idea is that, when it comes time to install an update, you can normally use your phone on the online "System A" partition while an update is being applied to the offline "System B" partition in the background. Rather than the many minutes of downtime that would normally occur from an update, all that was needed to apply the update was a quick reboot. At that point, the device would just switch from partition A to the newly updated partition B.

When you get that "out of space" error message during an update, you're only "out of space" on the user storage partition, which is just being used as a temporary download spot before the update is applied to the system partition. Starting with Android 8.0, the A/B system partition setup is being upgraded with a "streaming updates" feature. Update data will arrive from the Internet directly to the offline system partition, written block by block, in a ready-to-boot state. Instead of needing ~1GB of free space, Google will be bypassing user storage almost entirely, needing only ~100KB worth of free space for some metadata.

Also rolling out to Play Services?

Streaming updates is a new feature built into Android 8.0, but, oddly, the docs say Google is also backporting the feature to Google Play Services. That will enable this feature on "Android 7.0 and later" devices with a dual system partition setup. To the best of my knowledge, only the Google Pixel has an A/B partition setup, and devices are never "upgraded" to an A/B setup via an update (repartitioning is too scary). So, why backport streaming updates to Play Services when all the Pixels will be running Android 8.0 soon anyway?

My only guess is that maybe Google wants to roll this out to Play Services along with the 8.0 update so Pixel owners won't have to worry about free space when they upgrade to 8.0. I don't see any references to this feature in the current version of Play Services, and filling a Pixel to the max and trying to update it to the 8.0 developer preview didn't work, so I don't think this is live in Play Services yet.

Since streaming updates are attached to the A/B update system, it's an optional system that OEMs can choose to implement or choose to ignore. Android OEMs are infamous for not following Google's best practices, and so far the uptake for the A/B partition system outside of Google's in-house devices has been non-existent. For now, it seems like this is yet another feature that will be exclusive to the Pixels.