Открыть сервисСервис

Формат APK Android Package

APK (сокращение от англ. Android Package) — формат файлов и архивов, используемый операционной системой Android для распространения, установки и хранения приложений. Файл с расширением .apk представляет собой архив в формате ZIP, содержащий весь код, ресурсы, манифест и служебные данные, необходимые для работы программы на устройстве под управлением Android. APK является основным способом установки приложений вне магазина Google Play, а также форматом, через который пакеты дистрибутируются в самом магазине.

Структура файла

APK-файл по внутреннему устройству является обычным ZIP-архивом, что позволяет открывать его любым архиватором. Стандартный набор компонентов включает:

  • classes.dex — скомпилированный байт-код Dalvik/ART, исполняемый виртуальной машиной Android;
  • resources.arsc — скомпилированный файл ресурсов (строки, стили, идентификаторы);
  • AndroidManifest.xml — манифест приложения в бинарном XML-формате, описывающий компоненты (активности, сервисы, приёмники), необходимые разрешения и целевые версии API;
  • res/ — каталог с ресурсами: изображения, layout-файлы, значения строк;
  • assets/ — произвольные файлы приложения, доступные через AssetManager;
  • lib/ — скомпилированные нативные библиотеки .so для различных ABI (armeabi-v7a, arm64-v8a, x86, x86_64);
  • META (организация признана экстремистской, деятельность запрещена в РФ)-INF/ — служебная информация, включая криптографические подписи (CERT.RSA, CERT.SF, MANIFEST.MF), подтверждающие целостность пакета и его авторство.

Подпись и безопасность

Каждый APK подписывается цифровой подписью разработчика. Android проверяет подпись при установке и при последующих обновлениях: обновить приложение можно только пакетом, подписанным тем же ключом. Это гарантирует, что обновление исходит от того же разработчика и не подменяет приложение вредоносной версией. Система разрешений, указанных в манифесте, ограничивает доступ приложения к функциям устройства: камере, контактам, геолокации, сети и другим ресурсам. Начиная с Android 6.0 (API 23) разрешения чувствительных категорий запрашиваются у пользователя во время работы, а не только при установке.

Установка вне магазина

Установка APK-файлов вне Google Play (так называемая «сайдлоадная» установка) требует от пользователя явного разрешения в настройках безопасности — «Установка из неизвестных источников». В зависимости от версии Android эта опция может быть общей для системы или выдаваться отдельно каждому приложению-посреднику (например, файловому менеджеру или браузеру), из которого запускается установщик. Сам процесс установки выполняется системным компонентом Package Installer, который распаковывает архив, проверяет подпись, регистрирует приложение в системе и размещает его данные в изолированных каталогах /data/app и /data/data.

AAB и современные тенденции

С 2021 года Google Play требует от новых разработчиков публиковать приложения в формате AAB (Android App Bundle) — формате динамической доставки, при котором магазин генерирует оптимизированный APK под конкретное устройство пользователя (только нужные ABI, плотность экрана, языковые ресурсы). Пользователь при этом получает пакет в стандартном APK, но автоматически собранный магазином. Формат APK продолжает использоваться для прямой установки, тестирования, распространения через сторонние каталоги (F-Droid, Huawei AppGallery, Amazon Appstore) и внутренней дистрибуции в организациях.

Разработка и сборка

APK-файлы формируются в процессе сборки проекта в Android Studio с помощью системы Gradle. На этапе сборки исходный код компилируется в байт-код, ресурсы обрабатываются aapt2, нативные библиотеки собираются через NDK, после чего всё упаковывается в архив и подписывается ключом разработчика. Для отладки используются отдельные варианты пакетов (debug-сборки), подписанные автоматически генерируемым ключом, и расширение .apk с суффиксом -debug. Выпускные (release) сборки подписываются личным ключом разработчика, который необходимо сохранять на протяжении всего жизненного цикла приложения.

Ограничения и альтернативы

Исходный формат APK имеет ограничение в 4 ГБ на размер архива, что исторически привело к появлению расширений APK Expansion (.obb) для крупных игр и приложений. С переходом на AAB эта проблема частично решена за счёт динамической доставки ресурсов. Альтернативные форматы установки включают APKM и XAPK (используемые некоторыми магазинами для многокомпонентных пакетов), а также форматы для других платформ — IPA для iOS и MSIX для Windows.

Источники:

  • Официальная документация Android Developers (developer.android.com)
  • Android Open Source Project — Package Manager (source.android.com)
  • Google Play Console — Publishing documentation
  • «Android Internals: A Confectioner's Cookbook» — Jonathan Levin
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru