App Size Optimization ve vývoji mobilních aplikací: základy, metody a postupy

Autor: IT Sectr Publikováno: 2026-04-01 Doba čtení: 8 min

App Size Optimization — soubor technik zaměřených na zmenšení instalačního souboru (APK, AAB, IPA) bez ztráty funkčnosti. Podle Android Reduce APK Size Guide může každý megabajt zmenšení velikosti zvýšit konverzi instalací o 1–2% v regionech s pomalým internetem. App Thinning — klíčová technologie Apple, doručující pouze ty zdroje, které potřebuje konkrétní zařízení.

Hlavní body

  • App Size Optimization — zmenšení instalačního souboru pro zvýšení konverze a rychlosti načítání
  • Zvýšení konverze — každé 1 MB zmenšení zvyšuje pravděpodobnost instalace o 1–2%
  • App Thinning — technologie Apple s On-Demand Resources a Slicing pro zmenšení instalace
  • ProGuard a R8 — nástroje pro obfuskaci a minifikaci kódu pro Android
  • Optimalizace zdrojů — odstranění nepoužívaných aktiv, komprese obrázků a písem

Co je App Size Optimization

App Size Optimization — disciplína vývoje mobilních aplikací zaměřená na minimalizaci velikosti instalačního balíčku aplikace. Zahrnuje odstraňování mrtvého kódu a zdrojů, kompresi obrázků, optimalizaci knihoven, fragmentaci kompilace pro různé architektury a využití technologií doručování na vyžádání.

Velikost aplikace nerovnoměrně ovlivňuje různé segmenty uživatelů. V regionech s rozvinutou mobilní infrastrukturou (USA, Evropa, Japonsko) může být rozdíl mezi 50 a 100 MB nepostřehnutelný. V rozvojových regionech (Indie, Indonésie, Brazílie) každý další megabajt snižuje konverzi instalací kvůli limitům tarifů a rychlosti mobilního internetu. Google Play omezuje velikost APK na 200 MB, ale doporučuje udržovat velikost pod 100 MB.

Pro iOS App Store je maximální velikost stahování přes mobilní síť 200 MB (do roku 2023 to bylo 150 MB). Pokud IPA překročí tento limit, uživatel může aplikaci nainstalovat pouze přes Wi-Fi. Apple také podporuje App Thinning, který zahrnuje Slicing, Bitcode a On-Demand Resources — technologie automaticky zmenšující velikost instalace na konkrétním zařízení bez účasti vývojáře.

Proč je velikost aplikace kritická

Velikost aplikace ovlivňuje nejen konverzi instalací, ale také retenci, frekvenci aktualizací a rychlost prvního spuštění. Každý další megabajt je bariérou mezi uživatelem a používáním vašeho produktu.

Dopad na konverzi instalací

Podle údajů Google I/O 2024 zvyšuje zmenšení APK o 10 MB konverzi instalací v průměru o 3,5%. Pro aplikace o velikosti 150+ MB může být konverze o 20–30% nižší než u aplikací stejné třídy o velikosti 50 MB. Efekt je zvláště patrný v Google Play, kde uživatel vidí velikost před instalací. V App Store se velikost zobrazuje na stránce aplikace a uživatelé s omezeným tarifem odkládají instalaci na Wi-Fi, načež často na aplikaci zapomenou.

Frekvence aktualizací a aktualizace vzduchem

Velká aplikace se méně často aktualizuje vzduchem — uživatelé odkládají stahování záplat na Wi-Fi, čímž zmeškají kritické bezpečnostní opravy. Google Play umožňuje použití Incremental Updates (záplaty do 10 MB), ale úplná přeinstalace stejně stahuje celý APK nebo AAB. Apple App Store používá Delta Updates, přenáší pouze změněné soubory, ale i delta může být při změně zdrojů významná.

První spuštění a rozbalení

Velikost přímo ovlivňuje čas prvního spuštění: aplikace musí rozbalit zdroje, zkompilovat kód (Android) nebo podepsat mezipaměť (iOS). Aplikace o velikosti 200 MB může na průměrném zařízení startovat o 10–15 sekund déle než aplikace o velikosti 50 MB. To zhoršuje Onboarding Experience — uživatel může aplikaci zavřít, aniž by počkal na načtení.

VelikostDoba stahování (3G)Doba prvního spuštění
30 MB–20 s3–5 s
100 MB–70 s5–8 s
200 MB–140 s10–15 s

Optimalizace zdrojů a aktiv

Zdroje — obrázky, písma, zvuky, video — tvoří 60–80% velikosti typické mobilní aplikace. Optimalizace zdrojů přináší největší zisk s minimálním úsilím. Hlavní směry: komprese, odstraňování duplikátů a nepoužívaných aktiv, výběr správných formátů.

Optimalizace obrázků

WebP — formát obrázků od Google, poskytující o 25–35% lepší kompresi než PNG a o 15–20% lepší než JPEG při stejné vizuální kvalitě. Android podporuje WebP nativně od API 18. Pro iOS je WebP podporován prostřednictvím knihovny SDWebImage nebo Kingfisher, a od iOS 17 je k dispozici nativní podpora. AVIF — modernější formát, poskytující dalších 10–15% úspory oproti WebP, ale s pomalejším dekódováním.

Odstranění nepoužívaných zdrojů — nejjednodušší způsob, jak zmenšit velikost. V Androidu použijte refaktorování v Android Studio: Analyze → Run Inspection → Unused Resources. V iOS — Build Settings → Remove Unused Resources. Často v projektech zůstávají sprite z dřívějších verzí, staré ikony, nepoužívané obrázky úvodní obrazovky, které nafukují velikost bez jakéhokoli funkčního zatížení.

FormátKomprese oproti PNGPodpora
PNGVšechny platformy
WebP25–35%Android nativně, iOS přes knihovny
AVIF35–45%Android 12+, iOS 17+
JPEG XR30–40%Pouze Windows

Optimalizace písem a zvuků

Vlastní písma mohou zabírat 5–15 MB, zejména pokud je připojena celá rodina (všechny styly: Regular, Bold, Italic, BoldItalic). Používejte pouze potřebné styly a podmnožiny znaků pomocí subsetting — odstraňování glyfů pro jazyky, které aplikace nepodporuje. Služby jako Google Fonts a Transfonter umožňují vytvořit minimální sadu znaků. Pro zvuky používejte AAC/HE-AAC místo WAV a nekomprimovaných formátů — úspora až 90% bez ztráty kvality.

Optimalizace kódu a knihoven

Kód tvoří 20–40% velikosti aplikace, ale jeho optimalizace je obtížnější než u zdrojů, protože vyžaduje analýzu závislostí, obfuskaci a odstranění mrtvého kódu bez rizika narušení funkčnosti.

ProGuard a R8 pro Android

ProGuard — nástroj pro Android provádějící obfuskaci, minifikaci a optimalizaci kódu. R8 — jeho nástupce, integrovaný v Android Gradle Plugin, pracuje rychleji a efektivněji. R8 odstraňuje nepoužívané třídy a metody, zkracuje názvy proměnných a přepisuje kód pro snížení počtu instrukcí. Typické zmenšení velikosti DEX souborů pomocí R8 je 30–50%.

groovy
// build.gradle — konfigurace R8 pro minifikaci
android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(
                'proguard-android-optimize.txt')
            shrinkResources true
        }
    }
}

Optimalizace knihoven a závislostí

Knihovny — častá příčina nafouknuté velikosti. Jedna knihovna může přinést tranzitivní závislosti, které zvyšují velikost o 5–20 MB bez přímého užitku pro aplikaci. Používejte Gradle Version Catalog pro Android a Swift Package Manager pro iOS s explicitním uvedením závislostí. Analyzujte velikost pomocí Build Analyzer v Android Studio nebo Xcode Build Timeline. Nahrazujte těžké knihovny lehčími alternativami: například OkHttp (3 MB) místo Apache HTTP (15 MB).

Odstranění nepoužívaného kódu v iOS

Dead Code Stripping — automatické odstraňování nepoužívaných metod a tříd ve fázi linkování v Xcode. Aktivuje se přes Build Settings → Dead Code Stripping = YES. Bitcode — mezilehlá reprezentace, kterou může Apple překompilovat pro různé architektury a odstranit nepoužívané funkce. Od Xcode 14 je však Bitcode volitelný a jeho příspěvek ke zmenšení velikosti je 5–15% pro Objective-C projekty a méně pro Swift.

App Thinning a doručování na vyžádání

App Thinning — technologie Apple automaticky zmenšující velikost instalované aplikace doručováním pouze těch zdrojů, které jsou potřebné pro konkrétní zařízení. Skládá se ze tří komponent: Slicing, On-Demand Resources a Bitcode. V Androidu je analogem Android App Bundle (AAB) s Dynamic Delivery.

Android App Bundle (AAB)

AAB — formát publikace v Google Play, při kterém obchod generuje APK pro každé zařízení zvlášť, včetně pouze zdrojů pro jeho architekturu (armeabi-v7a, arm64-v8a), hustotu obrazovky (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) a jazyky. Typické zmenšení velikosti instalace při přechodu z univerzálního APK na AAB je 20–40%. Play Feature Delivery umožňuje stahovat moduly na vyžádání, zatímco moduly Install-time jsou zahrnuty v základní instalaci.

groovy
// build.gradle — konfigurace AAB a Dynamic Features
android {
    bundle {
        language {
            enableSplit = true
        }
        density {
            enableSplit = true
        }
        abi {
            enableSplit = true
        }
    }
}

On-Demand Resources v iOS

On-Demand Resources (ODR) — mechanismus iOS, při kterém se zdroje (herní úrovně, obrázky ve vysokém rozlišení, video) stahují ze serverů Apple pouze tehdy, když je uživatel skutečně potřebuje. Velikost počáteční instalace může být snížena o 50–80%. Zdroje se dělí do tří kategorií: Initial Install Tags (stahují se při instalaci), Prefetched Tag Order (stahují se na pozadí po instalaci) a On-Demand (stahují se pouze na vyžádání). Apple doporučuje používat ODR pro obsah, který není potřeba na první obrazovce: úrovně her, doplňkový obsah, video návody.

SwiftUI podporuje ODR prostřednictvím atributu Bundle.module a UIKit prostřednictvím NSBundleResourceRequest. Pro hry na Unity a Unreal Engine je ODR integrován na úrovni nativního obalu. Hlavní omezení — zdroje ODR jsou systémem odstraněny při nedostatku místa, proto kritická data pro provoz musí být zahrnuta v hlavní kompilaci.

Často kladené otázky

Jaká je optimální velikost mobilní aplikace?

Méně než 50 MB — ideální velikost pro maximální konverzi instalací. 50–100 MB — přijatelné pro většinu aplikací. Nad 100 MB — vyžaduje ospravedlnění velikostí (hry, offline mapy, editory obsahu).

Co je výhodnější optimalizovat — kód nebo zdroje?

Zdroje přinášejí větší zisk za kratší dobu. Začněte odstraněním nepoužívaných aktiv, konverzí PNG na WebP a kompresí zvuků. Poté přejděte k optimalizaci kódu pomocí R8 nebo Dead Code Stripping.

Jak AAB zmenšuje velikost APK?

Google Play generuje APK pouze pro konkrétní zařízení: kód arm64-v8a, zdroje xhdpi, požadovaný jazyk. Univerzální APK obsahuje všechny varianty najednou, což zvětšuje velikost 1,5–2krát. AAB řeší tento problém na úrovni obchodu.

Ovlivňuje velikost rychlost chodu aplikace?

Nepřímo. Velká velikost znamená více kódu pro JIT/AOT kompilaci, více zdrojů k načtení do paměti a více času na parsování manifestů. Přímý dopad na výkon za běhu je však minimální — velikost ovlivňuje instalaci a první spuštění.

Co jsou moduly Install-time vs On-Demand?

Install-time — součást základní instalace, okamžitě dostupný. On-Demand — stahuje se při prvním vyžádání, není součástí počáteční instalace. Používejte On-Demand pro funkce, které potřebuje méně než 20% uživatelů: diagnostika, tutoriály, AR filtry.

Shrnutí

  • App Size Optimization — zmenšení velikosti aplikace pro zvýšení konverze a rychlosti načítání
  • Zdroje tvoří 60–80% velikosti — jejich optimalizace přináší největší zisk
  • WebP a AVIF — formáty komprese obrázků s úsporou 25–45% oproti PNG
  • R8 pro Android zmenšuje DEX o 30–50% pomocí minifikace kódu
  • App Thinning (iOS) a AAB (Android) doručují pouze potřebné zdroje
  • On-Demand Resources umožňují stahování obsahu po instalaci
  • Cílová velikost pro maximální konverzi — méně než 50 MB

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také