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 valid bundle ID can only contain alphanumeric characters, hyphens, and periods (A-Z, a-z, 0-9, -, and .).
Apple recommends using reverse-DNS format (e.g. com.example.your-game) of a domain you own, so that your bundle ID is guaranteed to be unique.
Bundle IDs are case-insensitive. See 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».
Нотариально заверить экспортированное приложение
Select
Xcode notarytoolin theNotarization > Notarizationoption.Отключить право
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
Install rcodesign, and configure the path to rcodesign in the Editor Settings > Export > macOS > rcodesign option.
Чтобы подписать экспортированное приложение
Select
rcodesignin theCode Signing > Codesignoption.Укажите действительный файл сертификата Apple ID PKCS #12 и пароль в разделе
Code Signing.
Нотариально заверить экспортированное приложение
Select
rcodesignin theNotarization > Notarizationoption.Отключить право
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.
These options are visible only when notarizing with 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] |
Позволяет приложению использовать переменные окружения динамического компоновщика для внедрения кода. Если вы используете дополнения с динамическим или самомодифицирующимся нативным кодом, включите их в соответствии с документацией к дополнению. |
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) в экспортированном приложении. Для экспорта в продакшн это разрешение следует отключить. |
Права Разрешить выполнение кода 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 |
Список вспомогательных исполняемых файлов для внедрения в пакет приложения. Приложение в песочнице может выполнять только эти исполняемые файлы. |
При желании вы можете предоставить сообщения об использовании для различных папок в параметрах privacy/*_folder_usage_description.
Примечание
Вы можете переопределить права по умолчанию, выбрав собственный файл разрешений; в этом случае все остальные права игнорируются.
Переменные среды
Вы можете использовать следующие переменные окружения, чтобы задавать опции экспорта вне редактора. Во время процесса экспорта, они переопределяют значения, которые были заданы в меню экспорта.
Опции экспорта |
Переменная окружения |
|---|---|
Шифрование / Ключ шифрования |
|
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.