This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Разработка приложений Defold для платформы macOS представляет собой довольно простой процесс, требующий лишь небольшого количества дополнительных действий.
Специфичная для macOS конфигурация приложения настраивается в разделе macOS файла настроек game.project.
Иконка приложения для игры на macOS должна быть в формате .icns. Вы можете легко создать файл .icns из набора файлов .png, собранных в .iconset. Следуйте официальной инструкции по созданию файла .icns. Кратко процесс выглядит так:
game.iconsetСкопируйте файлы иконок в созданную папку:
icon_16x16.pngicon_16x16@2x.pngicon_32x32.pngicon_32x32@2x.pngicon_128x128.pngicon_128x128@2x.pngicon_256x256.pngicon_256x256@2x.pngicon_512x512.pngicon_512x512@2x.png.iconset в файл .icns с помощью инструмента командной строки iconutil:iconutil -c icns -o game.icns game.iconset
Вы можете публиковать приложение в Mac App Store, через сторонний магазин или портал, такой как Steam или itch.io, либо самостоятельно через веб-сайт. Перед публикацией приложение нужно подготовить к отправке. Следующие шаги обязательны вне зависимости от того, как вы собираетесь распространять приложение:
$ chmod +x Game.app/Contents/MacOS/Game
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
com.apple.security.cs.allow-jit - указывает, может ли приложение создавать память с правами на запись и выполнение с использованием флага MAP_JITcom.apple.security.cs.allow-unsigned-executable-memory - указывает, может ли приложение создавать память с правами на запись и выполнение без ограничений, накладываемых использованием флага MAP_JITcom.apple.security.cs.allow-dyld-environment-variables - указывает, может ли на приложение влиять набор переменных окружения динамического линковщика, которые можно использовать для внедрения кода в процесс приложенияНекоторым приложениям могут потребоваться дополнительные entitlements. Расширению Steamworks нужен следующий дополнительный entitlement:
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
* `com.apple.security.cs.disable-library-validation` - указывает, может ли приложение загружать произвольные плагины или фреймворки без обязательной проверки подписи кода.
Полный список entitlements, которые могут быть выданы приложению, приведён в официальной документации Apple для разработчиков.
codesign:$ codesign --force --sign "Developer ID Application: Company Name" --options runtime --deep --timestamp --entitlements entitlement.plist Game.app
Apple требует, чтобы всё ПО, распространяемое вне Mac App Store, было нотариально заверено Apple, чтобы оно запускалось по умолчанию на macOS Catalina. Обратитесь к официальной документации, чтобы узнать, как добавить нотариальное заверение в автоматизированную среду сборки вне Xcode. Кратко процесс выглядит так:
1) Выполните описанные выше шаги по добавлению разрешений и подписи приложения.
2) Заархивируйте и отправьте игру на нотариальное заверение с помощью altool.
$ xcrun altool --notarize-app
--primary-bundle-id "com.acme.foobar"
--username "AC_USERNAME"
--password "@keychain:AC_PASSWORD"
--asc-provider <ProviderShortname>
--file Game.zip
altool[16765:378423] No errors uploading 'Game.zip'.
RequestUUID = 2EFE2717-52EF-43A5-96DC-0797E4CA1041
altool --notarize-app:$ xcrun altool --notarization-info 2EFE2717-52EF-43A5-96DC-0797E4CA1041
-u "AC_USERNAME"
success, и прикрепите тикет нотариального заверения к игре:$ xcrun stapler staple "Game.app"
Процесс публикации в Mac App Store хорошо описан в документации Apple Developer. Перед отправкой обязательно добавьте разрешения и подпишите приложение, как описано выше.
Примечание: при публикации в Mac App Store игру не нужно нотариально заверять.
Privacy manifest — это список свойств, в котором фиксируются типы данных, собираемых вашим приложением или сторонним SDK, а также причины использования required reasons API вашим приложением или сторонним SDK. Для каждого типа данных, который собирает приложение или сторонний SDK, и для каждой категории required reasons API, которую оно использует, причины должны быть указаны в bundled privacy manifest file.
Defold предоставляет privacy manifest по умолчанию через поле Privacy Manifest в файле game.project. При создании application bundle privacy manifest будет объединён с любыми privacy manifests из зависимостей проекта и включён в application bundle.
Подробнее о privacy manifests читайте в официальной документации Apple.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB