Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Экспорт для macOS
См. также
На этой странице описано, как экспортировать проект Godot в macOS. Если вы хотите скомпилировать редактор или экспортировать двоичные файлы шаблона из исходного кода, см. Компиляция для macOS.
Приложения macOS, экспортированные с помощью официальных шаблонов экспорта, экспортируются как единый двоичный пакет .app «Universal 2» — папка с определенной структурой, в которой хранятся исполняемый файл, библиотеки и все файлы проекта. Этот пакет можно экспортировать как есть, упаковать в ZIP-архив или упаковать в образ диска DMG (поддерживается только при экспорте из macOS). Универсальные двоичные файлы для macOS поддерживают архитектуры Intel x86_64 и ARM64 (Apple Silicon).
Предупреждение
Из-за ограничений файловой системы пакеты .app, экспортированные из Windows, не имеют флага executable и не будут работать в macOS. Проекты, экспортированные как .zip, не подвержены этой проблеме. Чтобы запустить пакеты .app, экспортированные из Windows, на macOS, перенесите .app на устройство под управлением macOS или Linux и используйте команду терминала chmod +x {executable_name}, чтобы добавить разрешение executable. Основной исполняемый файл, расположенный в подпапке Contents/MacOS/, а также необязательные вспомогательные исполняемые файлы в подпапке Contents/Helpers/, должны иметь разрешение executable для того, чтобы пакет .app был допустимым.
Требования
Загрузите шаблоны экспорта Godot. Используйте меню Godot:
Editor > Manage Export Templates.Действительный и уникальный идентификатор
Bundleдолжен быть установлен в разделеApplicationвариантов экспорта.
Примечание
Допустимый идентификатор пакета может содержать только буквенно-цифровые символы, дефисы и точки (A-Z, a-z, 0-9, - и .). Apple рекомендует использовать формат обратного DNS (например, com.example.your-game) для домена, которым вы владеете, чтобы гарантировать уникальность идентификатора пакета. Идентификаторы пакетов нечувствительны к регистру. См. CFBundleIdentifier.
Предупреждение
Проекты, экспортируемые без подписи кода и нотариализации, будут заблокированы 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 notarytoolв опции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
Установите rcodesign и настройте путь к rcodesign в опции Editor Settings > Export > macOS > rcodesign.
Чтобы подписать экспортированное приложение
Выберите
rcodesignв опцииCode Signing > Codesign.Укажите действительный файл сертификата Apple ID PKCS #12 и пароль в разделе
Code Signing.
Нотариально заверить экспортированное приложение
Выберите
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.
Эти опции видны только при нотариальном заверении с помощью Xcode notarytool.
Дополнительную информацию см. в разделе Заверение программного обеспечения 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] |
Allows app to use dynamic linker environment variables to inject code. If you are using add-ons with dynamic or self-modifying native code, enable them according to the add-on documentation. |
Disable Library Validation |
Позволяет приложению загружать произвольные библиотеки и фреймворки. Включите эту функцию, если вы используете надстройки GDExtension или ad-hoc-подписывание, или хотите поддерживать внешние надстройки, предоставляемые пользователем. |
Audio Input |
Enable if you need to use the microphone or other audio input sources, if it's enabled you should also provide usage message in the |
Camera |
Enable if you need to use the camera, if it's enabled you should also provide usage message in the |
Location |
Enable if you need to use location information from Location Services, if it's enabled you should also provide usage message in the |
Address Book |
[5] Enable to allow access contacts in the user's address book, if it's enabled you should also provide usage message in the |
Calendars |
[5] Enable to allow access to the user's calendar, if it's enabled you should also provide usage message in the |
Photo Library |
[5] Enable to allow access to the user's Photos library, if it's enabled you should also provide usage message in the |
Apple Events |
[5] Включите, чтобы разрешить приложению отправлять события Apple в другие приложения. |
Отладка |
[6] Вы можете временно включить это разрешение для использования собственного отладчика (GDB, LLDB) в экспортированном приложении. Для экспорта в продакшн это разрешение следует отключить. |
Права Разрешить выполнение кода JIT, Разрешить неподписанную исполняемую память и Разрешить переменные среды DYLD всегда включены для экспорта Godot Mono и не отображаются в параметрах экспорта.
Эти функции не поддерживаются Godot по умолчанию, включайте их только в том случае, если вы используете дополнения, которые их требуют.
Чтобы заверить приложение, вы должны отключить право Debugging.
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 |
Список вспомогательных исполняемых файлов для внедрения в пакет приложения. Приложение в песочнице может выполнять только эти исполняемые файлы. |
You can optionally provide usage messages for various folders in the privacy/*_folder_usage_description options.
Примечание
Вы можете переопределить права по умолчанию, выбрав собственный файл разрешений; в этом случае все остальные права игнорируются.
Переменные среды
Вы можете использовать следующие переменные окружения, чтобы задавать опции экспорта вне редактора. Во время процесса экспорта, они переопределяют значения, которые были заданы в меню экспорта.
Опции экспорта |
Переменная окружения |
|---|---|
Шифрование / Ключ шифрования |
|
Options / Codesign / Certificate File |
|
Options / Codesign / Certificate Пароль |
|
Options / Codesign / Provisioning Профиль |
|
Options / Notarization / API UUID |
|
Options / Notarization / API Key |
|
Options / Notarization / API Key ID |
|
Options / Notarization / Apple ID Name |
|
Options / Notarization / Apple ID Password |
|
Опции экспорта
Полный список доступных параметров экспорта можно найти в справочнике классов EditorExportPlatformMacOS.