Экосистема 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/, каталог, содержащий ресурсы, такие как макеты, объекты рисования и строки, на которые ссылается идентификатор.
- assets/, необработанные файлы ресурсов, к которым приложение получает доступ во время выполнения через AssetManager.
- lib/, собственные библиотеки, организованные по архитектуре ЦП (например, lib/arm64-v8a/)
- META-INF/, файлы подписей и информация о сертификате
Когда вы сталкиваетесь с этим
APK-файлы — это то, что вы загружаете при загрузке приложений из сторонних источников. Они также устанавливаются на ваше устройство из Play Store, хотя в современных установках Play Store часто используются разделенные APK-файлы, созданные из пакетов приложений.
Как с этим справиться
APK-файлы можно установить непосредственно на Android, открыв их с помощью файлового менеджера или с помощью adb install. Вы также можете проверить их содержимое, переименовав расширение в .zip и распаковав его, или воспользовавшись нашим APK-верификатор для проверки подписей и метаданных.
AAB: пакет приложений для Android
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 — это результат работы Bundletool 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. Сайт использует этот формат для приложений, которые распространяются в Play Store в виде пакетов приложений и, следовательно, состоят из нескольких разделенных APK-файлов.
Как с этим справиться
Для прямой установки файлов APKM требуется приложение APKMirror Installer, или вы можете извлечь содержимое (поскольку это ZIP-файл) и установить разделенные APK вручную с помощью команды ADB install-multiple. Базовый APK-файл также можно извлечь и установить отдельно, хотя некоторые функции могут быть ограничены без разделения конфигурации.
Кэш: непрозрачный двоичный объект
Файлы OBB — это файлы расширения, используемые приложениями Android (в основном играми) для хранения больших объемов данных, которые превышают ограничение размера APK Play Store. Хотя Google в значительной степени заменил эту систему на Play Asset Delivery, многие существующие приложения по-прежнему используют файлы OBB.
Что он содержит
Файлы OBB могут содержать любые типы данных, необходимые приложению:
- Игровые текстуры и 3D модели
- Аудиофайлы и саундтреки
- Видеоконтент
- Данные уровня и карты
- Любые большие двоичные данные, которые разработчик решает хранить снаружи.
Формат данных в файле OBB полностью зависит от разработчика. Некоторые используют сжатие ZIP, другие используют собственные двоичные форматы. «Непрозрачный» в названии означает, что 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 («ограничение 64 КБ»). Приложения, превышающие этот предел, используют несколько файлов DEX (classes.dex, classes2.dex и т. д.) — метод, называемый мультидексом. Современные инструменты сборки справляются с этим автоматически.
Файлы ODEX, VDEX и ART.
Это оптимизированные версии файлов DEX, созданные средой выполнения Android во время или после установки:
- ODEX (Оптимизированный DEX): Содержит заранее скомпилированный машинный код для часто используемых методов. Generated during idle maintenance based on usage profiles.
- VDEX (проверенный DEX): Содержит проверенный байт-код DEX с предварительно вычисленными результатами проверки. Это ускоряет последующую загрузку и запуск приложений за счет пропуска повторной проверки.
- ART (образ среды выполнения Android): Содержит предварительно инициализированные объекты классов и данные кучи. Это позволяет среде выполнения пропускать загрузку и инициализацию общих классов платформы во время запуска.
Эти файлы генерируются системой и не являются чем-то, с чем пользователи обычно взаимодействуют напрямую. Они хранятся в /data/dalvik-cache/ или вместе с APK в /data/app/.
ТАК: общий объект (родные библиотеки)
Файлы с расширением .so представляют собой собственные общие библиотеки, скомпилированные для определенных архитектур ЦП. Они содержат машинный код, написанный на C, C++ или Rust, который выполняется непосредственно на процессоре без дополнительных затрат среды выполнения Dalvik/ART.
Варианты архитектуры
- armeabi-v7a, 32-битный ARM (большинство старых устройств)
- arm64-v8a, 64-битный 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 не связаны с приложениями, но используют несколько форматов, о которых стоит упомянуть:
- система.img: Системный раздел, доступный только для чтения, содержащий платформу Android и предустановленные приложения.
- загрузочный.img: Содержит ядро Linux и начальный виртуальный диск.
- поставщик.img: Драйверы и прошивки для конкретного оборудования
- супер.img: Контейнер динамических разделов, используемый в современных устройствах (Android 10+)
Таблица сравнения форматов
Вот краткий справочник, сравнивающий основные форматы распространения приложений:
- APK: Один файл, устанавливается напрямую, универсальный (все конфигурации включены), больший размер
- AAB: Формат публикации, не устанавливаемый напрямую, требует обработки в Play Store.
- XAPK: Container (APK + OBB/splits), требуется установщик или распаковка, используется APKPure
- APK: Контейнер (разделенные 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-файлы в различных конфигурациях, и с помощью правильных инструментов вы всегда можете извлечь то, что вам нужно.