Екосистемата на Android използва различни файлови формати за опаковане, разпространение и съхранение на данни от приложения. Ако някога сте изтегляли приложение от източник на трета страна, вероятно сте срещали файлови разширения извън познатия APK. Всеки от формати като XAPK, APKS, APKM, AAB и OBB служи за специфична цел в жизнения цикъл на приложението за Android.
Това ръководство е предназначено да бъде пълна справка за всеки основен файлов формат на Android. Разработчици, опитни потребители, които зареждат приложения отстрани, и любопитни читатели, които просто искат да знаят какво всъщност съдържат тези файлове, ще намерят всеки формат обяснен на прост език по-долу.
APK: Комплект пакети за Android
APK е основният файлов формат за приложения за Android. Това е стандартният инсталационен формат от самото начало на Android и остава форматът, който операционната система Android естествено разбира за инсталиране на приложения.
Какво съдържа
APK файлът е по същество ZIP архив със специфична вътрешна структура:
- AndroidManifest.xml, двоичен XML файл, деклариращ името на пакета на приложението, компонентите, разрешенията и изискванията
- classes.dex (и classes2.dex и т.н.), компилиран Dalvik байткод, съдържащ Java/Kotlin кода на приложението
- resources.arsc, Компилирана таблица с ресурси, съпоставяща идентификаторите на ресурси с техните стойности
- res/, Директория, съдържаща ресурси като оформления, чертежи и низове, които са посочени от ID
- assets/, необработени файлове с активи, достъпни от приложението по време на изпълнение чрез AssetManager
- lib/, собствени библиотеки, организирани от CPU архитектура (напр). lib/arm64-v8a/
- META-INF/, Файлове за подписи и информация за сертификати
Когато го срещнете
APK файловете са това, което изтегляте при странично зареждане на приложения от източници на трети страни. Те също така се инсталират на вашето устройство от Play Store, въпреки че съвременните инсталации на Play Store често използват разделени APK файлове, генерирани от App Bundle.
Как да се справим
APK файловете могат да бъдат директно инсталирани на Android, като ги отворите с файлов мениджър или използвате adb install. Можете също така да разгледате съдържанието им, като преименувате разширението на .zip и извлечете или като използвате нашия APK верификатор, за да проверите подписи и метаданни.
AAB: Android App Bundle
Android App Bundle е форматът за публикуване на Google за Play Store. От август 2021 г. всички нови приложения в Play Store трябва да се изпращат като AAB, а не като APK.
Какво съдържа
AAB файл използва базиран на протокол буферен формат и съдържа:
- Базов модул: Основен код на приложение и ресурси, необходими на всяко устройство
- Разделяне на конфигурацията: Ресурси, организирани по плътност на екрана, архитектура на процесора и език
- Модули с динамични функции: Допълнителни функции, които могат да бъдат изтеглени при поискване
- Метаданни на пакета: Инструкции за Google Play как да генерирате APK файлове за конкретно устройство
Когато го срещнете
Като обикновен потребител обикновено не срещате директно AAB файлове. Те се използват от разработчиците по време на процеса на изграждане и качване. Ако обаче получите AAB файл (може би от артефакти за изграждане на проект с отворен код), трябва да го конвертирате в APK формат преди инсталиране.
Как да се справим
Използвайте помощната програма за команден ред bundletool на Google или нашата AAB към APK конвертор, за да генерирате инсталируем APK от AAB файл. Процесът на преобразуване създава или универсален APK (по-голям, работи навсякъде) или специфични за устройството APK (по-малки, насочени към устройство).
XAPK: Разширен APK
XAPK е контейнерен формат, популяризиран от APKPure, който обединява APK заедно със свързаните с него OBB файлове с данни или разделя APK конфигурации в един пакет за изтегляне.
Какво съдържа
XAPK файлът е ZIP архив, съдържащ:
- Базов APK файл (основното приложение)
- OBB файлове (данни за разширение за игри и големи приложения)
- По избор, разделете APK файлове за различни конфигурации на устройства
- manifest.json файл, описващ съдържанието на пакета и инструкции за инсталиране
- Файл с икони за показване
Когато го срещнете
Срещате XAPK файлове, когато изтегляте големи приложения или игри от хранилища на приложения на трети страни. Игрите, които изискват допълнителни файлове с данни (преди разпространявани като OBB файлове), обикновено се пакетират като XAPK, за да се опрости процеса на изтегляне в един файл.
Как да се справим
XAPK файловете не могат да бъдат директно инсталирани от програмата за инсталиране на пакети по подразбиране на Android. Имате нужда или от специално приложение за инсталиране на XAPK, или можете да използвате нашия XAPK към APK конвертор, за да извлечете основния APK. За игри, които изискват OBB данни, вие също ще трябва да извлечете и поставите OBB файловете в правилната директория, като използвате нашия OBB екстрактор.
APKS: Комплект APK
APKS форматът е изходът от пакетния инструмент на Google при генериране на специфични за устройството APK файлове от AAB файл. Използва се и от някои инструменти за архивиране на приложения за съхраняване на разделени APK инсталации.
Какво съдържа
APKS файлът е ZIP архив, съдържащ:
- toc.pb, Таблица на съдържанието на буфер на протокол, описваща разделената структура
- splits/, Директория, съдържаща основния APK и всички разделени APK файлове за конфигурация
- По желание, самостоятелни APK файлове за устройства, които не поддържат разделени инсталации
Когато го срещнете
Срещате APKS файлове, когато използвате bundletool локално, когато архивирате приложения, инсталирани от Play Store, или когато изтегляте от определени хранилища на трети страни, които запазват структурата на разделените APK.
Как да се справим
Можете да инсталирате APKS файлове с помощта на командата install-apks на bundletool или да ги конвертирате в един APK с помощта на нашия APKS към APK сливане. Имайте предвид, че обединяването на разделени APK файлове в универсален APK може да увеличи размера на файла, тъй като всички ресурси за конфигурация се комбинират.
APKM: Пакет APKMirror
APKM е патентован контейнерен формат, създаден от APKMirror за разпространение на приложения, които се състоят от множество разделени APK файлове. Той служи за подобна цел на XAPK и APKS, но използва собствената структура на APKMirror.
Какво съдържа
APKM файлът е ZIP архив, съдържащ:
- Базов APK файл
- Разделени APK файлове за различни конфигурации (плътност, ABI, език)
- Файл с метаданни, описващ структурата на пакета
Когато го срещнете
Срещате APKM файлове изключително при изтегляне от APKMirror. Сайтът използва този формат за приложения, които се разпространяват като App Bundles в Play Store и следователно се състоят от множество разделени APK файлове.
Как да се справим
APKM файловете изискват приложението APKMirror Installer за директно инсталиране или можете да извлечете съдържанието (тъй като това е ZIP файл) и да инсталирате разделените APK файлове ръчно, като използвате командата install-multiple на ADB. Базовият APK може също да бъде извлечен и инсталиран самостоятелно, въпреки че някои функции може да бъдат ограничени без разделяне на конфигурацията.
OBB: Непрозрачен двоичен петно
OBB файловете са разширителни файлове, използвани от приложения за Android (предимно игри) за съхраняване на големи количества данни, които надвишават ограничението за размер на APK на Play Store. Въпреки че Google до голяма степен замени тази система с Play Asset Delivery, много съществуващи приложения все още използват OBB файлове.
Какво съдържа
OBB файловете могат да съдържат всякакъв тип данни, необходими на приложението:
- Игрови текстури и 3D модели
- Аудио файлове и саундтраци
- Видео съдържание
- Данни за ниво и карти
- Всички големи двоични данни, които разработчикът избира да съхранява външно
Форматът на данните в OBB файл зависи изцяло от разработчика. Някои използват ZIP компресия, други използват персонализирани двоични формати. „Opaque“ в името отразява, че Android третира файла като черна кутия.
Когато го срещнете
OBB файлове се срещат при странично зареждане на големи игри или когато са пакетирани в XAPK пакети. Те се съхраняват в /Android/obb/[package.name]/ в споделеното хранилище на устройството.
Как да се справим
OBB файловете трябва да бъдат поставени в правилната директория, за да може приложението да ги намери. Името на файла обикновено следва модела main.[version].[package.name].obb или patch.[version].[package.name].obb. Използвайте нашия OBB екстрактор, за да извлечете OBB файлове от XAPK пакети.
DEX: Dalvik изпълним файл
DEX файловете съдържат компилирания байт код, който се изпълнява в средата за изпълнение на Android. Те се намират в APK файловете, но могат да съществуват и независимо по време на разработка и отстраняване на грешки.
Какво съдържа
DEX файл съдържа:
- Компилиран Java/Kotlin байт код във формат на инструкции Dalvik
- Низови константи и дефиниции на типове
- Препратки към метод и поле
- Дефиниции на класове и техните йерархии
Технически подробности
Единичен DEX файл има ограничение от 65 536 референтни метода („ограничението от 64K“). Приложенията, които надхвърлят това ограничение, използват множество DEX файлове (classes.dex, classes2.dex и т.н.), техника, наречена multidex. Съвременните инструменти за изграждане се справят с това автоматично.
ODEX, VDEX и ART файлове
Това са оптимизирани версии на DEX файлове, създадени от Android Runtime по време или след инсталирането:
- ODEX (оптимизиран DEX): Съдържа предварително компилиран собствен машинен код за често използвани методи. Генерирани по време на поддръжка в неактивност въз основа на профили на използване.
- VDEX (потвърден DEX): Съдържа проверения DEX байткод с предварително изчислени резултати от проверката. Това ускорява последващите зареждания и стартирания на приложения чрез пропускане на повторната проверка.
- ART (Android Runtime Image): Съдържа предварително инициализирани класови обекти и данни за купчина. Това позволява на средата за изпълнение да пропусне зареждането на класове и инициализацията за общи класове на рамката по време на стартиране.
Тези файлове са генерирани от системата и не са нещо, с което потребителите обикновено взаимодействат директно. Те се съхраняват в /data/dalvik-cache/ или заедно с APK в /data/app/.
SO: Споделен обект (родни библиотеки)
Файловете с разширение .so са собствени споделени библиотеки, компилирани за специфични CPU архитектури. Те съдържат машинен код, написан на C, C++ или Rust, който се изпълнява директно на процесора без допълнителни разходи на Dalvik/ART runtime.
Архитектурни варианти
- armeabi-v7a, 32-битов ARM (повечето по-стари устройства)
- arm64-v8a, 64-bit ARM (повечето модерни телефони)
- x86, 32-битов Intel/AMD (някои таблети и емулатори)
- x86_64, 64-битов Intel/AMD (Chromebook и емулатори)
Когато APK съдържа собствени библиотеки, той трябва да включва правилната архитектура за целевото устройство. Ако е включена грешна архитектура, приложението ще се срине с UnsatisfiedLinkError.
XML файлове в Android
Android широко използва XML, но в две различни форми:
Двоичен XML
В APK файловете XML ресурсите (оформления, манифести, низови файлове) се съхраняват в компилиран двоичен формат, наречен AXML. Този формат е по-компактен и по-бърз за анализиране от текстов XML. Инструменти като aapt2 или apktool могат да декомпилират двоичен XML обратно до четим текст.
Текст XML
По време на разработката XML файловете са в стандартен текстов формат. Процесът на изграждане ги компилира в двоичен XML за включване в APK. Конфигурационните файлове като network_security_config.xml и ресурсните файлове в директорията res/ започват като текстов XML.
Файлове за картографиране на ProGuard/R8
Въпреки че не е специфичен за Android формат, файловете за картографиране (mapping.txt) са важни за разбирането на обфусцираните приложения. Когато разработчиците използват инструменти за свиване на кода като R8, имената на класове и методи се заменят с кратки, безсмислени идентификатори. Файлът за картографиране записва преводите на имената от оригинал към маскирани, които са от съществено значение за четене на доклади за сривове.
Формат за архивиране на Android (AB)
Файловете с разширение .ab са архивни архиви на Android, създадени от adb backup. Те съдържат tar архив (по избор компресиран и криптиран) на директорията с данни на приложението. Този формат е остарял в полза на базирани на облак решения за архивиране, но все още се използва от някои инструменти за архивиране.
IMG и изображения на дялове
Въпреки че не са свързани с приложението, системните изображения на Android използват няколко формата, които си заслужава да бъдат споменати:
- system.img: Системният дял само за четене, съдържащ рамката на Android и предварително инсталирани приложения
- boot.img: Съдържа Linux ядрото и първоначалния ramdisk
- vendor.img: Драйвери и фърмуер, специфични за хардуера
- super.img: Контейнер за динамичен дял, използван в съвременни устройства (Android 10+)
Таблица за сравнение на формати
Ето бърза справка, сравняваща основните формати за разпространение на приложения:
- APK: Един файл, директно инсталиран, универсален (включени всички конфигурации), по-голям размер
- AAB: Формат за публикуване, който не може да се инсталира директно, изисква обработка от Play Store
- Контейнер XAPK: (APK + OBB/разделя), изисква инсталатор или извличане, използва се от APKPure
- Контейнер APKS: (разделени APK файлове), формат на bundletool, изисква инсталатор или обединяване
- Контейнер APKM: (разделени APK файлове), формат APKMirror, изисква техния инсталатор
Избор на правилния инструмент
В зависимост от формата, с който работите, са подходящи различни инструменти:
- Имате XAPK? Използвайте нашия XAPK към APK конвертор, за да извлечете инсталируемия APK
- Имате AAB? Използвайте нашия AAB към APK конвертор, за да генерирате универсален APK
- Имате разделени APK файлове (APKS)? Използвайте нашия APKS към APK сливане, за да ги комбинирате
- Трябва да потвърдите APK? Използвайте нашия APK верификатор за проверка на подписи
- Нуждаете се от OBB файлове от XAPK? Използвайте нашия OBB екстрактор, за да разопаковате разширителни файлове
Кой формат на пакет за Android трябва да използвате?
Разнообразието от файлови формати на екосистемата на Android отразява еволюцията на платформата от прости еднофайлови APK до сложни модулни системи за доставка. Всеки формат съществува, за да реши конкретен проблем: AAB намаляват размерите на изтегляне, XAPK опростяват разпространението на многофайлови приложения, OBB обработват големи данни за играта, а разделените APK позволяват оптимизация за конкретно устройство.
След като разберете тези формати, можете да се справите с всеки Android пакет, с който се сблъскате, независимо дали зареждате приложения отстрани, архивирате устройството си или разработвате свои собствени приложения. Основният извод е, че повечето от тези формати в крайна сметка са контейнери, които съдържат APK файлове в различни конфигурации и с правилните инструменти винаги можете да извлечете това, от което се нуждаете.