← Назад к вопросам

В чём разница между APK и AAB?

1.7 Middle🔥 182 комментариев
#Unity Core#Оптимизация

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между APK и AAB: форматы распространения Android-приложений

APK (Android Package Kit) и AAB (Android App Bundle) — это два формата для упаковки и распространения приложений на Android, но они принципиально различаются по цели, структуре и процессу доставки конечному пользователю. Работая Unity-разработчиком, важно понимать эти различия для оптимизации публикации в Google Play.

APK: традиционный универсальный пакет

APK — это исполняемый файл-архив (ZIP-формат), содержащий весь код, ресурсы, библиотеки и манифест приложения. Это конечный файл, который пользователь скачивает и устанавливает на своё устройство.

  • Как создаётся в Unity: В Build Settings выбирается платформа Android, затем генерируется единый APK-файл.
    // Пример: Условная компиляция для разных APK-версий в коде
    #if UNITY_ANDROID
        Debug.Log("Сборка для Android APK");
    #endif
    
  • Ключевые характеристики APK:
    *   **Монолитный**: Один файл содержит всё для всех устройств.
    *   **Прямая установка**: APK можно установить напрямую на устройство (сайдинглоуд).
    *   **Неоптимальный размер**: Включает ресурсы для всех плотностей пикселей (DPI), архитектур процессора (ARMv7, ARM64, x86) и языков, что увеличивает размер.
    *   **Несколько APK**: Для оптимизации раньше приходилось создавать и поддерживать несколько APK под разные конфигурации.

AAB: публикационный формат для Google Play

AAB — это формат для публикации, а не для прямой установки. Это набор всех скомпилированных ресурсов и кода приложения, из которого Google Play Store динамически генерирует оптимизированные APK для каждого конкретного устройства пользователя.

  • Как создаётся в Unity: В том же меню Build Settings теперь нужно выбрать Android App Bundle вместо APK.
    // Для AAB часто актуальна проверка на загрузку ассет-бандлов
    if (Application.platform == RuntimePlatform.Android) {
        StartCoroutine(LoadDeviceSpecificAssets());
    }
    
  • Ключевые характеристики AAB:
    *   **Архитектурный набор (Bundletool)**: Содержит "сырые" активы, код и ресурсы. Google Play использует утилиту `bundletool` для генерации APK.
    *   **Динамическая доставка**: Пользователь скачивает только те ресурсы, которые нужны **его** устройству (определённая DPI, язык, архитектура CPU). Это экономит трафик и место.
    *   **Функции динамической загрузки**: Поддержка **Dynamic Delivery** — возможность выгрузки неиспользуемых функций или загрузки дополнительных ресурсов по требованию.
    *   **Обязателен для новых приложений**: Начиная с августа 2021, все новые приложения в Google Play обязаны использовать AAB.

Сравнительная таблица

КритерийAPK (Android Package)AAB (Android App Bundle)
НазначениеФайл для прямой установкиФормат для публикации в Google Play
Размер загрузкиБольше (все ресурсы)Меньше (только для целевого устройства)
УправлениеНесколько APK под разные конфигурацииОдин AAB для всех устройств
Динамическая доставкаНет или ограниченаПолная поддержка (модули, функции по требованию)
Требование Play StoreУстаревший формат, используется для сторонних магазиновОбязателен для новых приложений
УстановкаПрямая (сайдинглоуд, сторонние магазины)Только через Google Play (который генерирует APK)

Практические выводы для Unity-разработчика

  1. Публикация в Google Play: Собирайте AAB. Это стандарт, который обеспечивает автоматическую оптимизацию и упрощает жизнь.
  2. Тестирование и адхо́к-распространение: Для передачи тестерам вне Play Store или внутреннего тестирования часто удобнее использовать APK. Unity легко позволяет переключаться между форматами сборки.
  3. Размер сборки: При использовании AAB итоговый .aab-файл в папке Build будет весить примерно столько же, сколько универсальный APK. Однако размер загрузки для пользователя в магазине (Download Size) будет существенно меньше.
  4. Настройка проекта Unity: Для AAB критически важно правильно настроить Player Settings:
    *   Выбрать поддерживаемые архитектуры (ARMv7, ARM64 обычно достаточно).
    *   Оптимизировать размер текстур (использовать форматы ASTC).
    *   При необходимости настроить разделение на **AssetBundles** для ещё более тонкого контроля.

Итог: APK — это готовый к установке конечный продукт, а AAB — это "исходник" для магазина, который позволяет системе автоматически собрать оптимальный APK под каждое устройство. Переход на AAB — это важный шаг в современной разработке под Android, направленный на улучшение пользовательского опыта за счёт экономии трафика и памяти.

В чём разница между APK и AAB? | PrepBro