Skip to content
E
Egmatic
игра не экспортируетсяошибка экспорташаблоны экспорта godotil2cpp arm64 unityподпись android keystore

Игра не экспортируется? 7 решений, которые действительно помогают

Если игра не экспортируется, значит, она уже скомпилировалась и запускается — сбой происходит на шаге упаковки под конкретную платформу: Android, iOS, веб. Ошибки экспорта — это отдельный класс проблем, отличный от ошибок сборки, которые мешают компиляции, и от багов времени выполнения, которые проявляются только во время игры. Почти всегда причина кроется в одном из семи обстоятельств: отсутствующем или не подходящем по версии шаблоне экспорта Godot, неверном скриптовом бекенде Unity, где для ARM64 нужен IL2CPP, неподписанном Android-keystore, отсутствующих сертификатах и профилях подготовки для iOS, несоответствии требованиям магазина — например, целевому уровню API 35 в Google Play, ресурсах, отфильтрованных из пресета экспорта, или повреждённом кэше. В руководстве — каждое решение для Godot, Unity, GameMaker и MonoGame с точными настройками и порядком диагностики, пригодным в любом движке.

Владислав Ковнеров20 июля 2026 г.12 мин

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

В этом руководстве — семь ошибок экспорта, которые регулярно возникают в Godot, Unity, GameMaker и MonoGame, с указанием конкретной настройки для каждой и порядка диагностики, пригодного в любом движке. Главное правило здесь звучит так: прочитайте лог экспорта, найдите этап, на котором происходит сбой, и исправьте ту настройку, которую он называет.

Одно важное замечание перед разбором: ошибки экспорта редко связаны с вашим кодом. Они относятся к «мосту» между состоянием «игра работает у меня на машине» и состоянием «подписанный пакет, который примет магазин», — к ключам подписи, сертификатам, шаблонам экспорта, целевым архитектурам и версиям SDK. Далее речь пойдёт именно об этих мостах.

Ошибка сборки, ошибка экспорта или баг времени выполнения?

Самое полезное различие — на каком этапе происходит сбой.

Ошибка сборкиОшибка экспортаБаг времени выполнения
Когда возникаетПри компиляции или упаковке проектаПри создании пакета под конкретную платформуВо время работы игры
РезультатЗапускаемой сборки не получается вовсеДесктопная сборка может работать, а Android, iOS или веб — нетСборка работает, но ведёт себя неправильно
Типичная причинаКод, который не компилируется, отсутствующие ассетыНастройки платформы: шаблоны, подпись, архитектура, SDKЛогика, которая компилируется, но неверна в игре
Где искатьВ логе компиляцииВ логе экспортаВ работающей игре

Если игра запускается в редакторе и даже собирается под Windows, но экспорт под Android зависает или выдаёт ошибку, — вы в колонке «ошибка экспорта», и дальнейшее относится именно к ней. Если же сбой происходит до того, как получена запускаемая сборка, вам скорее поможет статья об ошибках сборки.

Порядок диагностики (работает в любом движке)

  1. Прочитайте лог экспорта. При сбое экспорта почти всегда названо, чего не хватает, — «нет шаблона экспорта», «не задан keystore», «не выбран ARM64», «профиль подготовки не найден». Это сообщение и есть подсказка к решению.
  2. Определите этап. Сбой происходит при загрузке шаблона, при генерации кода под цель (IL2CPP), при подписывании или на финальном шаге упаковки? Каждый случай соответствует одному из решений ниже.
  3. Проверьте требования самой платформы, а не только свой проект. Магазины со временем повышают требования, поэтому экспорт, который работал в прошлом году, может не пройти сегодня просто потому, что Google Play теперь требует более новый уровень API.

Семь решений

1. Установите подходящие шаблоны экспорта (Godot)

Godot экспортирует игры через шаблоны экспорта для каждой платформы — готовые бинарники, которые и выполняют упаковку. Если шаблон для нужной цели отсутствует или его версия в точности не совпадает с версией редактора, экспорт завершается ошибкой «шаблоны отсутствуют» или сообщением о несовпадении версий. Это самая частая причина сбоев экспорта в Godot.

