Vysvětlení všech formátů souborů Android: APK, AAB, XAPK, APKS, APKM, OBB a další

A filing tray with tabs labeled APK, AAB, XAPK, APKS, APKM and OBB

Ekosystém Android používá různé formáty souborů pro balení, distribuci a ukládání dat aplikací. Pokud jste si někdy stáhli aplikaci ze zdroje třetí strany, pravděpodobně jste se setkali s příponami souborů nad rámec známého souboru APK. Každý z formátů jako XAPK, APKS, APKM, AAB a OBB slouží specifickému účelu v životním cyklu aplikace pro Android.

Tato příručka má být kompletní referencí pro každý hlavní formát souborů Android. Vývojáři, zkušení uživatelé, kteří stahují aplikace z boku, a zvědaví čtenáři, kteří chtějí jen vědět, co tyto soubory skutečně obsahují, najdou níže každý formát vysvětlený srozumitelným jazykem.

APK: Android Package Kit

APK je základní formát souborů pro aplikace Android. Je to standardní instalační formát od počátku Androidu a zůstává formátem, kterému operační systém Android nativně rozumí pro instalaci aplikací.

Co obsahuje

Soubor APK je v podstatě archiv ZIP se specifickou vnitřní strukturou:

  • AndroidManifest.xml, binární soubor XML deklarující název balíčku aplikace, komponenty, oprávnění a požadavky
  • classes.dex (a classes2.dex atd.), Kompilovaný bytekód Dalvik obsahující kód Java/Kotlin aplikace
  • resources.arsc, Kompilovaná tabulka zdrojů mapující ID zdrojů na jejich hodnoty
  • res/, Adresář obsahující prostředky, jako jsou rozvržení, výkresy a řetězce, na které odkazuje ID
  • assets/, soubory nezpracovaných aktiv, ke kterým aplikace přistupuje za běhu prostřednictvím AssetManager
  • lib/, Nativní knihovny organizované podle architektury CPU (např). lib/arm64-v8a/
  • META-INF/, Podpisové soubory a informace o certifikátech

Když se s tím setkáte

Soubory APK jsou to, co stahujete při načítání aplikací ze zdrojů třetích stran. Jsou také tím, co se do vašeho zařízení nainstaluje z Obchodu Play, ačkoli moderní instalace Obchodu Play často používají rozdělené soubory APK generované z balíčků aplikací.

Jak to zvládnout

Soubory APK lze přímo nainstalovat na Android otevřením pomocí správce souborů nebo pomocí adb install. Můžete také prozkoumat jejich obsah přejmenováním přípony na .zip a extrahováním, nebo pomocí našeho Ověřovač APK ke kontrole podpisů a metadat.

AAB: Android App Bundle

Android App Bundle je formát publikování společnosti Google pro Obchod Play. Od srpna 2021 musí být všechny nové aplikace v Obchodě Play odesílány jako soubory AAB, nikoli soubory APK.

Co obsahuje

Soubor AAB používá formát založený na vyrovnávací paměti protokolu a obsahuje:

  • Základní modul: Základní kód aplikace a zdroje požadované na každém zařízení
  • Rozdělení konfigurace: Zdroje organizované podle hustoty obrazovky, architektury CPU a jazyka
  • Moduly dynamických funkcí: Volitelné funkce, které lze stáhnout na vyžádání
  • Metadata balíčku: Pokyny pro Google Play, jak generovat soubory APK pro konkrétní zařízení

Když se s tím setkáte

Jako běžný uživatel se obvykle přímo se soubory AAB nesetkáte. Používají je vývojáři během procesu sestavování a nahrávání. Pokud však získáte soubor AAB (možná z artefaktů sestavení open-source projektu), musíte jej před instalací převést do formátu APK.

Jak to zvládnout

Pomocí nástroje příkazového řádku bundletool společnosti Google nebo našeho nástroje Převodník AAB na APK vygenerujte instalovatelný soubor APK ze souboru AAB. Proces převodu vytvoří buď univerzální soubor APK (větší, funguje všude), nebo soubory APK pro konkrétní zařízení (menší, cílené na zařízení).

XAPK: Rozšířený soubor APK

XAPK je kontejnerový formát popularizovaný APKPure, který spojuje APK spolu s přidruženými datovými soubory OBB nebo rozděluje konfigurace APK do jednoho balíčku ke stažení.

Co obsahuje

Soubor XAPK je archiv ZIP obsahující:

  • Základní soubor APK (hlavní aplikace)
  • Soubory OBB (data rozšíření pro hry a velké aplikace)
  • Volitelně můžete rozdělit soubory APK pro různé konfigurace zařízení
  • Soubor manifest.json popisující obsah balíčku a pokyny k instalaci
  • Soubor ikony pro účely zobrazení

Když se s tím setkáte

Se soubory XAPK se setkáte při stahování velkých aplikací nebo her z úložišť aplikací třetích stran. Hry, které vyžadují další datové soubory (dříve distribuované jako soubory OBB), jsou běžně baleny jako XAPK, aby se zjednodušil proces stahování do jednoho souboru.

Jak to zvládnout

Soubory XAPK nelze přímo nainstalovat pomocí výchozího instalačního programu balíčků systému Android. Potřebujete buď speciální instalační aplikaci XAPK, nebo můžete použít naši Převodník XAPK na APK k extrahování základního APK. U her, které vyžadují data OBB, budete také muset extrahovat a umístit soubory OBB do správného adresáře pomocí našeho OBB extraktor.

APKS: Sada APK

Formát APKS je výstupem bundletoolu Google při generování souborů APK pro konkrétní zařízení ze souboru AAB. Používají jej také některé nástroje pro zálohování aplikací k ukládání rozdělených instalací APK.

Co obsahuje

Soubor APKS je archiv ZIP obsahující:

  • toc.pb, Obsah vyrovnávací paměti protokolu popisující strukturu rozdělení
  • splits/, Adresář obsahující základní soubor APK a všechny soubory APK rozdělené podle konfigurace
  • Volitelně samostatné soubory APK pro zařízení, která nepodporují rozdělené instalace

Když se s tím setkáte

Se soubory APKS se setkáte při místním používání nástroje bundletool, při zálohování aplikací nainstalovaných z Obchodu Play nebo při stahování z určitých úložišť třetích stran, která zachovávají rozdělenou strukturu souborů APK.

Jak to zvládnout

Soubory APKS můžete nainstalovat pomocí příkazu install-apks bundletool nebo je převést na jeden soubor APK pomocí našeho Sloučení APKS do APK. Upozorňujeme, že sloučení rozdělených souborů APK do univerzálního souboru APK může zvětšit velikost souboru, protože všechny konfigurační zdroje jsou sloučeny.

APKM: Balíček APKMirror

APKM je proprietární formát kontejneru vytvořený APKMirror pro distribuci aplikací, které se skládají z více rozdělených souborů APK. Slouží podobnému účelu jako XAPK a APKS, ale používá vlastní strukturu APKMirror.

Co obsahuje

Soubor APKM je archiv ZIP obsahující:

  • Základní soubor APK
  • Rozdělit soubory APK pro různé konfigurace (hustota, ABI, jazyk)
  • Soubor metadat popisující strukturu balíčku

Když se s tím setkáte

Na soubory APKM narazíte výhradně při stahování z APKMirror. Web používá tento formát pro aplikace, které jsou distribuovány jako App Bundle v Obchodě Play, a proto se skládají z několika rozdělených souborů APK.

Jak to zvládnout

Soubory APKM vyžadují pro přímou instalaci aplikaci APKMirror Installer, nebo můžete obsah extrahovat (protože se jedná o soubor ZIP) a nainstalovat rozdělené soubory APK ručně pomocí příkazu install-multiple ADB. Základní soubor APK lze také extrahovat a nainstalovat samostatně, i když některé funkce mohou být bez rozdělení konfigurace omezeny.

OBB: Neprůhledný binární blob

Soubory OBB jsou rozšiřující soubory používané aplikacemi pro Android (především hry) k ukládání velkého množství dat, která přesahují limit velikosti APK v Obchodě Play. Ačkoli Google tento systém do značné míry nahradil službou Play Asset Delivery, mnoho stávajících aplikací stále používá soubory OBB.

