Migrating from one Android phone to another, especially when switching to a new brand, is...not very easy, to put it bluntly. The situation has improved in recent years, with more and more apps and settings supporting seamless migration, but the whole process still needs a fair few steps and quite some time out of your day, especially since most of your older apps get installed one-by-one and then require user intervention for a manual sign-in. While Google is working on making it easier to sign into apps on new devices, they're also working behind-the-scenes to speed up the bulk restore process through the new "install hints" feature, which aims to help get your most important apps up and running as quickly as possible on a new device.

As initially spotted by XDA Recognized Developer luca020400, Google engineers have described the "install hints" feature as a way for app stores, like the Google Play Store, to decide which compiler filter to use for dex2oat when bulk installing new applications, such as during a setup or restore process.

Here are the relevant commits:

This CL adds an "install scenario" field to several data structures used by the Package Manager. This value will be used by a following CL to adjust the invocation of dexopt based on the indicated use case.

Dex2oat is a compiler that takes an APK file and generates compilation artifacts that the Android Runtime (ART) loads upon installation, helping speed up app loading times. Dexopt is a program that optimizes dex files upon installation.

Based on these commits, it seems that Install Hints will allow for four different compiler filters to be passed during app installation: DEFAULT, FAST, BULK_CRITICAL, and BULK_NON_CRITICAL. We presume that, during a phone restore process, an app store can send the "BULK_CRITICAL" flag to dex2oat so that certain critical apps can be installed more quickly, at the cost of optimization (which can presumably happen the next time the app is updated).

Based on your history of app installation and usage, it wouldn't be difficult for a pre-installed app store to determine which apps you use most frequently. And based on what device you have, an app store would have a predetermined set of apps that it knows are critically needed for functionality, like Google Play Services and other OEM software services. Thus, these apps can be prioritized during a bulk installation process, at the cost of the first-run optimization.

How would this change impact you as a user, you might ask? Well, the commits haven't actually been merged yet, so our analysis is based on the information we can see in the commits at the moment (and our analysis could change when the commits are finally merged). As a user installing a bevy of apps on a new phone, the app store will be able to prioritize the apps that it knows that you have used a lot on your last-used device. So if you use WhatsApp Messenger a lot, for example, the app store will pass the flag to the compiler to let it be installed more quickly, so you can get started with signing into the apps that are more useful for you. On the other hand, for apps that you use less often, these can be installed and optimized as normal. We don't know how much time this will save a user — this very likely depends on how many apps are deemed critical and how many apps are being restored in the first place — but it could shave off minutes on older or slower phones downloading hundreds of apps.

As mentioned, the commits have not been merged yet, so we do not know when these changes will make their way to Android, or if there will be further changes to the code. If these commits are merged within the next few months, then we will see this feature become available for app stores in Android 12.


Icons made by Freepik from www.flaticon.com