Экспорт для 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.
Эти параметры видны только при нотариальном подтверждении с помощью 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 |
|
Опции экспорта
You can find a full list of export options available in the EditorExportPlatformMacOS class reference.