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

APK-файл — пакет Android-приложений

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

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

APK-файл содержит набор обязательных и необязательных компонентов:

КомпонентНазначение
classes.dexСкомпилированный байт-код Dalvik/ART (DEX-формат)
AndroidManifest.xmlМанифест с описанием компонентов, разрешений, версии
resources.arscСкомпилированные ресурсы (строки, стили)
res/Необработанные ресурсы: изображения, layout-файлы, анимации
assets/Свободные файлы приложения (конфигурации, шрифты, базы данных)
lib/Нативные библиотеки .so для разных ABI (armeabi-v7a, arm64-v8a, x86 и др.)
META (организация признана экстремистской, деятельность запрещена в РФ)-INF/Цифровая подпись (сертификат, манифест подписи, список файлов)
kotlin/Метаданные Kotlin (для приложений, написанных на Kotlin)

Файл AndroidManifest.xml хранится в бинарном XML-формате и содержит ключевые сведения: имя пакета, версию приложения (versionCode, versionName), перечень Activity, Service, BroadcastReceiver и ContentProvider, запрашиваемые разрешения, минимальную и целевую версию API.

Установка

В стандартной конфигурации Android установка APK выполняется через пакетный менеджер системы. По умолчанию установка приложений из сторонних источников (sideload) отключена: операционная система разрешает установку только из магазина Google Play и доверенных магазинов. Для установки APK-файла вручную необходимо включить разрешение «Установка из неизвестных источников» в настройках безопасности.

При установке пакетный менеджер распаковывает архив, проверяет цифровую подпись, сравнивает имя пакета с уже установленными приложениями и запрашивает у пользователя подтверждение. Если приложение уже установлено, система проверяет совместимость подписи: обновление невозможно, если новая версия подписана другим ключом.

Способы распространения

APK-файлы распространяются несколькими способами:

  • Google Play — основной канал дистрибуции; магазин использует внутренний формат, но в основе лежит тот же APK.
  • Сторонние магазины — RuStore, AppGallery, F-Droid, Amazon Appstore и другие.
  • Прямая загрузка — скачивание APK с веб-сайтов и последующая ручная установка.
  • ADB — установка через отладочный мост Android Debug Bridge командой adb install.
  • Файловые менеджеры — открытие APK через файловый менеджер запускает пакетный установщик.

Форматы-преемники

С 2021 года Google продвигает формат AAB (Android App Bundle) как предпочтительный формат публикации в Google Play. AAB содержит весь код и ресурсы, но не является готовым к установке пакетом: из него генерируются оптимизированные APK под конкретное устройство (процедура доставки называется Dynamic Delivery). Пользователь при этом получает установочный APK, но не имеет к нему прямого доступа.

Для обхода лимита размера APK в 100 МБ Google Play использует расширение XAPK (Expansion File), а также механизм динамической загрузки модулей. Формат APKS — набор APK, создаваемый инструментом Bundletool для локальной установки AAB.

Безопасность

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

Для проверки подлинности используются утилиты apksigner и jarsigner из Android SDK, а также хеш-сравнение с эталоном, опубликованным разработчиком. Многие антивирусы и сервисы (например, VirusTotal) анализируют APK-файлы на наличие опасных разрешений и подозрительного поведения.

Инструменты для работы с APK

Для анализа и модификации APK используются:

  • apktool — декомпиляция ресурсов и манифеста в читаемый вид, обратная сборка.
  • jadx — декомпиляция DEX-байт-кода в Java-исходники.
  • Android SDK Build Tools — утилиты aapt, zipalign, apksigner.
  • Android Studio — сборка проекта в APK/AAB, подпись, отладка.

См. также

  • Android
  • Android Debug Bridge
  • Google Play
  • AAB (Android App Bundle)

Источники

  • Официальная документация Android Developers — developer.android.com
  • Android Open Source Project — source.android.com
  • Google Play Console Help
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru