APK: co to je, struktura souboru a princip fungování

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

APK (Android Package Kit) je formát archivního souboru používaný k distribuci a instalaci aplikací na Androidu. Každá aplikace, kterou uživatel stáhne z Google Play nebo nainstaluje ručně, je soubor APK. Podle Android Open Source Project, 2026 je formát založen na standardu ZIP a obsahuje zkompilovaný kód, zdroje, manifest a digitální podpis.

Hlavní body

  • APK — formát instalačního balíčku Androidu založený na ZIP s DEX bytekódem a zdroji.
  • Struktura zahrnuje manifest, DEX soubory, zdroje, knihovny nativního kódu a certifikáty.
  • Podpis — povinný prvek: nepodepsaný APK se na zařízeních neinstaluje.
  • Sestavení probíhá přes Gradle: od Java/Kotlin po komprimovaný DEX bytekód.
  • Obchody třetích stran a přímá instalace APK zůstávají žádané mimo Google Play.

Co je APK a k čemu se používá

APK (Android Package Kit) je formát archivu, do kterého je zabalena Android aplikace pro distribuci. Technicky je APK archiv ZIP s určitou strukturou obsahující všechny komponenty nezbytné pro fungování aplikace na zařízení.

Historie formátu

Formát APK se objevil spolu s první verzí Androidu v roce 2008. Jako základ byl vzat standard JAR (Java Archive), který je sám založen na ZIP. Toto dědictví zajistilo kompatibilitu se stávajícími nástroji pro práci s archivy — jakýkoli archivátor otevře APK jako běžný ZIP.

Oblasti použití

Google Play — hlavní kanál distribuce APK, ale formát se používá i v jiných scénářích: přímá instalace přes prohlížeč (sideloading), firemní obchody s aplikacemi, testování na vývojářských zařízeních a instalace v emulátorech. Podle Statista probíhá přibližně 15% instalací Android aplikací v roce 2025 mimo Google Play.

Vnitřní struktura souboru APK

Vnitřní uspořádání APK je přísně regulováno: každá aplikace musí obsahovat určité soubory a adresáře. Porušení struktury vede k chybě instalace.

Soubor/adresářÚčel
AndroidManifest.xmlManifest aplikace: oprávnění, komponenty, verze SDK
classes.dexZkompilovaný DEX bytekód (může být několik souborů)
resources.arscZkompilované zdroje: řetězce, styly, rozvržení
res/Nezkompilované zdroje: obrázky, písma, XML
lib/Nativní knihovny (.so) pro různé architektury CPU
META-INF/Metadata: certifikáty, seznamy souborů, hashe

AndroidManifest.xml

Manifest — centrální konfigurační soubor aplikace. V binární zkompilované podobě (ne v čitelném XML) obsahuje název balíčku, verzi, seznam aktivit, služeb, oprávnění a požadavky na SDK. Bez manifestu systém neví, jak aplikaci spustit.

Soubory DEX

Zdrojový kód v Javě nebo Kotlinu je kompilován do souborů DEX (Dalvik Executable). Hlavní soubor se nazývá classes.dex. Pokud bytekód překročí limit 64K metod, vytvářejí se classes2.dex, classes3.dex a tak dále — mechanismus multidex.

Nativní knihovny

Adresář lib/ obsahuje zkompilované C/C++ knihovny pro různé architektury: armeabi-v7a, arm64-v8a, x86, x86_64. Každá knihovna má příponu .so (Shared Object). Moderní aplikace obvykle dodávají pouze arm64-v8a.

Proces sestavení APK přes Gradle

Sestavení APK je vícestupňový proces automatizovaný systémem sestavení Gradle a Android Gradle Plugin. Každý stupeň převádí zdrojové soubory na komponenty finálního archivu.

Fáze sestavení

Zdrojový kód je kompilován do Java bytekódu (.class), poté převeden na DEX pomocí nástroje d8 (dříve dx). Zdroje jsou kompilovány do binárního formátu přes AAPT2. Všechny komponenty jsou zabaleny do ZIP archivu a podepsány digitálním podpisem.

kotlin
// build.gradle.kts — základní konfigurace sestavení APK
android {
    defaultConfig {
        applicationId = "com.example.app"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0.0"
    }
    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt")
            )
        }
    }
}

ProGuard a zmenšení velikosti

ProGuard nebo R8 obfuskují kód, odstraňují nepoužívané třídy a metody, čímž zmenšují velikost APK. Bez obfuskace APK obsahuje plné názvy tříd, což usnadňuje dekompilaci. R8 také provádí optimalizaci bytekódu na úrovni DEX.

Podepisování APK: schémata v1, v2, v3 a v4

Digitální podpis je povinným prvkem APK. Android neinstaluje nepodepsané balíčky. Podpis zaručuje, že aplikace nebyla po publikaci změněna, a určuje, komu balíček patří.

Vývoj schémat podepisování

v1 (JAR signing) — původní schéma založené na podpisu každého souboru v archivu. Zranitelnost: soubory lze odstranit z META-INF bez detekce. v2 (APK Signature Scheme v2) se objevil v Android 7.0 — podepisuje se celý archiv, což zabraňuje modifikaci. v3 podporuje rotaci klíčů a v4 — inkrementální instalaci.

Google Play vyžaduje v2 nebo vyšší pro všechny nové aplikace od srpna 2021. Doporučuje se podepisovat APK všemi třemi schématy pro maximální kompatibilitu s různými verzemi Androidu.

Proces podepisování přes Gradle

V build.gradle se uvádí keystore, heslo a alias. Soukromý klíč je uložen v šifrovaném úložišti. Pro publikaci v Google Play se používá App Signing — Google ukládá soukromý klíč a vývojář nahrává podepsaný APK.

Instalace APK na zařízení Android

Instalace APK probíhá přes systémového správce balíčků PackageManager. Proces zahrnuje ověření podpisu, parsování manifestu, kopírování souborů a optimalizaci DEX přes dex2oat.

Instalace přes ADB

Nástroj ADB (Android Debug Bridge) umožňuje instalovat APK přímo z počítače vývojáře. Příkaz `adb install app.apk` zkopíruje soubor do zařízení a spustí instalaci. Přepínač -r přeinstaluje aplikaci s uchováním dat, přepínač -d povoluje instalaci verze s nižším versionCode.

Bezpečnost instalace

Od Androidu 8.0 systém vyžaduje potvrzení instalace z neznámých zdrojů pro každou aplikaci zvlášť. Android 14 posílil kontrolu: instalace APK přes obchody třetích stran je možná pouze po výslovném povolení v nastavení. Google Play Protect skenuje každý APK při instalaci na přítomnost škodlivého kódu.

APK Expansion Files (OBB)

Pro aplikace větší než 150 MB podporuje Google Play Expansion Files — dodatečné OBB balíčky až do 2 GB každý. OBB soubory nejsou součástí APK, ale stahují se samostatně po instalaci. Formát podporuje dva typy: main (základní zdroje) a patch (aktualizace).

