Unity AssetBundles
LiveOps
Mobile Game Development
Remote Assets
Game Engineering
iOS & Android

Updating Unity Mobile Games Without Store Submissions: Architecture & AssetBundle Fundamentals (Part 1)

4 min read
Eshan Naithani

Submitting a new app binary (.ipa or .aab) to the Apple App Store or Google Play Store every time you fix a balance tweak, launch a weekend event, or add new level prefabs introduces massive friction:

  • Review Delays: 24 to 72 hours of store review wait times.
  • Forced User Downloads: Forcing players to re-download 200MB+ app updates through the app store destroys active user retention.
  • Stale Content: Inability to react dynamically to live game events or broken level configurations.

Welcome to Part 1 of our 3-Part Unity LiveOps & Dynamic Asset Update Masterclass:

In this first guide, we explore how to dynamically update content Over-The-Air (OTA), verify store policy compliance (Apple Guideline 2.5.2 & Google Play Policy), compare AssetBundles vs Addressables, and set up your remote CDN architecture.


1. Store Policy Compliance: What Can You Dynamically Update?

Before serving remote assets, ensure your over-the-air pipeline stays 100% compliant with Apple and Google developer guidelines.

Permitted Dynamic Over-The-Air Updates

  • Game Assets: Prefabs, 3D models, textures, audio clips, animations, and materials.
  • Level Content: ScriptableObjects, JSON level files, balance tables, and UI layouts.
  • LiveOps Events: Halloween/Christmas themes, limited-time offer assets, and seasonal maps.

[!CRITICAL] What Is Strictly Prohibited?: Apple Guideline 2.5.2 strictly prohibits downloading executable native code (.so, .dll, or compiled C# assemblies). Dynamic content updates must only download non-executable data assets interpreted by your compiled binary.


2. Architecture Overview: How Dynamic Asset Delivery Works

Code
 [Unity Client] ──1. Request Manifest (Version JSON)──> [Remote CDN (S3 / R2)]
       │                                                      │
       │<──2. Return Manifest (Hash128 & Bundle Sizes)────────┘
       │
 [Check Local Cache]
  ├── Hash Matches? ──> Load AssetBundle from Disk Cache (Instant)
  └── Hash Differs? ──> Download New AssetBundle over HTTPS
                                 │
                                 ▼
                     [Mount & Instantiate Prefabs]

3. Creating Your First AssetBundle in Unity

To package assets into an AssetBundle, assign an AssetBundle Name in the Inspector window or use an automated editor script.

Production C# Editor Script: Building AssetBundles

CSHARP
#if UNITY_EDITOR
using UnityEditor;
using System.IO;

public class BuildAssetBundles
{
    [MenuItem("Assets/Build AssetBundles/Android")]
    private static void BuildAndroidBundles()
    {
        string outputPath = "AssetBundles/Android";
        if (!Directory.Exists(outputPath)) Directory.CreateDirectory(outputPath);

        BuildPipeline.BuildAssetBundles(
            outputPath,
            BuildAssetBundleOptions.ChunkBasedCompression, // LZ4 compression
            BuildTarget.Android
        );
    }

    [MenuItem("Assets/Build AssetBundles/iOS")]
    private static void BuildiOSBundles()
    {
        string outputPath = "AssetBundles/iOS";
        if (!Directory.Exists(outputPath)) Directory.CreateDirectory(outputPath);

        BuildPipeline.BuildAssetBundles(
            outputPath,
            BuildAssetBundleOptions.ChunkBasedCompression, // LZ4 compression
            BuildTarget.iOS
        );
    }
}
#endif

[!IMPORTANT] LZ4 vs LZMA Compression: Always build production bundles with ChunkBasedCompression (LZ4). LZ4 allows individual assets inside the bundle to be decompressed on-demand without loading the entire bundle into RAM.


4. Part 1 Summary & Next Steps

In this first guide, we covered Apple/Google OTA compliance rules, dynamic asset architecture, and C# Editor bundle creation.

👉 Continue to Part 2: C# Remote Download, Hash128 Versioning & Caching Pipeline →


💡 Need a Custom LiveOps & Asset Delivery Strategy for Your Game?

Struggling with high binary sizes, long store review delays, or memory leaks during bundle loading? I work directly with game studios to architect scalable LiveOps and remote asset pipelines:

  • OTA Remote Pipelines: Setting up AWS S3, Cloudflare R2, or Unity Cloud Content Delivery.
  • Sub-150MB App Binary Setup: Deferring heavy game assets to post-install dynamic downloads.
  • Addressables Migration: Upgrading legacy AssetBundle setups to zero-leak Addressables architectures.

👉 Book a LiveOps & Remote Architecture Session or reach out directly to discuss your game's engineering roadmap.


🎮 Shipped Mobile Games & Official Store Profiles

Explore live commercial titles built with Unity and published across official app stores:


Planning to launch a mobile game or optimize your engineering budget? Check out our 2026 Mobile Game Development Cost Guide or book an engineering consultation.

Share this article

Looking to build a production-ready game?

See how I built Bird Sort Mania in 20 days using AI, or check out my full Mobile Games Portfolio to see my shipped titles on Android and iOS.

Join 5,000+ Game Developers

Get weekly insights on Unity performance optimization, AI gameplay architectures, and robust system design. No spam, just deep technical breakdowns.

Unsubscribe at any time. Your data is never shared.

Recommended Reading

More articles in Unity AssetBundles