Как работает APK и чем он отличается от AAB
APK — это установочный файл Android (.apk), содержащий байт‑код приложения, ресурсы и манифест; AAB (Android App Bundle) — бандл для публикации в Google Play, из которого магазин генерирует оптимизированные APK под конкретное устройство. Ниже — практический разбор, что внутри APK, когда использовать каждый формат и как безопасно устанавливать и подписывать приложение.
Что такое APK и из чего состоит файл
APK — это ZIP‑архив с фиксированной структурой, созданный при сборке приложения. Внутри обычно есть:
- classes.dex — скомпилированный код (Dalvik/ART). Может быть несколько файлов при multidex.
- AndroidManifest.xml — описание разрешений, компонентов и минимальной версии SDK.
- res/ и resources.arsc — ресурсы (layout, drawables, строки).
- assets/ — произвольные файлы (базы, шрифты).
- META-INF/ — подпись и сертификаты (MANIFEST.MF, CERT.RSA). APK подписан разработчиком: без корректной подписи система не позволит установку и обновления.
Можно распаковать .apk любым архиватором, чтобы просмотреть структуру, но это не заменяет анализ кода и подписи.
APK vs AAB — ключевые отличия и когда что выбрать
- Формат: APK — готовый для установки файл; AAB — бандл для магазина, содержащий модули.
- Распространение: APK удобно для sideload (вне магазина), тестов и корпоративной установки; AAB обязателен для загрузки новых приложений в Google Play (с 2021 года) и экономит трафик пользователей.
- Размер: AAB позволяет Google Play генерировать оптимизированные APK (split/feature delivery), уменьшая размер загрузки на ~15–30%.
- Контроль: с APK вы получаете универсальный файл для всех архитектур; с AAB вы делегируете сборку магазина, но теряете прямой контроль над финальным APK для пользователя.
Коротко: если вы публикуете в Play — используйте AAB; если нужен прямой установочный файл или обход магазина — используйте APK (с правильной подписью и мерами безопасности).
Как безопасно установить и подписать APK
- Подпись: в Android Studio — Build → Generate Signed Bundle/APK. Создайте keystore (храните ключ надежно) и подпишите release‑сборку. Для Play используется upload‑key.
- Установка: на Android 8+ включается разрешение для конкретного приложения (устанавливающего APK). Проверяйте цифровую подпись и хэш файла.
- Проверка: перед установкой сверяйте подпись с известной версией приложения; используйте adb install -r для обновлений при тестировании.
- Риски: устанавливайте APK только из доверенных источников и сканируйте файлы — sideloading повышает риск вредоносного ПО.
Установка APK из неизвестных источников — частая причина заражения. Не устанавливайте APK с сомнительных сайтов и не игнорируйте подпись.
Частые ошибки
- Установка unsigned или самодельной подписи вместо оригинальной — приведёт к конфликту при обновлении.
- Попытка установить APK, собранный под другую архитектуру, без split‑вариантов — возможен отказ.
- Хранение keystore в ненадёжном месте — потеря ключа делает невозможным обновление приложения в Play.
FAQ
-
Нужно ли мне всегда переходить на AAB?
Если вы публикуете в Google Play — да, AAB обязателен для новых приложений; для внутреннего распространения APK остаётся актуален. -
Чем отличается upload‑key от ключа подписи?
Upload‑key подписывает бандл, который вы загружаете в Play; Google затем подписывает финальные APK своим ключом (Play App Signing). -
Как проверить, что APK безопасен?
Сверьте подпись с официальной, проверьте хэш файла, используйте встроенные или внешние средства анализа и не доверяйте незнакомым источникам. -
Можно ли конвертировать AAB в APK локально?
Да: с помощью bundletool можно сгенерировать device‑specific APK из AAB, но это требует доступа к bundle и конфигурации.
Если нужно, добавлю пошаговую инструкцию для подписи в Android Studio или команды adb для установки APK.