Как работает 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

  1. Подпись: в Android Studio — Build → Generate Signed Bundle/APK. Создайте keystore (храните ключ надежно) и подпишите release‑сборку. Для Play используется upload‑key.
  2. Установка: на Android 8+ включается разрешение для конкретного приложения (устанавливающего APK). Проверяйте цифровую подпись и хэш файла.
  3. Проверка: перед установкой сверяйте подпись с известной версией приложения; используйте adb install -r для обновлений при тестировании.
  4. Риски: устанавливайте 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.