Экспорт для macOS

См. также

На этой странице описано, как экспортировать проект Godot в macOS. Если вы хотите скомпилировать редактор или экспортировать двоичные файлы шаблона из исходного кода, см. Compiling for macOS.

macOS apps exported with the official export templates are exported as a single "Universal 2" binary .app bundle, a folder with a specific structure which stores the executable, libraries and all the project files. This bundle can be exported as is, packed in a ZIP archive, or packed in a DMG disk image (only supported when exporting from macOS). Universal binaries for macOS support both Intel x86_64 and ARM64 (Apple Silicon) architectures.

Предупреждение

Due to file system limitations, .app bundles exported from Windows lack the executable flag and won't run on macOS. Projects exported as .zip are not affected by this issue. To run .app bundles exported from Windows on macOS, transfer the .app to a device running macOS or Linux and use the chmod +x {executable_name} terminal command to add the executable permission. The main executable located in the Contents/MacOS/ subfolder, as well as optional helper executables in the Contents/Helpers/ subfolder, should have the executable permission for the .app bundle to be valid.

Требования

  • Загрузите шаблоны экспорта Godot. Используйте меню Godot: Editor > Manage Export Templates.

  • Действительный и уникальный идентификатор Bundle должен быть установлен в разделе Application вариантов экспорта.

Предупреждение

Проекты, экспортируемые без подписи кода и нотариализации, будут заблокированы Gatekeeper, если они будут загружены из неизвестных источников, см.:ref:Запуск Godot приложения на macOS <doc_running_on_macos> для получения дополнительной информации.

Подписание кода и нотаризация

По умолчанию macOS будет запускать только приложения, которые подписаны и нотариально заверены. Если вы используете любую другую конфигурацию подписи, см.:ref:Запуск Godot-приложения на macOS <doc_running_on_macos> для обходов.

Чтобы зафиксировать приложение, вы ** должны иметь действительный Apple Developer ID Certificate.

Если у вас есть сертификат Apple Developer ID и вы экспортируете из macOS

Установите инструменты командной строки Xcode и откройте Xcode хотя бы один раз или выполните команду sudo xcodebuild -license accept, чтобы принять лицензионное соглашение.

Чтобы подписать экспортированное приложение

  • Выберите Xcode codesign в опции Code Signing > Codesign.

  • Установите действительный сертификат удостоверения Apple ID (сертификат «Common Name») в разделе «Code Signing > Identity».

Нотариально заверить экспортированное приложение

  • Выберите Xcode altool в опции Notarization > Notarization.

  • Отключить право Debugging.

  • Установите действительный логин Apple ID / пароль для конкретного приложения или App Store Connect API UUID / ключ в разделе Notarization.

Вы можете использовать команду xcrun notarytool History для проверки статуса нотариального заверения и использовать команду xcrun notarytool log {ID} для загрузки журнала нотариального заверения.

Если у вас возникли проблемы с нотариальным заверением, дополнительную информацию см. в разделе «Решение распространённых проблем с нотариальным заверением <https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolve_common_notarization_issues>».

После завершения нотариального заверения прикрепите билет к экспортированному проекту.

Если у вас есть Сертификат Apple Developer ID и вы экспортируете из Linux или Windows

Установите PyOxidizer rcodesign и настройте путь к rcodesign в Editor Settings > Export > macOS > rcodesign.

Чтобы подписать экспортированное приложение

  • Выберите PyOxidizer rcodesign в опции Code Signing > Codesign.

  • Укажите действительный файл сертификата Apple ID PKCS #12 и пароль в разделе Code Signing.

Нотариально заверить экспортированное приложение

  • Выберите PyOxidizer rcodesign в опции Notarization > Notarization.

  • Отключить право Debugging.

  • Установите действительный UUID / ключ API App Store Connect в разделе Notarization.

Для проверки статуса нотариального заверения можно использовать команду rcodesign notary-log.

После завершения нотариального заверения используйте команду rcodesign staple, чтобы прикрепить тикет к экспортированному проекту.

Если у вас нет сертификата Apple Developer ID

  • Выберите Built-in (ad-hoc only) в опции Code Signing > Codesign.

  • Выберите Disabled в опции Notarization > Notarization.

В этом случае Godot будет использовать специальную подпись, что упростит запуск экспортированного приложения для конечных пользователей. Дополнительную информацию см. на странице Running Godot apps on macOS.

Варианты Подписания

Опция

Описание

Codesign (Кодовый знак)

Инструмент для подписи кода.

Identity (Личность)

"Full Name" или "Common Name" подписи, сохраненные в цепочке ключей macOS. [1]

Certificate File (Файл Сертификата)

Файл сертификата PKCS #12. [2]

Certificate Password

Пароль для файла сертификата. [2]

Custom Options

Массив аргументов командной строки, переданных инструменту подписи кода.

Параметры нотаризации

Опция

Описание

Notarization (Нотариальное заверение)

Инструмент для нотариального заверения.

Apple ID Name

Имя учетной записи Apple ID (адрес электронной почты). [3]

Apple ID Password

Пароль приложения Apple ID. Чтобы включить двухфакторную аутентификацию и создать пароль приложения, см. раздел Использование паролей, специфичных для приложений. [3]

Apple Team ID

ID команды ("Organization Unit"), если ваш Apple ID принадлежит нескольким командам (необязательно). [3]

API UUID

UUID изготовителя API Apple App Store Connect.

API Key

Ключ API Apple App Store Connect.

Примечание

