Az Android-ökoszisztéma számos fájlformátumot használ az alkalmazásadatok csomagolására, terjesztésére és tárolására. Ha valaha is letöltött egy alkalmazást harmadik féltől származó forrásból, akkor valószínűleg az ismerős APK-n kívüli fájlkiterjesztésekkel találkozott. Az olyan formátumok, mint az XAPK, APKS, APKM, AAB és OBB, egy-egy meghatározott célt szolgálnak az Android-alkalmazások életciklusában.
Ez az útmutató átfogó referenciaként szolgál minden fontosabb Android-fájlformátumhoz. Akár fejlesztő, akár külső forrásból telepítő felhasználó, vagy egyszerűen kíváncsi olvasó, aki szeretné tudni, mit rejtenek ezek a fájlok, az alábbiakban minden egyes formátumot közérthetően bemutatunk.
APK: Android Package Kit
Az APK az Android-alkalmazások alapvető fájlformátuma. Az Android kezdete óta ez a szabványos telepítési csomagformátum, és továbbra is ez az a formátum, amelyet az Android operációs rendszer natívan értelmez az alkalmazások telepítésekor.
Mit tartalmaz
Az APK-fájl lényegében egy ZIP-archívum, amely meghatározott belső szerkezettel rendelkezik:
- AndroidManifest.xml, bináris XML-fájl, amely deklarálja az alkalmazás csomagnevét, összetevőit, engedélyeit és követelményeit
- classes.dex (és classes2.dex stb.), Lefordított Dalvik bájtkód, amely az alkalmazás Java/Kotlin kódját tartalmazza
- resources.arsc, Lefordított erőforrástábla, amely leképezi az erőforrás-azonosítókat az értékekre
- res/, olyan erőforrásokat tartalmazó könyvtár, mint az elrendezések, rajzolások és karakterláncok, amelyekre azonosító hivatkozik
- assets/, az alkalmazás által futás közben elért nyers eszközfájlok az AssetManageren keresztül
- lib/, CPU architektúra szerint szervezett natív könyvtárak (pl). lib/arm64-v8a/
- META-INF/, aláírási fájlok és tanúsítvány információk
Amikor találkozol vele
Amikor harmadik féltől származó forrásból tölt le alkalmazásokat, általában APK-fájlokat kap. A Play Áruházból is ezek települnek a készülékre, bár a modern Play Áruházbeli telepítések gyakran App Bundle csomagokból generált osztott APK-kat használnak.
Hogyan kell kezelni
Az APK-fájlok közvetlenül telepíthetők az Androidra, ha megnyitják őket egy fájlkezelővel vagy a adb install használatával. A tartalmukat úgy is megvizsgálhatja, hogy átnevezi a kiterjesztést .zip-re és kicsomagolja, vagy a APK-ellenőrző segítségével ellenőrizheti az aláírásokat és a metaadatokat.
AAB: Android App Bundle
Az Android App Bundle a Google közzétételi formátuma a Play Áruházban. 2021 augusztusa óta a Play Áruházban található összes új alkalmazást AAB-ként kell beküldeni, nem pedig APK-ként.
Mit tartalmaz
Az AAB fájl protokoll puffer alapú formátumot használ, és a következőket tartalmazza:
- Alap modul: Az alapvető alkalmazáskód és erőforrások minden eszközön szükségesek
- Konfigurációs felosztások: Erőforrások képernyősűrűség, CPU architektúra és nyelv szerint rendezve
- Dinamikus funkciómodulok: Igény szerint letölthető opcionális szolgáltatások
- Csomag metaadatai: Útmutató a Google Play számára az eszközspecifikus APK-k létrehozásához
Amikor találkozol vele
Átlagos felhasználóként általában nem találkozik közvetlenül AAB-fájlokkal. Ezeket a fejlesztők használják a fordítási és feltöltési folyamat során. Ha azonban hozzájut egy AAB-fájlhoz (például egy nyílt forráskódú projekt kiadási fájljai közül), akkor azt a telepítés előtt APK-formátumba kell konvertálnia.
Hogyan kell kezelni
A Google bundletool parancssori segédprogramjával vagy a AAB-APK konverter-vel telepíthető APK-t generálhat AAB-fájlból. A konverziós folyamat vagy univerzális APK-t (nagyobb, mindenhol működik), vagy eszközspecifikus APK-kat (kisebb, eszköz szerint célzott) hoz létre.
XAPK: kiterjesztett APK
Az XAPK az APKPure által népszerűsített konténerformátum, amely egy APK-t köt össze a hozzá tartozó OBB-adatfájlokkal, vagy osztja fel az APK-konfigurációkat egyetlen letölthető csomagba.
Mit tartalmaz
Az XAPK fájl egy ZIP archívum, amely a következőket tartalmazza:
- Egy alap APK-fájl (a fő alkalmazás)
- OBB fájlok (bővítési adatok játékokhoz és nagy alkalmazásokhoz)
- Opcionálisan oszthat fel APK-fájlokat a különböző eszközkonfigurációkhoz
- Egy manifest.json fájl, amely leírja a csomag tartalmát és a telepítési utasításokat
- Egy ikonfájl megjelenítési célokra
Amikor találkozol vele
XAPK-fájlokkal találkozik, amikor nagy alkalmazásokat vagy játékokat tölt le harmadik féltől származó alkalmazástárolókból. A további adatfájlokat igénylő (korábban OBB-fájlokként terjesztett) játékokat általában XAPK-ként csomagolják, hogy leegyszerűsítsék a letöltési folyamatot egyetlen fájlba.
Hogyan kell kezelni
Az XAPK fájlokat nem lehet közvetlenül telepíteni az Android alapértelmezett csomagtelepítőjével. Szüksége van egy dedikált XAPK telepítő alkalmazásra, vagy használhatja a XAPK APK konvertáló-t az alap APK kibontásához. Az OBB-adatokat igénylő játékok esetében az OBB-fájlokat is ki kell bontani, és a megfelelő könyvtárba kell helyeznie a OBB elszívó segítségével.
APKS: APK készlet
Az APKS-formátum a Google csomageszközének kimenete, amikor eszközspecifikus APK-kat hoz létre AAB-fájlból. Egyes alkalmazások biztonsági mentési eszközei is használják az osztott APK-telepítések tárolására.
Mit tartalmaz
Az APKS-fájl egy ZIP-archívum, amely a következőket tartalmazza:
- toc.pb, A felosztott struktúrát leíró protokollpuffer tartalomjegyzék
- splits/, az alap APK-t és az összes konfigurációs felosztott APK-t tartalmazó könyvtár
- Opcionálisan önálló APK-k az osztott telepítést nem támogató eszközökhöz
Amikor találkozol vele
APKS-fájlokkal találkozhat a bundletool helyi használatakor, a Play Áruházból telepített alkalmazások biztonsági mentésekor, vagy bizonyos, a felosztott APK-struktúrát megőrző, harmadik féltől származó tárolókból történő letöltéskor.
Hogyan kell kezelni
Az APKS fájlokat telepítheti a bundletool install-apks parancsával, vagy konvertálhatja őket egyetlen APK-vá a APKS-APK egyesülés segítségével. Vegye figyelembe, hogy a felosztott APK-k univerzális APK-ba való egyesítése megnövelheti a fájlméretet, mivel az összes konfigurációs erőforrás kombinálva van.
APKM: APKMirror csomag
Az APKM egy szabadalmaztatott tárolóformátum, amelyet az APKMirror hozott létre több felosztott APK-ból álló alkalmazások terjesztésére. Hasonló célt szolgál, mint az XAPK és az APKS, de az APKMirror saját struktúráját használja.
Mit tartalmaz
Az APKM-fájl egy ZIP-archívum, amely a következőket tartalmazza:
- Egy alap APK fájl
- APK-fájlok felosztása különféle konfigurációkhoz (sűrűség, ABI, nyelv)
- A csomag szerkezetét leíró metaadatfájl
Amikor találkozol vele
Az APKM fájlokkal kizárólag az APKMirror oldalról történő letöltéskor találkozhat. A webhely ezt a formátumot használja a Play Áruházban App Bundle csomagként terjesztett alkalmazásokhoz, ezért több felosztott APK-ból állnak.
Hogyan kell kezelni
Az APKM-fájlok közvetlen telepítéséhez szükség van az APKMirror Installer alkalmazásra, vagy kibonthatja a tartalmukat (mivel ZIP-archívumok), és manuálisan telepítheti az osztott APK-kat az ADB install-multiple parancsával. Az alap APK önállóan is kicsomagolható és telepíthető, bár a konfigurációs részcsomagok nélkül egyes funkciók korlátozottak lehetnek.
OBB: Opaque Binary Blob
Az OBB-fájlok olyan bővítőfájlok, amelyeket Android-alkalmazások (elsősorban játékok) használnak a Play Áruház APK-méretkorlátját meghaladó nagy mennyiségű adat tárolására. Bár a Google nagyrészt a Play Asset Delivery rendszerrel cserélte le ezt a rendszert, sok meglévő alkalmazás továbbra is OBB fájlokat használ.
Mit tartalmaz
Az OBB fájlok bármilyen típusú adatot tartalmazhatnak, amelyre az alkalmazásnak szüksége van:
- Játék textúrák és 3D modellek
- Hangfájlok és hangsávok
- Videó tartalom
- Szintadatok és térképek
- Bármilyen nagy bináris adat, amelyet a fejlesztő úgy dönt, hogy külsőleg tárol
Az OBB-fájlban lévő adatok formátuma teljes mértékben a fejlesztőtől függ. Egyesek ZIP-tömörítést, mások egyéni bináris formátumokat használnak. Az „Opaque” a névben azt tükrözi, hogy az Android fekete dobozként kezeli a fájlt.
Amikor találkozol vele
OBB fájlokkal találkozhatunk nagy játékok oldalbetöltésekor, vagy ha XAPK-csomagokban vannak csomagolva. A /Android/obb/[package.name]/ helyen tárolódnak az eszköz megosztott tárhelyén.
Hogyan kell kezelni
Az OBB fájlokat a megfelelő könyvtárba kell helyezni, hogy az alkalmazás megtalálja őket. A fájlnév általában a main.[version].[package.name].obb vagy patch.[version].[package.name].obb mintát követi. Használja a OBB elszívó-t az OBB-fájlok XAPK-csomagokból való kibontásához.
DEX: Dalvik Végrehajtható
A DEX fájlok tartalmazzák a lefordított bájtkódot, amely az Android futási környezetében fut. Az APK-fájlokban találhatók, de önállóan is létezhetnek a fejlesztés és a hibakeresés során.
Mit tartalmaz
A DEX fájl a következőket tartalmazza:
- Lefordított Java/Kotlin bájtkód Dalvik utasításformátumban
- Karakterlánc-állandók és típusdefiníciók
- Módszer és szakirodalom
- Osztálydefiníciók és hierarchiáik
Műszaki részletek
Egyetlen DEX-fájl legfeljebb 65 536 metódushivatkozást tartalmazhat (ez az úgynevezett „64K-s korlát”). Az ezt a határt meghaladó alkalmazások több DEX-fájlt (classes.dex, classes2.dex stb.) használnak, amit multidex technikának neveznek. A modern fejlesztőeszközök ezt automatikusan kezelik.
ODEX, VDEX és ART fájlok
Ezek az Android Runtime által a telepítés során vagy után létrehozott DEX-fájlok optimalizált verziói:
- ODEX (Optimalizált DEX): Idő előtt lefordított natív gépi kódot tartalmaz a gyakran használt módszerekhez. Üresjárati karbantartás során generálódik a használati profilok alapján.
- VDEX (ellenőrzött DEX): Az ellenőrzött DEX bájtkódot tartalmazza előre kiszámított ellenőrzési eredményekkel. Ez felgyorsítja a későbbi rendszerindításokat és az alkalmazásindításokat az újraellenőrzés kihagyásával.
- ART (Android Runtime Image): Előinicializált osztályobjektumokat és kupacadatokat tartalmaz. Ez lehetővé teszi a futtatókörnyezet számára, hogy az indítás során kihagyja az osztálybetöltést és a közös keretosztályok inicializálását.
Ezeket a fájlokat a rendszer hozza létre, és a felhasználók általában nem közvetlenül lépnek kapcsolatba velük. A /data/dalvik-cache/-ben vagy az APK-val együtt a /data/app/-ben tárolódnak.
SO: Megosztott objektum (natív könyvtárak)
A .so kiterjesztésű fájlok natív megosztott könyvtárak, amelyeket meghatározott CPU-architektúrákhoz fordítanak. C, C++ vagy Rust nyelven írt gépi kódot tartalmaznak, amely közvetlenül a processzoron fut a Dalvik/ART futtatókörnyezet túlterhelése nélkül.
Építészeti változatok
- armeabi-v7a, 32 bites ARM (a legtöbb régebbi eszköz)
- arm64-v8a, 64 bites ARM (a legtöbb modern telefon)
- x86, 32 bites Intel/AMD (egyes táblagépek és emulátorok)
- x86_64, 64 bites Intel/AMD (Chromebookok és emulátorok)
Ha egy APK natív könyvtárakat tartalmaz, akkor a megfelelő architektúrát kell tartalmaznia a céleszközhöz. Ha rossz architektúrát tartalmaz, az alkalmazás összeomlik egy UnsatisfiedLinkError-vel.
XML fájlok Androidon
Az Android széles körben használja az XML-t, de két különböző formában:
Bináris XML
Az APK-fájlokon belül az XML-erőforrások (elrendezések, jegyzékek, karakterláncfájlok) egy lefordított bináris formátumban, az AXML-ben tárolódnak. Ez a formátum kompaktabb és gyorsabban értelmezhető, mint a szöveges XML. Az olyan eszközök, mint a aapt2 vagy a apktool, vissza tudják fordítani a bináris XML-t olvasható szöveggé.
Szöveg XML
A fejlesztés során az XML fájlok szabványos szövegformátumúak. Az összeállítási folyamat bináris XML-formátumba fordítja őket az APK-ba való felvételhez. A konfigurációs fájlok, például a network_security_config.xml és az erőforrásfájlok a res/ könyvtárban szöveges XML-ként kezdődnek.
ProGuard/R8 leképezési fájlok
Bár nem Android-specifikus formátum, a leképezési fájlok (mapping.txt fontosak a homályos alkalmazások megértéséhez). Amikor a fejlesztők kódzsugorító eszközöket, például R8-at használnak, az osztály- és metódusneveket rövid, értelmetlen azonosítókra cserélik. A leképezési fájl rögzíti az eredeti és a homályos név fordításait, ami elengedhetetlen a hibajelentések olvasásához.
Android biztonsági mentési formátum (AB)
A .ab kiterjesztéssel rendelkező fájlok a adb backup által létrehozott Android biztonsági mentési archívumok. Tartalmazzák az alkalmazás adatkönyvtárának tar-archívumát (opcionálisan tömörített és titkosított). Ez a formátum elavulttá válik a felhő alapú biztonsági mentési megoldások javára, de egyes biztonsági mentési eszközök továbbra is használják.
IMG és partíciós képek
Bár nem az alkalmazáshoz kapcsolódik, az Android rendszerképek több formátumot használnak, amelyeket érdemes megemlíteni:
- system.img: Az Android keretrendszert és előre telepített alkalmazásokat tartalmazó csak olvasható rendszerpartíció
- boot.img: A Linux kernelt és a kezdeti ramlemezt tartalmazza
- vendor.img: Hardver-specifikus illesztőprogramok és firmware
- super.img: Dinamikus partíciókonténer modern eszközökben (Android 10+)
Formátum-összehasonlító táblázat
Íme egy gyors referencia a fő alkalmazásterjesztési formátumok összehasonlításához:
- APK: Egy fájl, közvetlenül telepíthető, univerzális (minden konfigurációval együtt), nagyobb méret
- AAB: Közvetlenül nem telepíthető közzétételi formátumhoz a Play Áruház általi feldolgozás szükséges
- XAPK: konténer (APK + OBB/feloszt), telepítőt vagy kibontást igényel, az APKPure használja
- APKS: Container (osztott APK-k), bundletool formátum, telepítőt vagy összevonást igényel
- APKM: tároló (felosztott APK-k), APKMirror formátum, telepítő szükséges
A megfelelő eszköz kiválasztása
Attól függően, hogy milyen formátummal dolgozik, különböző eszközök megfelelőek:
- Van XAPK-ja? Használja a XAPK APK konvertáló-t a telepíthető APK kibontásához
- Van AAB-ja? Használja a AAB-APK konverter-t egy univerzális APK létrehozásához
- Van felosztott APK-ja (APKS)? Használja APKS-APK egyesülés termékünket ezek kombinálásához
- APK-t kell igazolnia? Használja APK-ellenőrző-ünket az aláírások ellenőrzésére
- OBB-fájlokra van szüksége XAPK-ból? Használja OBB elszívó termékünket a bővítőfájlok kicsomagolásához
Melyik Android csomagformátumot használja?
Az Android-ökoszisztéma fájlformátumainak sokfélesége tükrözi a platform fejlődését az egyszerű egyfájlos APK-któl a kifinomult moduláris kézbesítési rendszerekig. Mindegyik formátum egy adott probléma megoldására létezik: az AAB-k csökkentik a letöltési méreteket, az XAPK-k leegyszerűsítik a többfájlos alkalmazások terjesztését, az OBB-k nagy játékadatokat kezelnek, a felosztott APK-k pedig eszközspecifikus optimalizálást tesznek lehetővé.
Miután megértette ezeket a formátumokat, kezelheti bármelyik Android-csomagot, amelybe belefutott, legyen az alkalmazások oldalratöltése, az eszköz biztonsági mentése vagy saját alkalmazásai fejlesztése. A legfontosabb dolog az, hogy ezeknek a formátumoknak a többsége végső soron olyan tárolók, amelyek APK-fájlokat tartalmaznak különböző konfigurációkban, és a megfelelő eszközökkel mindig kibonthatja, amire szüksége van.