Google’s new Incremental File System may let you play big Android games before they’re fully downloaded
Feature could launch in 2021 with Android 12
Mobile gaming is a huge market, with its total revenue accounting for nearly half of the global games market in 2019, according to market research company Newzoo. The Play Store is flooded with new games to try each week, which can be difficult to keep up with if you have limited time to play. Google is working on a new file system for a future version of Android, possibly Android 12 in 2021, which could make it much easier to try out new games. The file system is called Incremental File System, and it’s designed to allow for applications to be executed while its binary and resource files are still being downloaded.
In early May of 2019, Google submitted patches to merge support for the Incremental File System into the Linux kernel. According to the documentation that Google submitted, Incremental FS is a “special-purpose Linux virtual file system that allows execution of a program while its binary and resource files are still being lazily downloaded over the network, USB etc.” The purpose of this feature is “to allow running big Android apps before their binaries and resources are fully downloaded to an Android device.” Right now, if you want to play an Android game that is 5GB in size, you would have to wait for the entire download to finish before you can launch the game. Google says that Incremental FS can “frictionlessly wait for [temporarily] missing data,” which means that you’ll be able to launch the game as it continues to download more and more of the full game. In the case of our hypothetical 5GB Android game, let us say that the game’s intro is 200MB in size located at a 1GB offset. With Incremental File System, the game’s first MB of data can be downloaded, and while it’s being executed, the process can call for the first MB of data at the 1GB offset to be downloaded next, allowing the intro to start. Then, the rest of the 200MB of intro data can be downloaded, which would hopefully happen faster than the intro is played back, and then the game’s main menu can be loaded. There might be a small freeze in execution when the next set of data needs to be loaded, ie. the menu located at the 150MB offset, but this would allow the user to get into the game faster than waiting for the entire download to finish.
After submitting the patches to the Linux kernel, Google engaged in discussions with multiple Linux kernel maintainers regarding the implementation and purpose of the FS. Some criticized Google for creating a custom kernel filesystem rather than extending the existing FUSE, or Filesystem in Userspace. Google stated that FUSE-based filesystems add significant performance overhead for its target scenarios, increasing power usage to the point where phones spent energy faster than they were charging over a cord. This was problematic because a Googler said “the project goal was to allow instant (-ish) deployment of apps from the dev environment to Android [phones].” Based on this comment, we assumed that Google was only intending for this feature to aid developers in testing incremental builds of their mobile games. That might still be the case, however, several months after the last comment was made on the initial Linux kernel patches, Google started to merge commits related to the Incremental File System to the Android Open Source Project (AOSP). The commits introduce huge changes to many parts of Android and Android’s Linux kernel, so we believe it’s possible that Google is planning to use the Incremental File System to improve the general user experience. Perhaps Google wants to allow users to start playing large Android games without having to fully download them—essentially serving as a native Instant Apps replacement that doesn’t require any extra work from developers since the implementation is in-kernel.
Currently, Google is testing the feature on a Pixel 4 XL (coral), and they’ve also built a kernel module for use with a Generic Kernel Image (GKI). In several comments, Googlers explain that Android devices with this feature will have a new /data/incremental directory that contains sub-directories for each app on the device. The sub-directories will contain APKs, native libraries, and OBB files. In these sub-directories, the Incremental File System will be mounted, and each will be bind-mounted to point to the original installation directories, ie. /data/app/. The Google Play Store will be able to check the file signature of applications installed on the Incremental FS, which will likely prevent the execution of incremental applications with different signatures than the currently installed applications.
Given that work on this feature is still ongoing and the internal deadline for major Android 11 feature changes is likely fast approaching, if not already passed, we suspect that devices won’t start shipping with support for the Incremental File System until Android 12 in 2021. We will continue tracking the development of this feature and will update you if we learn more about how it works, of course.