These best practices can improve install latency when Play as you Download
is enabled for your app.

## Use the latest SDKs

Use the latest SDKs for your app, especially if you are using the following
SDKs:

- Facebook Core SDK: 11.2.0 or higher

- FB Audience Network (ads): 6.5.1 or higher

The latest SDKs are optimized for Play as you Download to operate without
scanning the entire app binary. This lets users start your app more quickly
the first time they launch.

## Use install-time asset packs

Use [install-time](https://developer.android.com/guide/playcore/asset-delivery#delivery-modes) asset packs to
store large game assets. Google Play optimizes downloads by analyzing use
patterns of install-time asset packs. This helps the game launch much faster
while only downloading data that users need during the initial game launch.

The following table shows what code and resources are optimized by Play as you
download when games use an
[Android App Bundle with Play Assets Delivery](https://developer.android.com/guide/app-bundle/app-bundle-format).

| Resource format | Optimized by Play as you Download | Not optimized by Play as you Download |
|---|---|---|
| Android App Bundle files | Base Module and install-time dynamic features (except 'res/' and 'values/' directories) | \`res/\` and \`values/\` directories of base module and install-time dynamic features |
| Android App Bundle files |   | On-demand dynamic features |
| Play Asset Delivery files | Install-time asset packs | Fast-follow asset packs |
| Play Asset Delivery files |   | On-demand asset packs |

## Limit preloaded assets

Instead of preloading all app assets at once, only load what's needed for the
current user experience such as the menu or level. Loading too many assets
during the initial experience uses more network data up front.

Here are some additional recommendations for Unity games:

- See
  [Loading resources at runtime](https://docs.unity3d.com/2022.2/Documentation/Manual/LoadingResourcesatRuntime.html).

- Split large scenes into multiple scenes to avoid loading large amounts of
  asset data at once.

- Use an asset loading profiler (such as the
  [Asset Loading Profiler module in
  Unity](https://docs.unity3d.com/2022.2/Documentation/Manual/profiler-asset-loading-module.html))
  to identify asset loading optimizations for your game.

## Fix ANRs

By fixing [ANRs](https://developer.android.com/topic/performance/vitals/anr)
(Application Not Responding errors) in your app, you can also improve the Play
as you Download experience of the app. For example, by removing
[IO operations from the main thread](https://developer.android.com/topic/performance/vitals/anr#io_on_the_main_thread),
you can minimize ANRs from occurring while Play is downloading app assets in
background.