Unity на Android: полное руководство по настройке и сборке

Ошибка «Android SDK not found» при первой сборке проекта в Unity — самая частая причина, по которой разработчики застревают на этапе портирования игры на смартфон. Причина почти всегда одна: модуль Android Build Support не был установлен вместе с редактором, либо путь к SDK задан вручную и указывает на несуществующую папку. Проверить это можно за минуту через Edit → Preferences → External Tools.

В этой статье разберём полный цикл работы с Unity на Android: от установки нужных компонентов до сборки готового APK или AAB-файла и тестирования на реальном устройстве. Отдельно рассмотрим типовые ошибки сборки и способы их диагностики без риска сломать проект.

Установка Unity с поддержкой Android

Начинать нужно с Unity Hub — официального менеджера версий редактора. При установке любой версии Unity Hub предлагает список модулей, и именно здесь кроется первый подводный камень: по умолчанию ставится только редактор под Windows или macOS, а платформенные модули нужно отметить вручную.

Для работы с Android отметьте галочку Android Build Support. Вместе с ним автоматически подтянутся три связанных компонента: Android SDK & NDK Tools и OpenJDK. Это избавит от ручной настройки Java и SDK — Unity будет использовать свои проверенные версии.

  • 📦 Android Build Support — основной модуль для сборки под Android
  • 🛠️ Android SDK & NDK Tools — инструменты компиляции и отладки
  • OpenJDK — среда Java, необходимая для Gradle-сборки
  • 🖼️ Windows/Mac IL2CPP — понадобится для сборки в 64-битной архитектуре

Проверка путей к SDK, NDK и JDK

После установки откройте в редакторе Edit → Preferences → External Tools. Напротив пунктов JDK, Android SDK и Android NDK должны стоять галочки, а пути должны вести в папку внутри каталога установки Unity. Если галочка снята и поле пустое — сборка гарантированно упадёт с ошибкой.

Ручную установку Android Studio и отдельного SDK для базовой сборки под Unity делать не обязательно. Она понадобится только в специфических случаях: например, когда нужен эмулятор с конкретной версией системы или продвинутая отладка через Android Profiler.

⚠️ Внимание: не указывайте вручную путь к SDK, скачанному отдельно, если не уверены в совместимости версий. Unity жёстко привязан к конкретным версиям NDK, и несовпадение приводит к неочевидным ошибкам компиляции нативного кода. Точные требования к версиям указаны в официальной документации для вашей версии редактора.

Настройка проекта под Android

Переключение целевой платформы выполняется через File → Build Settings. Выберите в списке платформ Android и нажмите Switch Platform. Первое переключение может занять заметное время — Unity переимпортирует все ассеты под новую платформу, и на больших проектах это минуты, а не секунды.

Далее откройте Edit → Project Settings → Player и заполните ключевые параметры. Без них собранное приложение либо не установится, либо будет отклонено при публикации в Google Play.

  • 🏷️ Package Name — уникальный идентификатор вида com.company.gamename
  • 🔢 Version и Bundle Version Code — версия приложения и её числовой код
  • 📱 Minimum API Level — минимальная версия Android, на которой запустится игра
  • 🎯 Target API Level — целевая версия; для публикации в Google Play действуют требования к её актуальности, уточняйте их в консоли разработчика
📊 На каком этапе работы с Unity под Android у вас возникали сложности?
Установка SDK и модулей
Ошибки при сборке APK
Настройка подписи и публикация
Оптимизация производительности

Сборка APK и AAB: пошаговая инструкция

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

Порядок сборки выглядит так:

☑️ Чек-лист перед сборкой

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

После нажатия Build Unity запустит Gradle-сборку. Первый раз она идёт заметно дольше последующих — скачиваются зависимости и компилируется нативный код. Готовый файл появится в выбранной вами папке.

Зачем нужен IL2CPP вместо Mono

Mono — более быстрый вариант сборки для отладки, но он поддерживает только 32-битную архитектуру. Google Play требует наличия 64-битной версии, которую даёт только IL2CPP: C#-код транслируется в C++ и компилируется нативно. Сборка дольше, но производительность в релизе выше.

Сравнение Mono и IL2CPP

