Ошибка SDK not set up correctly при попытке собрать проект под Android в Unreal Engine почти всегда означает, что движок не находит пути к Android SDK, NDK или JDK — и это первое, что нужно проверить в настройках Project Settings → Platforms → Android SDK. Без корректно прописанных путей ни одна сборка не уйдёт на устройство, даже если сам проект полностью рабочий.
Разработка мобильных игр на Unreal Engine под Android — рабочий сценарий, который Epic Games поддерживает официально. Однако в отличие от сборки под Windows, здесь требуется дополнительная цепочка инструментов: Android Studio, SDK, NDK и Java. В этой статье разберём настройку окружения, требования к устройству, процесс сборки и типичные проблемы, с которыми сталкиваются разработчики.
Что нужно для разработки под Android на Unreal Engine
Прежде чем открывать проект, убедитесь, что на компьютере установлены все компоненты цепочки сборки. Движок сам по себе не умеет компилировать под Android — он использует внешние инструменты Google.
- 🛠️ Android Studio — источник SDK и инструментов командной строки.
- 📦 Android SDK — платформенные библиотеки и
platform-toolsс утилитойadb. - ⚙️ Android NDK — нужна строго определённая версия, указанная в документации для вашей версии Unreal Engine; «свежая» NDK может не поддерживаться.
- ☕ JDK — версия Java также зависит от версии движка, сверяйтесь с официальной документацией Epic Games.
- 📱 Android-устройство с включённой отладкой по USB или эмулятор.
⚠️ Внимание: версии NDK и JDK жёстко привязаны к версии Unreal Engine. Установка «последней доступной» NDK — частая причина ошибок компиляции. Точную совместимую версию смотрите в официальной документации Epic Games для вашей версии движка, а не в сторонних инструкциях.
Для упрощения настройки Epic Games поставляет скрипт SetupAndroid.bat в папке Engine/Extras/Android. Он скачивает и устанавливает проверенные версии компонентов — это самый безопасный путь для новичка.
Настройка SDK и переменных окружения
После установки компонентов откройте проект и перейдите в Edit → Project Settings → Platforms → Android SDK. Здесь указываются пути к SDK, NDK, JDK и Android Studio. Если поля пустые, движок попробует найти инструменты автоматически, но автопоиск срабатывает не всегда.
Если пути приходится вводить вручную, указывайте корневые папки установки, а не вложенные каталоги. Типичная ошибка — указать путь к platform-tools вместо корня SDK. После ввода путей перезапустите редактор, чтобы изменения применились.
☑️ Проверка готовности окружения к сборке
Настройка проекта под Android
В разделе Project Settings → Platforms → Android нажмите кнопку конфигурации проекта — движок создаст необходимые манифесты и файлы сборки. Здесь же задаётся имя пакета, ориентация экрана, поддерживаемые архитектуры и разрешения.
Обратите внимание на выбор графического API. Современные версии движка работают с Vulkan и OpenGL ES. Vulkan даёт лучшую производительность на поддерживаемых устройствах, но часть старых смартфонов его не поддерживает. Если целевая аудитория широкая, включите оба варианта — движок выберет подходящий на конкретном устройстве.
| Параметр | Где настраивается | На что влияет |
|---|---|---|
| Имя пакета (Package Name) | Project Settings → Android | Идентификатор приложения в системе и магазине |
| Графический API | Project Settings → Android → Build | Совместимость и производительность рендера |
| Архитектуры (arm64 и др.) | Project Settings → Android | На каких процессорах запустится игра |
| Минимальная версия Android | Project Settings → Android SDK | Диапазон поддерживаемых устройств |
| Ориентация экрана | Project Settings → Android | Поведение интерфейса игры |
Сборка и запуск на устройстве
Для быстрого теста используйте меню Platforms → Android → Quick Launch (в разных версиях движка пункт может называться иначе) — движок соберёт и установит приложение на подключённое устройство напрямую. Перед этим убедитесь, что смартфон определяется системой: выполните в терминале команду adb devices. Устройство должно отображаться в списке со статусом device.
adb devices
Если устройство показывает статус unauthorized, подтвердите запрос на отладку на экране смартфона. Если устройство не видно вовсе — проверьте кабель (некоторые кабели передают только питание), драйверы и включённую отладку по USB в настройках разработчика.
Для полноценной сборки установочного файла выберите Platforms → Android → Package Project. На выходе получится APK или AAB в зависимости от настроек. Для публикации в Google Play требуется формат AAB — это требование магазина, а не движка.
Оптимизация под мобильное железо
Android-устройства сильно различаются по производительности, поэтому сцену из PC-проекта нельзя просто перенести на смартфон без доработки. Включите Mobile HDR только если он действительно нужен — его отключение заметно снижает нагрузку на GPU.
- 📉 Сократите количество draw calls: объединяйте статичные меши и используйте инстансинг.
- 🖼️ Сжимайте текстуры в мобильные форматы (например, ASTC) через настройки проекта.
- 💡 Замените динамическое освещение на запечённое (lightmaps) там, где это возможно.
- 📊 Профилируйте сцену командой
stat unitпрямо на устройстве, а не в редакторе.
Самый частый источник просадок FPS на Android — не полигоны, а перегруженные шейдеры и динамические тени. Начинайте оптимизацию именно с них, а не с урезания геометрии.
Почему запечённый свет быстрее динамического
Динамическое освещение рассчитывается каждый кадр и нагружает GPU. Запечённый свет хранится в текстурах lightmap и почти не требует вычислений во время игры — критично для слабых мобильных чипов.
Типичные ошибки и их решения
Ошибка Gradle failed при упаковке обычно указывает на проблемы с JDK или сетевым доступом к репозиториям зависимостей. Проверьте версию Java в настройках SDK и попробуйте собрать проект повторно после перезапуска редактора.
Если приложение собирается, но падает при запуске на устройстве, смотрите логи через adb logcat. Частые причины: отсутствующие разрешения в манифесте, несовместимый графический API или нехватка памяти при загрузке тяжёлых ассетов.
⚠️ Внимание: не меняйте вручную сгенерированные файлы в папкеIntermediate/Android— при следующей сборке они будут перезаписаны, и правки пропадут. Постоянные изменения вносите через настройки проекта или файлыBuild.csиDefaultEngine.ini.
Ещё одна распространённая ситуация — «чёрный экран» после запуска. Проверьте, что стартовая карта указана в Project Settings → Maps & Modes и включена в список упаковываемых карт.
Подпись и публикация
Для релизной сборки приложение нужно подписать. В Project Settings → Android есть раздел Distribution Signing, где указывается keystore-файл и данные ключа. Keystore можно сгенерировать стандартной утилитой keytool из состава JDK.
⚠️ Внимание: сохраните keystore-файл и пароли в надёжном месте. Потеря ключа подписи означает, что обновлять уже опубликованное приложение в Google Play станет невозможно без сброса ключа через поддержку магазина.
После подписи включите сборку в формате AAB и загрузите файл в консоль Google Play. Перед публикацией протестируйте релизную сборку на нескольких реальных устройствах с разными версиями Android — поведение может отличаться от отладочной.
Частые вопросы
Можно ли разрабатывать под Android без Android Studio?
Полностью без Android Studio обойтись сложно — из неё берутся SDK и инструменты командной строки. Однако скрипт SetupAndroid.bat из состава движка устанавливает нужные компоненты автоматически, минимизируя ручную работу.
Какая версия Unreal Engine лучше для мобильной разработки?
Используйте актуальную стабильную версию движка — Epic Games регулярно улучшает мобильный рендер и поддержку Vulkan. Конкретный выбор зависит от требований проекта и совместимости используемых плагинов.
Почему игра тормозит на смартфоне, хотя в редакторе всё плавно?
Редактор работает на мощном PC-железе, а смартфон ограничен по GPU, памяти и тепловому пакету. Профилируйте именно на устройстве командой stat unit и снижайте нагрузку: запечённый свет, сжатые текстуры, меньше draw calls.
Нужен ли реальный смартфон или хватит эмулятора?
Эмулятор подходит для базовой проверки логики, но не отражает реальную производительность и поведение GPU. Для тестирования графики и FPS нужно физическое устройство.
Чем APK отличается от AAB при сборке в Unreal Engine?
APK — классический установочный файл, который можно ставить на устройство напрямую. AAB — формат публикации для Google Play: магазин сам формирует оптимизированные APK под каждое устройство. Для загрузки в Google Play требуется именно AAB.