Вам следует указать либо имя/пароль Apple ID, либо UUID/ключ API App Store Connect.

Дополнительную информацию см. в разделе Заверение программного обеспечения macOS перед распространением.

Entitlements (Права)

Hardened Runtime Entitlements

Усиленные права среды выполнения управляют параметрами безопасности и политикой доступа к ресурсам. Дополнительную информацию см. в разделе Hardened Runtime.

Entitlement (Право)

Описание

Allow JIT Code Execution [4]

Позволяет создавать записываемую и исполняемую память для JIT-кода. Если вы используете дополнения с динамическим или самомодифицирующимся нативным кодом, включите их в соответствии с документацией к дополнению.

Allow Unsigned Executable Memory [4]

Позволяет создавать записываемую и исполняемую память без ограничений JIT. Если вы используете надстройки с динамическим или самоизменяющимся собственным кодом, включите их в соответствии с документацией надстройки.

Allow DYLD Environment Variables [4]

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

Disable Library Validation

Позволяет приложению загружать произвольные библиотеки и фреймворки. Включите эту функцию, если вы используете надстройки GDExtension или ad-hoc-подписывание, или хотите поддерживать внешние надстройки, предоставляемые пользователем.

Audio Input

Включите, если вам нужно использовать микрофон или другие источники аудиовхода. Если он включен, вы также должны указать сообщение об использовании в опции privacy/microphone_usage_description.

Camera

Включите, если вам нужно использовать камеру. Если она включена, вы также должны указать сообщение об использовании в опции privacy/camera_usage_description.

Location

Включите, если вам нужно использовать информацию о местоположении из служб определения местоположения. Если она включена, вы также должны указать сообщение об использовании в опции privacy/location_usage_description.

Address Book

[5] Включите, чтобы разрешить доступ к контактам в адресной книге пользователя. Если эта опция включена, вы также должны предоставить сообщение об использовании в параметре privacy/address_book_usage_description.

Calendars

[5] Включите, чтобы разрешить доступ к календарю пользователя. Если эта опция включена, вам также следует предоставить сообщение об использовании в параметре privacy/calendar_usage_description.

Photo Library

[5] Включите, чтобы разрешить доступ к библиотеке фотографий пользователя. Если эта опция включена, вам также следует предоставить сообщение об использовании в параметре privacy/photos_library_usage_description.

Apple Events

[5] Включите, чтобы разрешить приложению отправлять события Apple в другие приложения.

Отладка

[6] Вы можете временно включить это разрешение для использования собственного отладчика (GDB, LLDB) в экспортированном приложении. Для экспорта в продакшн это разрешение следует отключить.

App Sandbox Entitlement

Приложение Sandbox ограничивает доступ к пользовательским данным, сетями и устройствам. Приложения, запущенные в Sandbox, не могут получить доступ к большей части файловой системы, не могут использовать пользовательские файлы диалогов и выполнять бинарные файлы (с использованием OS.execute и OS.create_process) за пределами пакета .app. Смотрите App Sandbox для получения дополнительной информации.

Примечание

Для распространения приложения через App Store необходимо включить App Sandbox.

Entitlement (Право)

Описание

Enabled

Включить Sandbox приложение.

Network Server

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

Network Client

Включите, чтобы разрешить приложению устанавливать исходящие сетевые подключения.

Device USB

Включите, чтобы разрешить приложению взаимодействовать с USB-устройствами. Это право необходимо для использования проводных контроллеров.

Device Bluetooth

Включить, чтобы разрешить приложению взаимодействовать с Bluetooth устройствами. Это разрешение требуется для использования беспроводных контроллеров.

Files Downloads [7]

Разрешает доступ для чтения или записи в папку пользователя "Downloads".

Files Pictures [7]

Разрешает доступ на чтение и запись к папке "Pictures" пользователя.

Files Music [7]

Разрешает доступ для чтения или записи в папку пользователя "Music".

Files Movies [7]

Разрешает доступ для чтения или записи в папку пользователя "Movies (Видео)".

Files User Selected [7]

Разрешает доступ для чтения или записи к произвольной папке. Чтобы получить доступ, пользователь должен выбрать папку в собственном диалоговом окне файла.

Helper Executable

Список вспомогательных исполняемых файлов для внедрения в пакет приложения. Приложение в песочнице может выполнять только эти исполняемые файлы.

Примечание

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

Переменные среды

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

Переменные среды экспорта macOS

Опции экспорта

Переменная окружения

Шифрование / Ключ шифрования

GODOT_SCRIPT_ENCRYPTION_KEY

Options / Codesign / Certificate File

GODOT_MACOS_CODESIGN_CERTIFICATE_FILE

Options / Codesign / Certificate Пароль

GODOT_MACOS_CODESIGN_CERTIFICATE_PASSWORD

Options / Codesign / Provisioning Профиль

GODOT_MACOS_CODESIGN_PROVISIONING_PROFILE

Options / Notarization / API UUID

GODOT_MACOS_NOTARIZATION_API_UUID

Options / Notarization / API Key

GODOT_MACOS_NOTARIZATION_API_KEY

Options / Notarization / API Key ID

GODOT_MACOS_NOTARIZATION_API_KEY_ID

Options / Notarization / Apple ID Name

GODOT_MACOS_NOTARIZATION_APPLE_ID_NAME

Options / Notarization / Apple ID Password

GODOT_MACOS_NOTARIZATION_APPLE_ID_PASSWORD

Опции экспорта

You can find a full list of export options available in the EditorExportPlatformMacOS class reference.