Split APKs

Android
Split APKs are a method of Android app delivery used to optimize the size of the application. This is done by creating smaller, modular APKs, each containing a portion of the app specific to different device configurations Using Split APKs allow end-users to download only the specific resources their device needs, resulting in smaller app size and faster installation times.
Split APKs allow end users to download multiple smaller, modular APKs that are specific to their device, rather than a single, universal APK that contains all assets, architecture and languages the app supports. By downloading smaller, modular APKs, users get only the portions of the app needed to run on their specific device, making it far easier for developers to stay below the 150 MB download limit from the Google Play Store.
Split APKs are made up of 4 potential splits:
  • The base split, containing Dex bytecode, shared resources and other metadata/assets not specific to any of the other split categories.
  • The density split, containing scaled assets (PNGs, WebPs, etc) specific to a device’s screen density.
  • The ABI split, containing native libraries (.so) built targeting the device’s specific ABI (Application Binary Interface — x86, arm64, etc)
  • The language split, containing resources (strings, localized PNGs, etc) specific for a given language or locale.
The only required split the user will always get is the base split. Depending on the application and the device’s configuration and settings, users will receive different combinations of the density, ABI and language split APKs.
Here is Emerge's Size Analysis on the Twitter app as a single, universal APK. The app bundle contains assets for all densities and native libraries for all ABIs and all languages. The result is an install size of 161.5 MB and download size of 64.5 MB (analysis link).
Emerge X-Ray of Twitter as a universal APK with the multiple architectures highlighted
Twitter as a universal APK with the multiple architectures highlighted
Here is the same version of the Twitter app, but instead with split APKs downloaded from the Play Store for a Pixel 3 running Android 12. The download resulted in a base split, arm64_v8a split, xxhdpi split and finally, the english locale split.
With split apks, the download size reduced by 24.3 MB and install size reduced by 61.6 MB (analysis link).
Emerge X-Ray of Twitter with split APKs. From left to right there is a base split, ABI split, density split, and language split (bottom right)
Twitter with split APKs. From left to right there is a base split, ABI split, density split, and language split (bottom right)
Split APKs are automatically downloaded by users when the developer of an application uploads an AAB as their release build to the Google Play developer console. Google Play uses bundletool to split the AAB to the split APKs pertaining to a user’s specific device and configuration. Learn mode about AABs here.
When uploading to different app stores, users can manually define Split APKs in their build.gradle file using the `splits` DSL:
android {
  ...
  splits {
    density {
      include("hdpi", "xhdpi", ...)
    }
    abi {
      include("x86", "arm64", ...)
    }
    ...
  }
}

Sign up for our newsletter 🛸

Never miss a post or product update

Related articles



2024 © Emerge Tools, Inc. All rights reserved.