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 (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í.
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.
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í 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.xml | Manifest aplikace: oprávnění, komponenty, verze SDK |
| classes.dex | Zkompilovaný DEX bytekód (může být několik souborů) |
| resources.arsc | Zkompilované 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 |
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.
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.
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.
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.
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.
// 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 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.
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ří.
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.
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 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.
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.
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.
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).
// 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}")
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í.
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.
| Parametr | APK | AAB |
|---|---|---|
| Velikost stahování | Plný archiv | Pouze potřebné komponenty |
| Přímá instalace | Ano | Ne (generování APK) |
| Distribuce | Jakýkoli kanál | Google Play |
| Kontrola verzí | Verze v manifestu | Dynamic Delivery |
| Publikace | Google Play + třetí strany | Google 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í.
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.
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.
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.
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%.
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.
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
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.
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í.
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.
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.
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í
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í.
Přečtěte si také