ПараметрMonoIL2CPP
Скорость сборкиБыстраяМедленная
Поддержка ARM64НетДа
Производительность в релизеСредняяВыше
Отладка кодаПрощеСложнее
Пригодность для Google PlayОграниченаПолная

Практический вывод прост: для ежедневной разработки и быстрых тестов используйте Mono, а релизную сборку всегда делайте на IL2CPP с архитектурой ARM64.

Тестирование на реальном устройстве

Чтобы установить APK на смартфон, включите на устройстве режим разработчика и отладку по USB. Обычно режим разработчика активируется многократным нажатием на пункт «Номер сборки» в разделе «О телефоне», но точный путь зависит от оболочки производителя — сверьтесь с инструкцией к вашей модели.

Подключите смартфон кабелем, разрешите отладку в диалоге на экране устройства, после чего в Unity станет доступна опция Build And Run — сборка автоматически установится и запустится на телефоне. Для просмотра логов в реальном времени используйте консоль Android Logcat, которую можно подключить как пакет через Package Manager.

⚠️ Внимание: если устройство не определяется, проверьте кабель (часть кабелей поддерживает только зарядку), установку драйверов производителя на ПК и подтверждение диалога отладки на самом смартфоне. Не меняйте системные настройки устройства, если не уверены в их назначении.

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

Большинство сбоев при сборке под Android сводится к нескольким повторяющимся сценариям. Разберём их по симптомам.

«SDK not found» или «Unable to locate Android SDK» — проверьте галочки в Preferences → External Tools. Если модуль установлен, но ошибка остаётся, попробуйте снять и заново поставить галочку, чтобы Unity перечитал путь.

Ошибки Gradle — самая размытая категория. Частая причина — конфликт плагинов или повреждённый кэш. Безопасный первый шаг: удалить папки Library и Temp в корне проекта при закрытом редакторе и пересобрать. Проект при этом не пострадает — Unity пересоздаст эти каталоги автоматически, хотя первый запуск займёт время.

Дублирование классов (duplicate classes) — возникает, когда два плагина тянут одну и ту же библиотеку. Здесь нужно найти конфликтующие AAR/JAR-файлы в папке Assets/Plugins/Android и оставить одну версию. Если проект использует External Dependency Manager (Play Services Resolver), попробуйте пункт Assets → External Dependency Manager → Android Resolver → Force Resolve.

Никогда не удаляйте папку Assets и не правьте файлы манифеста вслепую — сначала сделайте резервную копию проекта или убедитесь, что он под контролем версий.

Подпись приложения и публикация

Для установки релизной сборки и публикации в Google Play приложение должно быть подписано keystore-файлом. Создать его можно прямо из Unity: Player Settings → Publishing Settings → Keystore Manager. Храните файл ключа и пароли в надёжном месте — потеря ключа означает невозможность обновлять опубликованное приложение под тем же идентификатором.

При использовании Play App Signing в консоли Google Play часть забот о ключе берёт на себя Google, но локальный upload-ключ всё равно нужно беречь. Детали схемы подписи зависят от настроек вашего приложения в консоли, поэтому ориентируйтесь на актуальную документацию Google Play.

Часто задаваемые вопросы

Можно ли разрабатывать на Unity под Android без Android Studio?

Да. Модуль Android Build Support включает собственные SDK, NDK и OpenJDK, которых достаточно для сборки APK и AAB. Android Studio понадобится только для эмуляторов и продвинутой отладки.

Почему первая сборка занимает так много времени?

При первой сборке Unity переимпортирует ассеты под новую платформу, скачивает Gradle-зависимости и компилирует нативный код. Последующие сборки проходят значительно быстрее за счёт кэша.

Чем APK отличается от AAB?

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

Игра тормозит на телефоне, хотя в редакторе работает плавно. Что проверить?

Соберите релизную версию на IL2CPP вместо Mono, проверьте размер и сжатие текстур в настройках импорта, а также количество вызовов отрисовки через встроенный Profiler. Отладочные сборки всегда медленнее релизных.

Безопасно ли удалять папку Library при ошибках сборки?

Да, при закрытом редакторе это безопасно: Unity полностью пересоздаст папку при следующем запуске проекта. Учтите только, что переимпорт всех ассетов займёт время, особенно на крупных проектах.