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
