APK (Android Package Kit) egy archívumfájl-formátum, amelyet Android-alkalmazások terjesztésére és telepítésére használnak. Minden alkalmazás, amelyet a felhasználó a Google Play-ből letölt vagy manuálisan telepít, egy APK-fájl. A Android Open Source Project, 2026 szerint a formátum a ZIP szabványon alapul, és lefordított kódot, erőforrásokat, manifesztet és digitális aláírást tartalmaz.
Főbb pontok
APK (Android Package Kit) egy archívumformátum, amelybe az Android-alkalmazást csomagolják terjesztés céljából. Technikailag az APK egy meghatározott szerkezetű ZIP-archívum, amely tartalmazza az alkalmazás eszközön való működéséhez szükséges összes komponenst.
Az APK formátum az Android első verziójával együtt jelent meg 2008-ban. Alapul a JAR (Java Archive) szabványt vették, amely maga is ZIP-en alapul. Ez az öröklés biztosította a kompatibilitást a meglévő archívumkezelő eszközökkel — bármely archiváló megnyitja az APK-t mint egy szokásos ZIP-et.
Google Play — az APK terjesztésének fő csatornája, de a formátumot más forgatókönyvekben is használják: közvetlen telepítés böngészőn keresztül (sideloading), vállalati alkalmazásáruházak, tesztelés fejlesztői eszközökön és telepítés emulátorokban. A Statista szerint az Android-alkalmazások telepítésének körülbelül 15%-a 2025-ben a Google Play-en kívül történik.
Az APK belső felépítése szigorúan szabályozott: minden alkalmazásnak meghatározott fájlokat és könyvtárakat kell tartalmaznia. A szerkezet megsértése telepítési hibához vezet.
| Fájl/könyvtár | Rendeltetés |
|---|---|
| AndroidManifest.xml | Alkalmazás manifeszt: engedélyek, komponensek, SDK verzió |
| classes.dex | Lefordított DEX bájtkód (több fájl is lehet) |
| resources.arsc | Lefordított erőforrások: karakterláncok, stílusok, elrendezések |
| res/ | Nem lefordított erőforrások: képek, betűtípusok, XML |
| lib/ | Natív könyvtárak (.so) különböző CPU architektúrákhoz |
| META-INF/ | Metaadatok: tanúsítványok, fájllisták, hash-ek |
A manifeszt az alkalmazás központi konfigurációs fájlja. Lefordított bináris formában (nem olvasható XML-ben) tartalmazza a csomag nevét, verzióját, tevékenységek listáját, szolgáltatásokat, engedélyeket és SDK-követelményeket. Manifeszt nélkül a rendszer nem tudja, hogyan indítsa el az alkalmazást.
A Java vagy Kotlin forráskód DEX (Dalvik Executable) fájlokba fordul le. A fő fájl neve classes.dex. Ha a bájtkód meghaladja a 64K metódus korlátját, classes2.dex, classes3.dex és így tovább jön létre — a multidex mechanizmus.
A lib/ könyvtár lefordított C/C++ könyvtárakat tartalmaz különböző architektúrákhoz: armeabi-v7a, arm64-v8a, x86, x86_64. Minden könyvtár .so (Shared Object) kiterjesztéssel rendelkezik. A modern alkalmazások általában csak arm64-v8a-t szállítanak.
Az APK építése egy többlépcsős folyamat, amelyet a Gradle build rendszer és az Android Gradle Plugin automatizál. Minden lépés a forrásfájlokat a végleges archívum komponenseivé alakítja.
A forráskód Java bájtkóddá (.class) fordul, majd a d8 eszközön (korábban dx) keresztül DEX-re konvertálódik. Az erőforrások az AAPT2-n keresztül bináris formátumba fordulnak. Az összes komponens ZIP-archívumba csomagolódik és digitális aláírással kerül aláírásra.
// build.gradle.kts — APK építésének alapszintű konfigurációja
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 vagy R8 elkódolja a kódot, eltávolítja a nem használt osztályokat és metódusokat, csökkentve az APK méretét. Elkódolás nélkül az APK teljes osztályneveket tartalmaz, ami megkönnyíti a dekompilálást. Az R8 emellett DEX-szintű bájtkód-optimalizálást is végez.
A digitális aláírás az APK kötelező eleme. Az Android nem telepít aláíratlan csomagokat. Az aláírás garantálja, hogy az alkalmazás nem változott meg a közzététel után, és meghatározza, hogy kié a csomag.
v1 (JAR signing) — eredeti séma, amely az archívum minden fájljának aláírásán alapul. Gyengeség: fájlok eltávolíthatók a META-INF-ből észlelés nélkül. v2 (APK Signature Scheme v2) az Android 7.0-ban jelent meg — a teljes archívum aláírásra kerül, ami megakadályozza a módosítást. v3 támogatja a kulcsrotációt, a v4 pedig az inkrementális telepítést.
A Google Play 2021 augusztusa óta v2 vagy magasabb verziót követel meg minden új alkalmazáshoz. Javasolt az APK-t mindhárom sémával aláírni a maximális kompatibilitás érdekében a különböző Android-verziókkal.
A build.gradle-ben meg kell adni a keystore-t, jelszót és aliast. A privát kulcs titkosított tárolóban van. A Google Play-ben való közzétételhez az App Signinget használják — a Google tárolja a privát kulcsot, a fejlesztő pedig feltölti az aláírt APK-t.
Az APK telepítése a PackageManager rendszer csomagkezelőn keresztül történik. A folyamat magában foglalja az aláírás ellenőrzését, a manifeszt elemzését, a fájlok másolását és a DEX optimalizálását dex2oat-on keresztül.
Az ADB (Android Debug Bridge) eszköz lehetővé teszi az APK közvetlen telepítését a fejlesztő számítógépéről. Az `adb install app.apk` parancs átmásolja a fájlt az eszközre és elindítja a telepítést. A -r jelző újratelepíti az alkalmazást az adatok megtartásával, a -d jelző lehetővé teszi az alacsonyabb versionCode-ú verzió telepítését.
Android 8.0-tól kezdve a rendszer minden alkalmazás esetében külön megerősítést kér az ismeretlen forrásból történő telepítéshez. Android 14 tovább erősítette az ellenőrzést: az APK telepítése harmadik féltől származó áruházakon keresztül csak a beállításokban adott kifejezett engedély után lehetséges. A Google Play Protect minden APK-t megvizsgál telepítéskor rosszindulatú kódra.
A 150 MB-nál nagyobb alkalmazásokhoz a Google Play Expansion Files-t támogat — kiegészítő OBB csomagokat, egyenként legfeljebb 2 GB méretben. Az OBB fájlok nem részei az APK-nak, hanem a telepítés után külön töltődnek le. A formátum két típust támogat: main (alap erőforrások) és patch (frissítések).
// APK verziójának ellenőrzése PackageManager-en keresztül
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Verzió: ${info.versionName}")
ART (Android Runtime) rendszerrel rendelkező eszközökön a telepítés után elindul a DEX natív kóddá fordítás a dex2oat-on keresztül. A folyamat néhány másodpercig tarthat, és megnöveli a telepített alkalmazás méretét, de felgyorsítja annak indítását.
AAB (Android App Bundle) — a Google által az APK alternatívájaként népszerűsített formátum a Google Play-ben való közzétételhez. A különbség alapvető: az AAB nem telepíthető közvetlenül, hanem tárolóként szolgál, amelyből a Google Play optimalizált APK-kat generál.
| Paraméter | APK | AAB |
|---|---|---|
| Letöltési méret | Teljes archívum | Csak szükséges komponensek |
| Közvetlen telepítés | Igen | Nem (APK generálás) |
| Terjesztés | Bármely csatorna | Google Play |
| Verziókezelés | Verzió a manifesztben | Dynamic Delivery |
| Közzététel | Google Play + harmadik felek | Google Play |
Google Play 2021 augusztusa óta AAB-t követel meg az új alkalmazásokhoz. Az APK azonban továbbra is a fő formátum marad a Google Play-en kívüli terjesztéshez — weboldalakon, vállalati áruházakon és tesztelésen keresztül.
A fejlesztők rendszeresen szembesülnek problémákkal az APK építése és telepítése során. A legtöbb ezek közül a verziók összeférhetetlenségével, az aláírással vagy az archívum szerkezetével kapcsolatos.
A hiba akkor jelentkezik, amikor egy APK-t ugyanazzal a csomagnévvel, de eltérő aláírással próbálnak telepíteni. Android nem engedélyezi a módosított tanúsítvánnyal rendelkező alkalmazás újratelepítését. Megoldás — távolítsa el a régi verziót a telepítés előtt.
Ha a projekt meghaladja a 65536 metódus korlátját, az építés dex hibával meghiúsul. Megoldás — kapcsolja be a multidex-et a build.gradle-ben, vagy optimalizálja a függőségeket a nem használt könyvtárak eltávolításával.
A Google Play az APK méretét 150 MB-ban korlátozza. Nagyobb alkalmazásokhoz APK Expansion Files (OBB) használatos. Javasolt a méret csökkentése R8, WebP képek és Android App Bundle segítségével. Minden plusz megabyte negatívan hat a telepítési konverzióra: a Google szerint minden 10 MB 1%-kal csökkenti a konverziót.
Az APK dekompilálható JADX, APKTool vagy Bytecode Viewer eszközökkel. JADX visszaállítja az eredeti Java kódot a DEX-ből, ami az elkódolás nélküli alkalmazásokat teljesen olvashatóvá teszi. A kód védelmére ProGuard/R8 használatos, amely az osztályokat, metódusokat és mezőket rövid olvashatatlan nevekre nevezi át, és eltávolítja a hibakeresési információkat.
Az APK tartalmának elemzéséhez Android Studio Profiler, apkanalyzer (CLI eszköz az Android SDK-ból) és harmadik féltől származó segédprogramok használatosak. apkanalyzer megmutatja az APK egyes összetevőinek méretét: DEX, erőforrások, natív könyvtárak és aláírás. Az elemzés segít azonosítani, mely függőségek foglalják a legtöbb helyet, és döntést hozni a cseréjükről vagy eltávolításukról.
Gyakran ismételt kérdések
Igen, bármely archiváló (7-Zip, WinRAR) megnyitja az APK-t ZIP-ként. A tartalom megtekinthető, de a kód dekompilálásához speciális eszközökre — JADX vagy apktool — van szükség.
XAPK — nem hivatalos formátum, amelyet néhány harmadik féltől származó áruház használ. Az APK-t kiegészítő OBB fájlokkal egy archívumba egyesíti. A Google Play és a hivatalos Android dokumentáció nem használja az XAPK-t.
Android Studio automatikusan aláírja a debug build-et debug.keystore-ral az eszközön való futtatáskor. A tesztverzió csapatnak történő terjesztéséhez release kulccsal történő aláírás vagy App Signing használata szükséges.
Használja az R8-at elkódoláshoz és minimalizáláshoz, konvertálja a képeket WebP-be, távolítsa el a nem használt erőforrásokat a Lint-en keresztül, és nagy projektek esetén váltson Android App Bundle-re Dynamic Delivery-vel.
Nem — az APK bármilyen megváltoztatása az aláírás után megtöri a digitális aláírást. Frissítéshez új verziót kell építeni és aláírni megnövelt versionCode-kal.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is