kotlin
// Kontrola verze APK přes PackageManager
val pm = packageManager
val info = pm.getPackageInfo(
    "com.example.app",
    PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Verze: ${info.versionName}")

Optimalizace dex2oat

Na zařízeních s ART (Android Runtime) se po instalaci spouští kompilace DEX do nativního kódu přes dex2oat. Proces může trvat několik sekund a zvyšuje velikost nainstalované aplikace, ale urychluje její spouštění.

APK vs AAB: který formát zvolit

AAB (Android App Bundle) — formát, který Google propaguje jako alternativu k APK pro publikaci v Google Play. Rozdíl je zásadní: AAB se neinstaluje přímo, ale slouží jako kontejner, ze kterého Google Play generuje optimalizované APK.

ParametrAPKAAB
Velikost stahováníPlný archivPouze potřebné komponenty
Přímá instalaceAnoNe (generování APK)
DistribuceJakýkoli kanálGoogle Play
Kontrola verzíVerze v manifestuDynamic Delivery
PublikaceGoogle Play + třetí stranyGoogle Play

Google Play vyžaduje AAB od srpna 2021 pro nové aplikace. APK však zůstává hlavním formátem pro distribuci mimo Google Play — přes webové stránky, firemní obchody a testování.

Typické problémy s APK a jejich řešení

Vývojáři pravidelně narážejí na problémy při sestavování a instalaci APK. Většina z nich souvisí s nekompatibilitou verzí, podpisem nebo strukturou archivu.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

Chyba vzniká při pokusu o instalaci APK se stejným názvem balíčku, ale jiným podpisem. Android nepovoluje přeinstalaci aplikace se změněným certifikátem. Řešení — před instalací odstraňte starou verzi.

Překročení limitu metod (65K)

Pokud projekt překročí limit 65536 metod, sestavení selže s chybou dex. Řešení — povolte multidex v build.gradle nebo optimalizujte závislosti odstraněním nepoužívaných knihoven.

APK příliš velké velikosti

Google Play omezuje velikost APK na 150 MB. Pro větší aplikace se používají APK Expansion Files (OBB). Doporučuje se zmenšovat velikost pomocí R8, obrázků WebP a Android App Bundle. Každý megabajt navíc negativně ovlivňuje konverzi instalace: podle Google každých 10 MB snižuje konverzi o 1%.

Dekompilace APK a bezpečnost

APK lze dekompilovat pomocí nástrojů JADX, APKTool nebo Bytecode Viewer. JADX obnovuje původní Java kód z DEX, což činí aplikace bez obfuskace plně čitelnými. Pro ochranu kódu se používá ProGuard/R8, který přejmenovává třídy, metody a pole na krátká nečitelná jména a odstraňuje ladicí informace.

Analýza APK pomocí nástrojů

Pro analýzu obsahu APK se používají Android Studio Profiler, apkanalyzer (CLI nástroj z Android SDK) a nástroje třetích stran. apkanalyzer ukazuje velikost každé komponenty APK: DEX, zdroje, nativní knihovny a podpis. Analýza pomáhá identifikovat, které závislosti zabírají nejvíce místa, a rozhodnout o jejich výměně nebo odstranění.

Často kladené otázky

Lze otevřít APK jako běžný ZIP archiv?

Ano, jakýkoli archivátor (7-Zip, WinRAR) otevře APK jako ZIP. Obsah lze prohlížet, ale pro dekompilaci kódu jsou potřeba speciální nástroje — JADX nebo apktool.

Čím se APK liší od XAPK?

XAPK — neoficiální formát používaný některými obchody třetích stran. Spojuje APK s dodatečnými OBB soubory do jednoho archivu. Google Play a oficiální dokumentace Androidu XAPK nepoužívají.

Je nutné podepisovat APK pro testování?

Android Studio automaticky podepisuje debug sestavení debug.keystore při spuštění na zařízení. Pro distribuci testovací verze týmu je vyžadován podpis release klíčem nebo použití App Signing.

Jak zmenšit velikost APK?

Použijte R8 pro obfuskaci a minimalizaci, převeďte obrázky na WebP, odstraňte nepoužívané zdroje přes Lint a pro velké projekty přejděte na Android App Bundle s Dynamic Delivery.

Lze APK změnit po publikaci?

Ne — jakákoli změna APK po podpisu naruší digitální podpis. Pro aktualizaci je třeba sestavit a podepsat novou verzi se zvýšeným versionCode.

Shrnutí

  • APK — formát instalačního balíčku Androidu založený na ZIP s povinným digitálním podpisem.
  • Struktura zahrnuje manifest, DEX bytekód, zdroje, nativní knihovny a certifikáty.
  • Sestavení probíhá přes Gradle s kompilací do DEX pomocí nástroje d8.
  • Podpis je povinný: schémata v1, v2, v3 a v4 poskytují různé úrovně ochrany.
  • Instalace je možná přes Google Play, ADB, prohlížeč a firemní obchody.
  • AAB nahrazuje APK v Google Play, ale APK zůstává standardem pro externí distribuci.
  • Omezení: limit 150 MB pro Google Play, 64K metod bez multidex, povinný podpis.

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é