Quick answer: Unity encrypted AssetBundle.LoadFromMemoryAsync failing on Android API 28? Android's memory restrictions interact with the decryption - decrypt to a file instead of in memory.
Same encrypted bundle works on iOS and Android 29+. API 28 returns null.
Decrypt to file
Read encrypted bytes; decrypt to a temp file; LoadFromFile. Bypasses the memory issue.
Or raise min API
API 28 represents <5% of devices in 2026. Drop support; remove the workaround.
Use Unity's signed Bundles
Newer Unity supports asset bundle signing; encryption replaced. Migration may simplify.
“Encryption + memory load + old Android = bug class.”
If you ship encrypted bundles, test on the oldest Android you support. The bug class is platform-specific.