Установите их через Editor → Manage Export Templates → Download and Install для той точной версии редактора, которой вы пользуетесь. Два нюанса: версия шаблона должна совпадать с редактором до патча (редактору 4.5.1 нужны шаблоны 4.5.1), а если вы используете сборку Godot с .NET/C#, вам нужны шаблоны mono, а не стандартные. После каждого обновления редактора шаблоны приходится скачивать заново.

2. Перейдите на IL2CPP и включите ARM64 (Unity, мобильные платформы)

Google Play требует 64-битные (ARM64) пакеты Android с 2019 года, а Apple требует 64-бит для iOS. В Unity архитектура ARM64 доступна только со скриптовым бекендом IL2CPP — бекенд Mono вообще не поддерживает ARM64 на мобильных устройствах. Поэтому экспорт, настроенный на Mono или без отметки ARM64, не соответствует требованиям магазинов, хотя сама сборка проходит успешно.

Исправление находится в Player Settings → Other Settings: задайте Scripting Backend = IL2CPP, а в разделе Target Architecture включите ARM64. Сборки IL2CPP создаются дольше — это отдельная проблема, разобранная в руководстве по медленным сборкам, но это единственный путь к мобильному пакету, который примет магазин.

3. Настройте подпись Android (keystore)

Неподписанный пакет Android нельзя загрузить в магазин, и большинство движков отказываются создавать release-сборку без настроенного keystore. Сбой проявляется как ошибка подписи в конце экспорта или как отказ Play Console с формулировкой «пакет не подписан».

Создайте keystore один раз (в Unity это делается в Player Settings → Publishing Settings, а базовый инструмент — команда Android keytool) и укажите его в пресете экспорта, заполнив алиас и пароли. Храните keystore и пароли надёжно: потеря ключа магазина означает, что обновить приложение в том же листинге будет уже нельзя.

4. Разберитесь с сертификатами и профилями для iOS

Экспорт под iOS — самый строгий, потому что Apple требует привязывать каждую сборку к конкретному удостоверению подписи. Для экспорта под iOS потребуется членство в Apple Developer Program (99 долларов в год), сертификат для подписи, профиль подготовки (provisioning profile), в котором перечислены bundle ID вашего приложения и тестовые устройства, и Mac с установленным Xcode — официально выпустить сборку для App Store из Windows или Linux нельзя. Экспорт прерывается, когда чего-то из этого нет, срок его действия истёк или данные не совпадают.

Создайте сертификат и профиль на портале Apple Developer, скачайте их и укажите в настройках экспорта iOS вашего движка (а в Unity можно доверить подписывание Xcode при сборке проекта Xcode). Сначала добавьте в профиль устройство, на котором хотите тестировать, иначе сборка не установится ни на одно.

5. Соответствуйте требованиям магазина по уровню API и SDK

Магазины повышают требуемые версии платформ по расписанию, и экспорт под устаревший уровень отклоняется — часто уже после успешного экспорта, на этапе загрузки. Google Play теперь требует, чтобы новые приложения и обновления были нацелены на Android 15 (уровень API 35); то же требование распространяется на существующие приложения, чтобы они оставались видимыми на новых устройствах. Apple требует 64-битный пакет, собранный в актуальном Xcode, и периодически повышает минимальную версию iOS, принимаемую в App Store.

В настройках экспорта укажите текущий требуемый уровень, держите SDK платформы и инструменты сборки в актуальном состоянии и пересоберите. Требования здесь постоянно меняются: перед каждым релизом сверяйтесь с текущими условиями магазина, а не полагайтесь на прошлогоднюю конфигурацию.

6. Проверьте фильтры ресурсов и сцен в пресете экспорта

Экспорт может завершиться без ошибок, а затем произойдёт сбой уже на устройстве — потому что нужный игре ресурс был отфильтрован из пакета. В Godot фильтры ресурсов в пресете экспорта решают, что попадёт в сборку; отфильтрованная сцена или ассет существуют в редакторе, но отсутствуют в экспортированной игре. В Unity аналог — список Scenes In Build в Build Settings: сцена, на которую ссылается код, но которой нет в этом списке, работает в редакторе и отсутствует в сборке.

Откройте пресет, убедитесь, что в него включены все сцены и ассеты, которые игра загружает во время выполнения, и экспортируйте заново. Такой сбой часто выглядит как баг времени выполнения («уровень пустой»), хотя на деле это пробел в настройке экспорта.

