Ekosystém Android používa rôzne formáty súborov na balenie, distribúciu a ukladanie údajov aplikácií. Ak ste si niekedy stiahli aplikáciu zo zdroja tretej strany, pravdepodobne ste sa stretli s príponami súborov nad rámec známeho súboru APK. Formáty ako XAPK, APKS, APKM, AAB a OBB slúžia na konkrétny účel v životnom cykle aplikácie pre Android.
Táto príručka má byť úplnou referenciou pre každý hlavný formát súborov systému Android. Vývojári, pokročilí používatelia, ktorí sťahujú aplikácie bokom, a zvedaví čitatelia, ktorí chcú len vedieť, čo tieto súbory skutočne obsahujú, nájdu každý formát vysvetlený v jednoduchom jazyku nižšie.
APK: Android Package Kit
APK je základným formátom súborov pre aplikácie pre Android. Je to štandardný inštalačný formát od začiatku Androidu a zostáva formátom, ktorý operačný systém Android natívne chápe pre inštaláciu aplikácií.
Čo obsahuje
Súbor APK je v podstate archív ZIP so špecifickou vnútornou štruktúrou:
- AndroidManifest.xml, binárny súbor XML deklarujúci názov balíka aplikácie, komponenty, povolenia a požiadavky
- classes.dex (a classes2.dex atď.), Kompilovaný bajtový kód Dalvik obsahujúci kód Java/Kotlin aplikácie
- resources.arsc, zostavená tabuľka zdrojov mapujúca ID prostriedkov na ich hodnoty
- res/, adresár obsahujúci zdroje, ako sú rozloženia, výkresy a reťazce, na ktoré odkazuje ID
- assets/, súbory nespracovaných aktív, ku ktorým má aplikácia prístup za behu cez AssetManager
- lib/, Natívne knižnice usporiadané podľa architektúry CPU (napr). lib/arm64-v8a/
- META-INF/, Podpisové súbory a informácie o certifikátoch
Keď sa s tým stretnete
Súbory APK sú to, čo si stiahnete pri bočnom načítaní aplikácií zo zdrojov tretích strán. Sú to tiež to, čo sa nainštaluje do vášho zariadenia z Obchodu Play, hoci moderné inštalácie Obchodu Play často používajú rozdelené súbory APK generované z balíkov aplikácií.
Ako to zvládnuť
Súbory APK je možné nainštalovať priamo do systému Android ich otvorením pomocou správcu súborov alebo pomocou adb install. Môžete tiež preskúmať ich obsah premenovaním rozšírenia na .zip a extrahovaním alebo použitím nášho Verifikátor súboru APK na kontrolu podpisov a metadát.
AAB: Android App Bundle
Android App Bundle je formát publikovania spoločnosti Google pre Obchod Play. Od augusta 2021 musia byť všetky nové aplikácie v Obchode Play odosielané ako súbory AAB, nie súbory APK.
Čo obsahuje
Súbor AAB používa formát založený na vyrovnávacej pamäti protokolu a obsahuje:
- Kód základnej aplikácie Základný modul: a zdroje potrebné na každom zariadení
- Rozdelenie konfigurácie: Zdroje usporiadané podľa hustoty obrazovky, architektúry CPU a jazyka
- Moduly dynamických funkcií: Voliteľné funkcie, ktoré je možné stiahnuť na požiadanie
- Metadáta balíka: Pokyny pre Google Play na generovanie súborov APK pre konkrétne zariadenie
Keď sa s tým stretnete
Ako bežný používateľ sa zvyčajne priamo nestretnete so súbormi AAB. Používajú ich vývojári počas procesu zostavovania a nahrávania. Ak však získate súbor AAB (možno z artefaktov zostavy open-source projektu), musíte ho pred inštaláciou previesť do formátu APK.
Ako to zvládnuť
Použite nástroj príkazového riadka bundletool od spoločnosti Google alebo náš nástroj Konvertor AAB na APK na vygenerovanie inštalovateľného súboru APK zo súboru AAB. Proces konverzie vytvorí buď univerzálny súbor APK (väčší, funguje všade) alebo súbory APK špecifické pre zariadenie (menšie, zacielené na zariadenie).
XAPK: Rozšírený súbor APK
XAPK je formát kontajnera popularizovaný APKPure, ktorý spája súbor APK spolu s pridruženými dátovými súbormi OBB alebo rozdeľuje konfigurácie APK do jedného balíka na stiahnutie.
Čo obsahuje
Súbor XAPK je archív ZIP, ktorý obsahuje:
- Základný súbor APK (hlavná aplikácia)
- Súbory OBB (rozširujúce údaje pre hry a veľké aplikácie)
- Voliteľne rozdeľte súbory APK pre rôzne konfigurácie zariadenia
- Súbor manifest.json popisujúci obsah balíka a pokyny na inštaláciu
- Súbor ikon na účely zobrazenia
Keď sa s tým stretnete
So súbormi XAPK sa stretnete pri sťahovaní veľkých aplikácií alebo hier z úložísk aplikácií tretích strán. Hry, ktoré vyžadujú ďalšie dátové súbory (predtým distribuované ako súbory OBB), sú bežne zabalené ako XAPK, aby sa zjednodušil proces sťahovania do jedného súboru.
Ako to zvládnuť
Súbory XAPK nemožno priamo nainštalovať predvoleným inštalátorom balíkov systému Android. Potrebujete buď vyhradenú inštalačnú aplikáciu XAPK, alebo môžete použiť náš Prevodník XAPK na APK na extrahovanie základného súboru APK. Pre hry, ktoré vyžadujú údaje OBB, budete tiež musieť extrahovať a umiestniť súbory OBB do správneho adresára pomocou nášho OBB extraktor.
APKS: Sada APK
Formát APKS je výstupom nástroja bundletool spoločnosti Google pri generovaní súborov APK pre konkrétne zariadenie zo súboru AAB. Používajú ho aj niektoré nástroje na zálohovanie aplikácií na ukladanie rozdelených inštalácií APK.
Čo obsahuje
Súbor APKS je archív ZIP, ktorý obsahuje:
- toc.pb, Obsah vyrovnávacej pamäte protokolu popisujúci štruktúru rozdelenia
- splits/, Adresár obsahujúci základný súbor APK a všetky konfiguračné rozdelené súbory APK
- Voliteľne samostatné súbory APK pre zariadenia, ktoré nepodporujú rozdelené inštalácie
Keď sa s tým stretnete
So súbormi APKS sa stretnete pri lokálnom používaní bundletool, pri zálohovaní aplikácií nainštalovaných z Obchodu Play alebo pri sťahovaní z určitých úložísk tretích strán, ktoré zachovávajú rozdelenú štruktúru APK.
Ako to zvládnuť
Súbory APKS môžete nainštalovať pomocou príkazu install-apks bundletool alebo ich previesť na jeden súbor APK pomocou nášho Zlúčenie APKS do APK. Upozorňujeme, že zlúčením rozdelených súborov APK do univerzálneho súboru APK sa môže zväčšiť veľkosť súboru, pretože všetky konfiguračné zdroje sú kombinované.
APKM: Balík APKMirror
APKM je proprietárny formát kontajnera vytvorený APKMirror na distribúciu aplikácií, ktoré pozostávajú z viacerých rozdelených súborov APK. Slúži na podobný účel ako XAPK a APKS, ale používa vlastnú štruktúru APKMirror.
Čo obsahuje
Súbor APKM je archív ZIP, ktorý obsahuje:
- Základný súbor APK
- Rozdelenie súborov APK pre rôzne konfigurácie (hustota, ABI, jazyk)
- Súbor metadát popisujúci štruktúru balíka
Keď sa s tým stretnete
Na súbory APKM narazíte výlučne pri sťahovaní z APKMirror. Stránka používa tento formát pre aplikácie, ktoré sú distribuované ako balíky aplikácií v Obchode Play, a preto pozostávajú z viacerých rozdelených súborov APK.
Ako to zvládnuť
Súbory APKM vyžadujú na priamu inštaláciu aplikáciu APKMirror Installer, alebo môžete extrahovať obsah (keďže ide o súbor ZIP) a manuálne nainštalovať rozdelené súbory APK pomocou príkazu install-multiple ADB. Základný súbor APK možno extrahovať a nainštalovať aj samostatne, hoci niektoré funkcie môžu byť obmedzené bez rozdelenia konfigurácie.
OBB: Nepriehľadný binárny blob
Súbory OBB sú rozširujúce súbory, ktoré používajú aplikácie pre Android (predovšetkým hry) na ukladanie veľkého množstva údajov, ktoré presahujú limit veľkosti APK v Obchode Play. Aj keď spoločnosť Google do značnej miery nahradila tento systém službou Play Asset Delivery, mnohé existujúce aplikácie stále používajú súbory OBB.
Čo obsahuje
Súbory OBB môžu obsahovať akýkoľvek typ údajov, ktoré aplikácia potrebuje:
- Herné textúry a 3D modely
- Zvukové súbory a zvukové stopy
- Video obsah
- Údaje o úrovni a mapy
- Akékoľvek veľké binárne údaje, ktoré sa vývojár rozhodne externe uložiť
Formát údajov v súbore OBB je výlučne na vývojárovi. Niektoré používajú kompresiu ZIP, iné používajú vlastné binárne formáty. "Nepriehľadné" v názve odráža, že Android zaobchádza so súborom ako s čiernou skrinkou.
Keď sa s tým stretnete
Súbory OBB sa vyskytujú pri bočnom načítaní veľkých hier alebo keď sú združené v balíkoch XAPK. Sú uložené v /Android/obb/[package.name]/ na zdieľanom úložisku zariadenia.
Ako to zvládnuť
Súbory OBB musia byť umiestnené v správnom adresári, aby ich aplikácia našla. Názov súboru sa zvyčajne riadi vzorom main.[version].[package.name].obb alebo patch.[version].[package.name].obb. Použite náš OBB extraktor na extrahovanie súborov OBB z balíkov XAPK.
DEX: Spustiteľný súbor Dalvik
Súbory DEX obsahujú skompilovaný bajtový kód, ktorý beží v runtime prostredí Androidu. Nachádzajú sa v súboroch APK, ale môžu existovať aj nezávisle počas vývoja a ladenia.
Čo obsahuje
Súbor DEX obsahuje:
- Kompilovaný bajtový kód Java/Kotlin vo formáte inštrukcie Dalvik
- Reťazcové konštanty a definície typov
- Odkazy na metódy a polia
- Definície tried a ich hierarchia
Technické detaily
Jeden súbor DEX má limit 65 536 odkazov na metódy ("limit 64 kB"). Aplikácie, ktoré prekračujú tento limit, používajú viacero súborov DEX (classes.dex, classes2.dex atď.), čo je technika nazývaná multidex. Moderné stavebné nástroje to zvládajú automaticky.
Súbory ODEX, VDEX a ART
Toto sú optimalizované verzie súborov DEX vytvorených modulom Android Runtime počas inštalácie alebo po nej:
- ODEX (optimalizované DEX): Obsahuje vopred skompilovaný natívny strojový kód pre často používané metódy. Generuje sa počas nečinnej údržby na základe profilov používania.
- VDEX (overené DEX): Obsahuje overený bajtový kód DEX s vopred vypočítanými výsledkami overenia. To urýchľuje následné spúšťanie a spúšťanie aplikácií preskočením opätovného overenia.
- ART (Android Runtime Image): Obsahuje predinicializované objekty triedy a údaje haldy. To umožňuje runtime preskočiť načítanie tried a inicializáciu pre bežné triedy rámcov počas spúšťania.
Tieto súbory sú generované systémom a nie sú niečo, s čím by používatelia zvyčajne priamo interagovali. Sú uložené v /data/dalvik-cache/ alebo vedľa APK v /data/app/.
SO: Zdieľaný objekt (natívne knižnice)
Súbory s príponou .so sú natívne zdieľané knižnice zostavené pre špecifické architektúry CPU. Obsahujú strojový kód napísaný v C, C++ alebo Rust, ktorý beží priamo na procesore bez réžie runtime Dalvik/ART.
Varianty architektúry
- armeabi-v7a, 32-bitový ARM (väčšina starších zariadení)
- arm64-v8a, 64-bitový ARM (väčšina moderných telefónov)
- x86, 32-bitový Intel/AMD (niektoré tablety a emulátory)
- x86_64, 64-bitový Intel/AMD (Chromebooky a emulátory)
Keď súbor APK obsahuje natívne knižnice, musí obsahovať správnu architektúru pre cieľové zariadenie. Ak je zahrnutá nesprávna architektúra, aplikácia spadne so UnsatisfiedLinkError.
Súbory XML v systéme Android
Android vo veľkej miere používa XML, ale v dvoch rôznych formách:
Binárny XML
Vo vnútri súborov APK sú zdroje XML (rozloženia, manifesty, reťazcové súbory) uložené v kompilovanom binárnom formáte nazývanom AXML. Tento formát je kompaktnejší a rýchlejšie sa analyzuje ako textový XML. Nástroje ako aapt2 alebo apktool dokážu dekompilovať binárne XML späť na čitateľný text.
Text XML
Počas vývoja sú súbory XML v štandardnom textovom formáte. Proces zostavovania ich skompiluje do binárneho XML na zahrnutie do súboru APK. Konfiguračné súbory ako network_security_config.xml a zdrojové súbory v adresári res/ začínajú ako textové XML.
Mapovacie súbory ProGuard/R8
Hoci nejde o formát špecifický pre Android, mapovacie súbory (mapping.txt sú dôležité na pochopenie nejasných aplikácií). Keď vývojári používajú nástroje na zmenšovanie kódu, ako je R8, názvy tried a metód sú nahradené krátkymi, nezmyselnými identifikátormi. Mapovací súbor zaznamenáva preklady názvov z pôvodného do zahmlených, čo je nevyhnutné na čítanie správ o zlyhaní.
Android Backup Format (AB)
Súbory s príponou .ab sú záložné archívy Android vytvorené adb backup. Obsahujú archív tar (voliteľne komprimovaný a šifrovaný) adresára s údajmi aplikácie. Tento formát je zastaraný v prospech cloudových zálohovacích riešení, ale stále ho používajú niektoré zálohovacie nástroje.
IMG a obrázky oddielov
Hoci obrázky systému Android nesúvisia s aplikáciami, používajú niekoľko formátov, ktoré stojí za zmienku:
- system.img: Systémový oddiel iba na čítanie obsahujúci rámec Android a predinštalované aplikácie
- boot.img: Obsahuje jadro Linuxu a počiatočný ramdisk
- vendor.img: Ovládače a firmvér špecifické pre hardvér
- super.img: Dynamický kontajner oddielov používaný v moderných zariadeniach (Android 10+)
Porovnávacia tabuľka formátov
Tu je rýchly odkaz na porovnanie hlavných formátov distribúcie aplikácií:
- APK: Jeden súbor, priamo inštalovateľný, univerzálny (vrátane všetkých konfigurácií), väčšia veľkosť
- Formát publikovania AAB:, ktorý nie je možné priamo nainštalovať, vyžaduje spracovanie v Obchode Play
- Kontajner XAPK: (APK + OBB/splits), vyžaduje inštalátor alebo extrakciu, používa ho APKPure
- Kontajner APKS: (rozdelené súbory APK), formát bundletool, vyžaduje inštalátor alebo zlúčenie
- Kontajner APKM: (rozdelené súbory APK), formát APKMirror, vyžaduje ich inštalátor
Výber správneho nástroja
V závislosti od formátu, s ktorým pracujete, sú vhodné rôzne nástroje:
- Máte XAPK? Na extrahovanie inštalovateľného súboru APK použite náš Prevodník XAPK na APK
- Máte AAB? Pomocou nášho Konvertor AAB na APK vygenerujte univerzálny súbor APK
- Máte rozdelené súbory APK (APKS)? Použite náš Zlúčenie APKS do APK na ich kombináciu
- Potrebujete overiť súbor APK? Na kontrolu podpisov použite náš Verifikátor súboru APK
- Potrebujete súbory OBB z XAPK? Použite náš OBB extraktor na rozbalenie súborov rozšírenia
Aký formát balíka Android by ste mali použiť?
Rozmanitosť formátov súborov ekosystému Android odráža vývoj platformy od jednoduchých súborov APK s jedným súborom až po sofistikované modulárne systémy doručovania. Každý formát existuje na vyriešenie špecifického problému: AAB zmenšujú veľkosť sťahovania, XAPK zjednodušujú distribúciu viacsúborových aplikácií, OBB spracovávajú veľké herné dáta a rozdelené APK umožňujú optimalizáciu pre konkrétne zariadenie.
Keď porozumiete týmto formátom, môžete pracovať s akýmkoľvek balíkom Android, na ktorý narazíte, či už sťahujete aplikácie, zálohujete svoje zariadenie alebo vyvíjate svoje vlastné aplikácie. Kľúčovým poznatkom je, že väčšina z týchto formátov sú v konečnom dôsledku kontajnery, ktoré obsahujú súbory APK v rôznych konfiguráciách, a so správnymi nástrojmi môžete vždy extrahovať to, čo potrebujete.