Co obsahuje

Soubory OBB mohou obsahovat jakýkoli typ dat, která aplikace potřebuje:

  • Herní textury a 3D modely
  • Zvukové soubory a zvukové stopy
  • Video obsah
  • Údaje o úrovni a mapy
  • Jakákoli velká binární data, která se vývojář rozhodne uložit externě

Formát dat v souboru OBB je zcela na vývojáři. Některé používají kompresi ZIP, jiné vlastní binární formáty. "Neprůhledné" v názvu odráží, že Android zachází se souborem jako s černou skříňkou.

Když se s tím setkáte

Soubory OBB se vyskytují při bočním načítání velkých her nebo když jsou součástí balíčků XAPK. Jsou uloženy na /Android/obb/[package.name]/ na sdíleném úložišti zařízení.

Jak to zvládnout

Aby je aplikace mohla najít, musí být soubory OBB umístěny ve správném adresáři. Název souboru se obvykle řídí vzorem main.[version].[package.name].obb nebo patch.[version].[package.name].obb. Použijte náš OBB extraktor k extrahování souborů OBB z balíčků XAPK.

DEX: Spustitelný soubor Dalvik

Soubory DEX obsahují zkompilovaný bajtový kód, který běží na běhovém prostředí Androidu. Nacházejí se uvnitř souborů APK, ale mohou existovat také nezávisle během vývoje a ladění.

Co obsahuje

Soubor DEX obsahuje:

  • Zkompilovaný bytecode Java/Kotlin ve formátu instrukce Dalvik
  • Řetězcové konstanty a definice typů
  • Metodické a oborové reference
  • Definice tříd a jejich hierarchie

Technické detaily

Jeden soubor DEX má limit 65 536 referenčních metod ("limit 64 kB"). Aplikace, které tento limit překračují, používají více souborů DEX (classes.dex, classes2.dex atd.), což je technika nazývaná multidex. Moderní stavební nástroje to zvládnou automaticky.

Soubory ODEX, VDEX a ART

Toto jsou optimalizované verze souborů DEX vytvořené systémem Android Runtime během nebo po instalaci:

  • ODEX (optimalizované DEX): Obsahuje předem zkompilovaný nativní strojový kód pro často používané metody. Generuje se při nečinnosti údržby na základě profilů použití.
  • VDEX (ověřený DEX): Obsahuje ověřený bajtový kód DEX s předem vypočítanými výsledky ověření. Tím se urychlí následné spouštění a spouštění aplikací přeskočením opětovného ověření.
  • ART (Android Runtime Image): Obsahuje předinicializované objekty třídy a data haldy. To umožňuje běhovému prostředí přeskočit načítání tříd a inicializaci pro běžné třídy frameworku během spouštění.

Tyto soubory jsou generovány systémem a nejsou něčím, s čím by uživatelé obvykle přímo interagovali. Jsou uloženy v /data/dalvik-cache/ nebo vedle APK v /data/app/.

SO: Sdílený objekt (nativní knihovny)

Soubory s příponou .so jsou nativní sdílené knihovny kompilované pro konkrétní architektury CPU. Obsahují strojový kód napsaný v C, C++ nebo Rust, který běží přímo na procesoru bez režie běhového prostředí Dalvik/ART.

Varianty architektury

  • armeabi-v7a, 32bitový ARM (většina starších zařízení)
  • arm64-v8a, 64bitový ARM (většina moderních telefonů)
  • x86, 32bitový Intel/AMD (některé tablety a emulátory)
  • x86_64, 64bitový Intel/AMD (Chromebooky a emulátory)

Pokud soubor APK obsahuje nativní knihovny, musí obsahovat správnou architekturu pro cílové zařízení. Pokud je zahrnuta nesprávná architektura, aplikace se zhroutí se UnsatisfiedLinkError.

Soubory XML v systému Android

Android používá XML značně, ale ve dvou různých formách:

Binární XML

Uvnitř souborů APK jsou prostředky XML (rozvržení, manifesty, soubory řetězců) uloženy v kompilovaném binárním formátu zvaném AXML. Tento formát je kompaktnější a rychleji se analyzuje než textové XML. Nástroje jako aapt2 nebo apktool mohou dekompilovat binární XML zpět na čitelný text.

Text XML

Během vývoje jsou soubory XML ve standardním textovém formátu. Proces sestavení je zkompiluje do binárního XML pro zahrnutí do souboru APK. Konfigurační soubory jako network_security_config.xml a zdrojové soubory v adresáři res/ začínají jako textové XML.

Mapovací soubory ProGuard/R8

I když nejde o formát specifický pro Android, mapovací soubory (mapping.txt jsou důležité pro pochopení zmatených aplikací). Když vývojáři používají nástroje pro zmenšování kódu, jako je R8, názvy tříd a metod jsou nahrazeny krátkými, nic neříkajícími identifikátory. Mapovací soubor zaznamenává překlady názvů z ​​originálu do zatemněných, což je nezbytné pro čtení zpráv o selhání.

Android Backup Format (AB)

Soubory s příponou .ab jsou zálohy Android vytvořené adb backup. Obsahují archiv tar (volitelně komprimovaný a šifrovaný) datového adresáře aplikace. Tento formát je zastaralý ve prospěch cloudových zálohovacích řešení, ale stále jej používají některé zálohovací nástroje.

Obrázky IMG a oddílů

Přestože obrazy systému Android nesouvisejí s aplikacemi, používají několik formátů, které stojí za zmínku:

  • system.img: Systémový oddíl pouze pro čtení obsahující rámec Android a předinstalované aplikace
  • boot.img: Obsahuje linuxové jádro a počáteční ramdisk
  • vendor.img: Ovladače a firmware specifické pro hardware
  • super.img: Dynamický kontejner oddílů používaný v moderních zařízeních (Android 10+)

Srovnávací tabulka formátů

Zde je rychlý odkaz srovnávající hlavní formáty distribuce aplikací:

  • APK: Jeden soubor, přímo instalovatelný, univerzální (včetně všech konfigurací), větší velikost
  • Formát publikování AAB:, který nelze přímo instalovat, vyžaduje zpracování v Obchodě Play
  • Kontejner XAPK: (APK + OBB/splits), vyžaduje instalační program nebo extrakci, používá APKPure
  • Kontejner APKS: (rozdělené soubory APK), formát bundletool, vyžaduje instalační program nebo sloučení
  • Kontejner APKM: (rozdělené soubory APK), formát APKMirror, vyžaduje jejich instalační program

Výběr správného nástroje

V závislosti na formátu, se kterým pracujete, jsou vhodné různé nástroje:

Jaký formát balíčku pro Android byste měli použít?

Různorodost formátů souborů ekosystému Android odráží vývoj platformy od jednoduchých souborů APK s jedním souborem až po sofistikované modulární systémy doručování. Každý formát existuje proto, aby řešil konkrétní problém: AAB snižují velikost stahování, XAPK zjednodušují distribuci vícesouborových aplikací, OBB zpracovávají velká herní data a rozdělené APK umožňují optimalizaci pro konkrétní zařízení.

Jakmile těmto formátům porozumíte, můžete zpracovávat jakýkoli balíček Android, na který narazíte, ať už stahujete aplikace, zálohujete své zařízení nebo vyvíjíte své vlastní aplikace. Klíčové je, že většina z těchto formátů jsou v konečném důsledku kontejnery, které obsahují soubory APK v různých konfiguracích, a pomocí správných nástrojů můžete vždy extrahovat to, co potřebujete.

Navrhl a zdokumentoval Mst Shaefale Vedoucí vývojář a architekt balíčku Android • Ověřeno na Androidu 12–15

Mst Shaefale spravuje nástroje pro slučování XAPK/APKS na straně klienta, analyzátor binárních manifestů a nástroje pro podepisování APK v1+v2 na xapktoapk.com. Zaznamenali jste zastaralý příkaz nebo změnu operačního systému? Pošlete redakční poznámku.