Экспорт для 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вариантов экспорта.
Предупреждение
Проекты, экспортируемые без подписи кода и нотариализации, будут заблокированы 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.
Эти параметры видны только при нотариальном подтверждении с помощью Xcode altool.
Дополнительную информацию см. в разделе Заверение программного обеспечения 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.