Support matrix
|
Play Asset Delivery |
Apple-hosted Background Assets |
On-Demand Resources |
| Platform |
Android, minSdk 24 |
iOS 26 and later |
iOS 17 and 18 (works on 26 too) |
| Source |
PlayAssetPacks |
AppleStoreSource + AppleAssetPacks |
AppleStoreSource + AppleAssetPacks(onDemandResourcesOnly = true) on 26 |
| Hosted by |
Google Play |
App Store |
App Store |
| Pack ships with |
the app bundle |
its own upload and review, independent of builds |
the app build |
| Packaging |
one asset-pack module per pack, on-demand |
scripts/apple-hosted-pack.sh then the App Store Connect API |
a folder reference tagged with the pack ID |
| Extra app setup |
registerPlayPrompts in onCreate |
downloader extension, App Group, three Info.plist keys |
ENABLE_ON_DEMAND_RESOURCES = YES |
| User prompts |
Wi-Fi for large packs, Play confirmation for unrecognised installs |
none |
none |
| Remove |
Play deletes the files |
the system deletes the files |
ends access; the system frees space later |
| Checked with |
Play local testing (bundletool --local-testing), Pixel 9 Pro XL emulator, 2026-10-24 |
unit tests against the Background Assets API |
iPhone simulator, iOS 26, 2026-10-24 |
Debug and test sources:
|
BundledAssetPacks |
LocalPacks |
FakePackSource |
| For |
Android debug APKs (installDebug) |
tests, any platform |
unit tests (assetdropkit-test) |
| Reads |
assets/<packId>/ inside the APK |
root/<packId>/ on disk |
files you give it |
| Download |
none, always Ready |
optional delay and failure rate |
scripted states |
PackSources.default(context, debug) picks BundledAssetPacks in debug and Play in release. A release build never reads bundled or local files.
States by source
| PackState |
Play |
Apple-hosted |
On-Demand Resources |
NotDownloaded |
NOT_INSTALLED |
not downloaded |
conditionallyBeginAccessingResources false |
Pending |
PENDING |
began, paused |
request started |
Downloading |
DOWNLOADING (bytes) |
downloading (progress) |
request progress |
Transferring |
TRANSFERRING |
|
|
WaitingForWifi |
WAITING_FOR_WIFI |
|
|
NeedsPlayConfirmation |
REQUIRES_USER_CONFIRMATION |
|
|
Ready |
COMPLETED, then the integrity check |
finished, then the integrity check |
access granted, then the integrity check |
Failed |
see Android setup |
mapped from the system error |
mapped from the system error |