Как сделать APK в Unity: полная инструкция по сборке

Кнопка Build в Unity выдаёт ошибку «Android SDK not found» или собирает APK, который не устанавливается на телефон, — чаще всего причина в том, что Android Build Support не установлен через Unity Hub, либо в Player Settings не заполнены идентификаторы пакета. Сборка APK в Unity требует подготовки: сам движок не умеет компилировать под Android «из коробки», ему нужны SDK, NDK и JDK.

В этой статье разберём весь путь от установки модулей до готового файла .apk, который можно установить на смартфон или отправить тестировщику. Инструкция ориентирована на актуальные версии Unity LTS, но общая логика одинакова и для более старых редакций.

Что нужно перед сборкой APK

APK (Android Package Kit) — это установочный пакет для Android. Чтобы Unity мог его создать, на компьютере должны быть три компонента: Android SDK (инструменты платформы), NDK (нативная компиляция кода) и OpenJDK (Java-среда для сборщика Gradle).

Проще всего поставить всё сразу через Unity Hub. Откройте вкладку Installs, нажмите на шестерёнку у нужной версии редактора и выберите Add modules. В списке отметьте Android Build Support и обязательно разверните его — там должны стоять галочки на Android SDK & NDK Tools и OpenJDK.

  • 📦 Android Build Support — основной модуль экспорта под Android
  • 🛠️ SDK & NDK Tools — инструменты компиляции, ставятся вместе с модулем
  • OpenJDK — Java, необходимая для Gradle-сборки
  • 📱 Реальное устройство или эмулятор — для проверки результата
⚠️ Внимание: если вы установили модуль, но Unity всё равно пишет, что SDK не найден, проверьте пути в Edit → Preferences → External Tools. Там должны стоять галочки автоматического определения, либо пути нужно указать вручную на папки внутри каталога установки редактора.

Подготовка проекта: переключение платформы

Даже если проект планировался под Android с самого начала, платформа сборки в редакторе по умолчанию обычно стоит на PC. Переключение выполняется через меню File → Build Settings. В списке платформ выберите Android и нажмите Switch Platform.

Процесс переключения может занять заметное время — Unity переимпортирует все ассеты под целевую платформу. Это нормально: текстуры сжимаются в форматы, понятные мобильным GPU, а аудио перекодируется. На больших проектах запаситесь терпением.

В этом же окне проверьте список сцен: в сборку попадут только те, что добавлены в Scenes In Build. Новички часто забывают этот шаг и получают APK, который запускается с пустым экраном или сразу закрывается.

📊 На каком этапе сборки APK в Unity вы чаще всего застреваете?
Установка Android SDK/NDK
Настройка Player Settings
Ошибки Gradle при сборке
Подпись и установка на устройство

Настройка Player Settings

Кнопка Player Settings внизу окна Build Settings открывает главный конфигурационный файл сборки. Здесь есть два обязательных поля, без которых сборка либо не пройдёт, либо создаст конфликтующий пакет.

Первое — Package Name (Application ID) в разделе Other Settings → Identification. Формат — обратный домен, например com.mycompany.mygame. Значение по умолчанию com.Company.ProductName обязательно поменяйте: два приложения с одинаковым идентификатором не могут сосуществовать на одном устройстве, и Google Play такой пакет не примет.

Второе — Minimum API Level. От него зависит, на каких версиях Android запустится игра. Слишком низкое значение расширяет аудиторию, но тянет устаревшие зависимости; слишком высокое отсечёт старые устройства. Ориентируйтесь на требования целевой площадки распространения — у Google Play есть актуальные требования к целевому API, которые периодически повышаются.

Выбор backend: Mono или IL2CPP

В разделе Other Settings → Configuration находится параметр Scripting Backend. От него зависит, как ваш C#-код превратится в исполняемый файл.

ПараметрMonoIL2CPP
Скорость сборкиБыстраяЗаметно медленнее
Производительность в игреБазоваяОбычно выше
Поддержка ARM64НетДа
Требование Google PlayНе подходит для публикацииОбязателен для 64-бит
Когда использоватьБыстрые тестовые сборкиРелиз и публикация

Для итогового релиза выбирайте IL2CPP и в Target Architectures отмечайте ARM64 — без 64-битной архитектуры Google Play не примет сборку. Для быстрой проверки на своём телефоне достаточно Mono с ARMv7.

Подпись APK: Keystore

Android не установит неподписанный пакет. Для тестовой установки Unity может подписать APK встроенным debug-ключом автоматически, но для релиза нужен собственный Keystore — файл с цифровым ключом разработчика.

Создаётся он прямо из редактора: Player Settings → Publishing Settings → Keystore Manager. Задайте имя файла, пароль и данные ключа. Храните этот файл и пароли в надёжном месте вне папки проекта — потеря keystore означает, что обновлять опубликованное приложение вы больше не сможете, восстановить ключ невозможно.

⚠️ Внимание: не коммитьте keystore и пароли в публичный репозиторий вместе с исходниками. Любой, получивший доступ к ключу, сможет выпускать обновления от вашего имени.

Запуск сборки и установка на устройство

Когда всё настроено, вернитесь в File → Build Settings и нажмите Build. Укажите папку и имя файла — Unity запустит Gradle и через несколько минут выдаст готовый APK. Первая сборка всегда дольше последующих: скачиваются зависимости и компилируется нативный код.

☑️ Чек-лист перед нажатием Build

Выполнено: 0 / 6

Дальше файл нужно попасть на телефон. Самый простой способ — скопировать APK на устройство по USB или через мессенджер и открыть его файловым менеджером. Android спросит разрешение на установку из неизвестных источников — это стандартное предупреждение для любых пакетов не из магазина.

Альтернатива — кнопка Build And Run: Unity сам установит APK на подключённое устройство с включённой отладкой по USB (включается в настройках разработчика телефона). Это быстрее при частых итерациях тестирования.

Как включить режим разработчика на Android

Откройте «Настройки → О телефоне» и несколько раз нажмите на пункт «Номер сборки», пока не появится уведомление о включении режима разработчика. Затем в разделе «Для разработчиков» активируйте «Отладку по USB». Точные названия пунктов зависят от оболочки производителя.

Типичные ошибки сборки и их решения

Ошибка Gradle build failed — самая частая и самая неинформативная. Откройте окно Console и прокрутите лог выше: реальная причина обычно в первых красных строках, а не в финальном сообщении об отказе.

  • 🔧 SDK/NDK не найдены — проверьте пути в Preferences → External Tools
  • 📛 Duplicate class / конфликт библиотек — часто возникает из-за плагинов с одинаковыми Android-зависимостями; попробуйте удалить дубли из папки Plugins/Android
  • 💾 Не хватает памяти или места на диске — сборка IL2CPP требовательна к ресурсам, закройте тяжёлые приложения
  • 🔑 Ошибка подписи — неверный пароль keystore или повреждённый файл ключа

Если ничего не помогает, рабочий приём — удалить папки Library и Temp в корне проекта (при закрытом редакторе) и пересобрать. Unity пересоздаст их автоматически, а застрявшие кэши сборки исчезнут.

⚠️ Внимание: перед удалением папки Library убедитесь, что проект закрыт и у вас есть резервная копия. Переимпорт всех ассетов на большом проекте займёт продолжительное время.

APK или AAB: что выбрать для публикации

В Build Settings есть галочка Build App Bundle (Google Play). Она переключает вывод в формат AAB — именно его требует Google Play для новых публикаций. AAB нельзя установить на телефон напрямую: магазин сам формирует из него оптимизированные APK под конкретное устройство.

Для личного тестирования и распространения вне магазина оставляйте классический APK. Для загрузки в Google Play Console — собирайте AAB. Оба варианта собираются из одного проекта без дополнительных настроек.

Частые вопросы

Сколько весит пустой APK из Unity?

Даже пустой проект даёт пакет заметного размера из-за встроенного рантайма движка. Уменьшить вес помогают сжатие текстур, отключение неиспользуемых пакетов в Package Manager и сборка через IL2CPP с включённым Strip Engine Code.

Можно ли собрать APK без Unity Hub?

Технически да — SDK, NDK и JDK можно установить отдельно и прописать пути вручную в External Tools. Но версии компонентов должны совпадать с теми, что ожидает ваша версия редактора, поэтому установка через Hub надёжнее.

Почему APK устанавливается, но вылетает при запуске?

Частые причины: сцена не добавлена в Scenes In Build, игра запрашивает разрешения, не объявленные в манифесте, либо устройство не поддерживает выбранную архитектуру. Подключите телефон по USB и смотрите логи через adb logcat или консоль Unity с Development Build.

Нужен ли платный аккаунт Unity для сборки APK?

Нет, сборка под Android доступна в бесплатной версии Unity Personal. Ограничения касаются только годового дохода компании и некоторых сервисных функций, а не экспорта сборок.

Чем AAB отличается от APK при тестировании?

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