7. Очистите кэш экспорта

Некоторые сбои экспорта не имеют логического объяснения: ассет, который вчера упаковывался нормально, вдруг падает, или экспорт ломается на одной машине и работает на другой. Причина — повреждённый промежуточный кэш, а решение — чистый повторный экспорт. Это единственный случай, когда очистка кэша первым делом оправдана, потому что настоящей ошибки в настройках здесь нет.

ДвижокЧто очиститьПримечания
UnityУдалите папки Library, Temp и папки objПриводит к полному реимпорту; следующий экспорт медленнее
GodotУдалите .godot/imported (или всю папку .godot)При следующем открытии реимпорт всех ассетов
MonoGame / .NETdotnet clean либо удалите bin и objПерекомпиляция с нуля
GameMakerClean Build в меню сборкиУдаляет закэшированный вывод компиляции

Всегда очищайте кэш на проекте, у которого есть резервная копия, и по возможности используйте штатную команду очистки движка, если она есть.

Как предотвратить ошибки экспорта

Большинство проблем с экспортом — вопрос процесса, а не кода.

  • Экспортируйте рано и на все платформы. Чем дольше вы не тестируете экспорт под Android или iOS, тем больше накапливается изменений, любое из которых могло его сломать. Экспорт, который запускается в CI при каждом коммите, ловит регрессии, пока их причина ещё свежа.
  • Храните по одному проверенному пресету экспорта на каждую платформу в системе контроля версий. Когда цель ломается, сравните с пресетом, который работал последним.
  • Перед каждым релизом перепроверяйте требования магазинов. Уровни API и минимальные версии SDK меняются; цель, которая подходила при прошлом запуске, теперь может быть отклонена.
  • Относитесь к учётным данным подписи как к инфраструктуре. Храните keystore, сертификаты и профили в надёжном месте и фиксируйте, какое приложение какими пользуется. Восстановление потерянного keystore означает новый листинг в магазине.
  • Зафиксируйте версии инструментария — редактора, SDK, шаблонов экспорта, — чтобы обновление не сломало экспорт молча, у другого разработчика или на другой машине.

Если проблема не в самом экспорте, а в более широком процессе публикации — выборе магазинов, регистрации, отправке сборки, — см. руководство по публикации на всех платформах, а о том, зачем вообще ориентироваться на множество платформ, рассказывает статья об экспорте на все платформы.

Роль Egmatic

Egmatic — это IDE и движок для 2D-игр на базе MonoGame, и это убирает сразу несколько классов ошибок из списка выше. Здесь нет шага IL2CPP, поэтому ловушка с ARM64 и скриптовым бекендом из решения 2 просто не возникает: игра компилируется стандартным инструментарием .NET и упаковывается под платформы обычным конвейером MonoGame. Конвейер контента (MGCB) обрабатывает каждый ассет при сборке и сообщает об отсутствующем или некорректном ассете как об именованной ошибке — это ровно тот пробел, который описан в решении 6: отфильтрованный или некорректный ассет всплывает как явное сообщение, а не как пустой экран на устройстве. А предпросмотр в реальном времени позволяет запустить игру внутри редактора без полного экспорта, так что большинство проблем выявляются до этапа экспорта, а не во время него.

При этом настройка мобильных и консольных платформ в MonoGame требует больше ручной работы, чем в Unity или Godot: SDK платформы и подпись приходится подключать самостоятельно. Для десктопных платформ (Windows, macOS, Linux) путь достаточно прямолинеен. О фундаменте, в который компилируется Egmatic, рассказывает обзор MonoGame, а отличить ошибку экспорта от ошибки компиляции поможет соседняя статья — руководство по ошибкам сборки.

Итог

Ошибка экспорта — это проблема упаковки, а не геймплея. Игра работает; неверно настроен лишь мост к платформе. Прочитайте лог экспорта, найдите, на каком этапе происходит сбой, — шаблоны, скриптовый бекенд, подпись, требования магазина, фильтры ресурсов или кэш, — и исправьте эту настройку. Делайте это рано и на каждую цель, и ошибки экспорта перестанут задерживать релиз.