Installing an app from the Play Store is an almost magically streamlined experience: You find the app you want, tap “Install,” and sit back while Google takes care of the rest. But behind the scenes there's some clever business going on to make sure that your phone gets the particular version of an app that's best suited for it. That process is now getting even more complicated as Google introduces something called the Android App Bundle and a process known as Dynamic Delivery. Let's take a look at what's changing, and how this is going to affect you.
There are a ton of different Android devices out there right now, with varying capabilities. Some are still running older Android releases, some have higher-res or larger screens than others, and they can be built around processors with different architectures. But even with those many variables at play, you don't need to go hunting around for a certain version of an app tailored to your specific phone. This is largely thanks to Play Store support for multiple APKs.
With multiple APKs, a developer builds their app for the different combinations of these device variables, then hands all those APKs over to Google. When you go to install an app, the Play Store selects the correct APK for your handset. Going this route, the process is utterly transparent, but if you're a sideloading fan and have spent some time on our sister site APKMirror, you're familiar with how many different APK options this system can lead to.
The current state of multiple APKs — and this is just a taste.
Moving forward, though, Google's got a different idea for handling this task of making sure devices get the proper apps for their particular hardware and software configuration, while also factoring in considerations like language support, and aiming to keep app sizes as compact as possible. This entails a new app packaging format for developers, as well as a new system of serving apps to users through the Play Store.
Google shared these new systems with devs a few weeks back, detailing their inner workings during sessions at I/O 2018. We've also been spending some time wrapping our heads around the impact all these changes stand to have, and now we're finally ready to start telling you all about it.
Instead of going through the effort of compiling APKs for a mountain of different device options, Android App Bundles let developers hand over all their software assets to Google in one go. Then Google uses Dynamic Delivery with the Play Store to sort through that bundle and make sure your phone gets the right pieces for your needs.
For most of us, that's going to take place with the help of split APKs. Rather than the Play Store sending out one big APK that contains everything your phone needs, Dynamic Delivery will instead churn through that bundle data and generate smaller APKs that are targeted for your device.
The most important one there is the base APK, which will be the same for everyone and contains the core app structure. In addition to the base, the Play Store will also serve up a number of configuration APKs. These contain things like graphical resources for different screen types, code for different kinds of processors, and various language packs. But while all of these are sent to your phone as discrete pieces, they act in concert and will appear in your launcher as one single app.
If your usage needs change, the Play Store will make sure your installed apps stay relevant by serving out the particular configuration APKs that correspond to those changes. That could involve upgrading to a more modern version of Android that supports different features, or changing the language settings on your phone. The Play Store will automatically fetch the new configuration APKs for these changes and seamlessly update your apps — you just change your phone to French, and soon your apps speak French, too.
One slightly controversial bit here is that devs needs to entrust their signing keys to Google in order for it to properly authenticate the split APKs the Play Store generates. Considering they're already placing a lot of trust in Google by selling software through its store, we doubt that's going to stop many devs from participating.
Even with all these changes, you'll still just have to tap a single 'Install' button to get an app.
So far, these changes seem pretty sensible. Bundles give devs an option that could involve less work to publish their apps, and users get to enjoy the same kind of reduced APK file sizes they do with multiple APKs. But this is just the start, and beyond the base APK and its affiliated configuration APKs, apps will soon also be able to include any number of dynamic feature APKs.
Dynamic feature APKs let apps selectively deploy additional capabilities as needed. For instance, maybe your favorite instant messaging app is looking to upgrade from text-only communications to also offer voice messages. All that voice support could be built into a dynamic feature APK that wouldn't be part of the initial install, but that the base APK could request from the Play Store and download later as needed. This kind of thing is currently in beta, but we can expect to see more and more apps start supporting it.
Just like the base APK itself, all these dynamic feature APKs can also have a subset of configuration APKs that go with them. And when you consider that an app might offer multiple dynamic feature APKs, each with their own configuration APKs, we're looking at a situation where a single app could exist on your phone as a dozen or more split APKs.
As we add more features, the number of split APKs spread like wildfire.
This all sounds like a bit of a giant, complicated mess, but there really should be negligible impact on the end user. Apps will remain easy to install from the Play Store, and you can save on bandwidth and storage consumption by not installing specific app features until they're needed.
But then there's sideloading, which Android App Bundles and Dynamic Delivery threaten to turn on its head.
The problems here are manifold. For one, even if you could get your hands on a bundle as a developer would upload it to the Play Store, it can't be installed like an APK. While Google is making the tools used for Dynamic Delivery open source (meaning that third-party app stores like Amazon's can also use it), you can't just copy a bundle over to your phone and tap to install.
And then there's the problem of split APKs. While you can still sideload a base APK, the same isn't true of the configuration and dynamic feature split APKs, which will require interfacing through ADB to send to your phone — and that's bound to scare away users not comfortable with a command line.
Could sideloading APKs soon be a distant memory? Not if we have anything to say about it.
What does this mean for APKMirror? Well, we've been investigating the problem, and are taking a few steps in response to the changing state of Android app distribution. First up, we'll be blocking uploads of split APKs to the site, as they're of limited use and are likely to just fuel user confusion. That situation may change in the future, but it's a step we feel we need to take right now.
For apps that currently roll out via universal APKs (with all resources for all device types packed together in one container), all these bundle problems aren't really going to apply. But as devs who now use multiple APKs begin transitioning to bundles, we have to find another way to acquire files suitable for sideloading.
There's at least one (relatively) straightforward solution to this sideloading issue, though, and that's thanks to legacy support for older Android devices. Split APKs only work with handsets running Android 5.0 or later, so if an older model tries to install an app that was published to the Play Store using a bundle, Google's Dynamic Delivery system will instead compile the relevant pieces of that bundle into a single APK. Effectively, that generates the same sort of files we have now with the multiple APK system, except this is happening on Google's servers, rather than on the developer's computer.
But while that workaround keeps the door open for the sort of easily distributable APKs we know and love, it's only going to be useful so long as apps continue to support increasingly ancient minimum API levels. As such, we're going to keep looking for other ways to gather and share APKs independent of their primary Play Store distribution.
Finally, Google's working on leveraging the features of bundles to let apps published in this manner work like Android Instant Apps. You'll be able to immediately get started with an app just by following a link, with additional content streaming down as needed. That's not quite ready for prime time just yet, and Google tells us that we can expect it to be “coming soon.”