reckfellENGINE

Экспорт проекта для macOS

Шаблоны, C# и архитектуры, подпись, нотариализация и проверка готового .app.

На этой странице

Что получится

Пакет Game.app с исполняемым файлом, ресурсами и библиотеками проекта. .app — каталог с внутренней структурой, а не один файл. Для передачи с Windows выбирайте ZIP: прямое копирование .app с Windows не сохраняет Unix-права исполняемых файлов.

Этот маршрут относится к экспорту проекта. Сборка редактора и шаблонов описана в сборке для macOS.

Подготовьте экспорт

  1. Проверьте запуск проекта и его главного уровня в редакторе. Для C# сначала устраните ошибки сборки.
  2. Подготовьте macOS-шаблоны именно вашей сборки Reckfell 1.0.0. Экспортёр ищет macos.zip; архив редактора Windows его не заменяет. Для собственной сборки задайте архивы в custom_template/debug и custom_template/release соответствующего пресета. Совпадение номера версии само по себе не доказывает совпадение модулей и SDK.
  3. В окне экспорта проекта добавьте пресет macOS. Задайте application/bundle_identifier, например com.yourstudio.yourgame, и не меняйте его между выпусками одной игры. Отображаемое имя приложения — отдельная настройка.
  4. Выберите binary_format/architecture: arm64 для Apple silicon, x86_64 для Intel или universal для обоих. Нативные расширения и сторонние библиотеки тоже должны иметь нужные архитектуры. Один универсальный файл движка этого не обеспечивает. Что означает universal binary.
  5. Проверьте application/min_macos_version_x86_64 и application/min_macos_version_arm64. Значения пресета по умолчанию — 11.00 и 13.00; это метаданные пакета, а не результат проверки вашей игры на этих версиях ОС. Итоговые требования зависят также от рендера, .NET и библиотек.
  6. Создайте отдельный каталог результата вне проекта. Для контрольного выпуска используйте release-экспорт с выключенным Export With Debug. Старый результат в выбранном пути может быть заменён; не экспортируйте поверх единственной принятой сборки.

Выберите способ доставки

ЗадачаНастройка и результат
Проверка у себяexport/distribution_type=0 (Testing), подпись ad-hoc, нотариализация выключена. Это не готовый публичный выпуск.
Распространение вне магазинаexport/distribution_type=1 (Distribution), Developer ID-подпись, нотариализация и проверка готового пакета на Mac.
Mac App StoreОтдельный маршрут: доступен при экспорте с macOS; нужны подписи магазина, provisioning profile, installer identity и App Sandbox. Developer ID не заменяет эти настройки.

ZIP и .app предусмотрены на всех хостах экспорта. DMG и PKG создаются только на macOS; список форматов также зависит от distribution type. Наличие пункта экспорта не подтверждает наличие шаблонов или работоспособность C#-публикации на вашем хосте.

Если проект использует C#

Используйте .NET-редактор, совместимые .NET-шаблоны и SDK проекта. Экспортный плагин выполняет dotnet publish, а не только обычный build. В режиме universal он отдельно публикует x86_64 и arm64; для каждой архитектуры нужны подходящие нативные зависимости NuGet/расширений.

На macOS опубликованные данные размещаются в Contents/Resources/data_<project>_<platform>_<arch>. Не удаляйте их из .app и не распространяйте один исполняемый файл из Contents/MacOS. Опция dotnet/embed_build_outputs не встраивает эти данные в PCK на macOS.

Если есть Failed to build project или Publish succeeded but project assembly not found, разбирайте MSBuild/publish-журнал. Существующий ZIP и успешный build в редакторе не доказывают успешную публикацию обеих архитектур.

Подпись и нотариализация

На Mac для прямого распространения выберите Xcode codesign и Developer ID Application identity из Keychain. Пустая identity либо - означает ad-hoc. Встроенная ad-hoc-подпись не удостоверяет разработчика и не подходит для нотариализации. На других хостах предусмотрен rcodesign, но его наличие не доказывает корректную подпись пакета с .NET/динамическими библиотеками: проверяйте окончательный пакет на Mac.

Для нотариализации задайте Team ID и один способ авторизации: Apple ID с app-specific password либо App Store Connect API credentials. Не сохраняйте реальные пароли и приватные ключи в примерах, репозитории или журналах. В этой статье сервис Apple не вызывается.

Выключите codesign/entitlements/debugging для распространения. При создании entitlements экспортёр учитывает CSharpScript и добавляет разрешения для JIT. Если задан codesign/entitlements/custom_file, встроенная генерация заменяется вашим файлом: необходимые разрешения для .NET и библиотек нужно сохранить самостоятельно. Не включайте все разрешения подряд.

Ветка Xcode notarytool отправляет архив и выводит UUID, но не ждёт итогового принятия. UUID — идентификатор заявки, а не статус Accepted. Проверьте статус/журнал средствами Apple, дождитесь Accepted, затем прикрепите ticket через stapler. ZIP напрямую не stapling-уют: ticket прикрепляют к приложению/DMG, затем заново упаковывают окончательный ZIP. После этого содержимое приложения не изменяйте. Официальный процесс Apple.

Проверьте результат на Mac

Распакуйте именно доставляемый архив. В терминале macOS замените путь на свой:

Командная строка
APP="/absolute/path/Game.app"
EXEC=$(/usr/libexec/PlistBuddy -c 'Print :CFBundleExecutable' "$APP/Contents/Info.plist")
plutil -lint "$APP/Contents/Info.plist"
file "$APP/Contents/MacOS/$EXEC"
lipo -archs "$APP/Contents/MacOS/$EXEC"
codesign --verify --deep --strict --verbose=2 "$APP"
spctl --assess --type execute --verbose=4 "$APP"

Для universal основной исполняемый файл должен содержать x86_64 и arm64; отдельно проверьте архитектуры подключённых библиотек. Чистая проверка подписи не равна принятию Gatekeeper. Ошибки разрешений, политики запуска и журнал приложения разобраны в запуске на macOS.

Запустите release-пакет на целевом Mac и проверьте главный уровень, ввод, звук, сохранения в user:// и функции расширений. Для универсального выпуска проверьте обе архитектуры. Результат экспорта без ошибок не заменяет этот запуск: некоторые ошибки подписи экспортёр выводит как предупреждения.

Граница проверки статьи: настройки и ветки экспорта сверены с исходниками Reckfell 1.0.0, C#-плагином и инструкциями Apple. Здесь не выполнялись экспорт .app, публикация C# для macOS, подпись, нотариализация или запуск на Mac; это шаги проверки вашей сборки, а не уже полученные результаты.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.