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
为 macOS 平台开发 Defold 应用程序是一个直接的过程,几乎不需要考虑太多事项。
macOS 特定的应用程序配置是在 game.project 设置文件的 macOS 部分 中完成的。
macOS 游戏使用的应用图标必须是 .icns
格式。您可以轻松地创建 .icns
文件,从一组 .png
文件收集为 .iconset
。请遵循创建 .icns
文件的官方说明。涉及的步骤简要总结如下:
game.iconset
将图标文件复制到创建的文件夹中:
icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png
iconutil
命令行工具将 .iconset
文件夹转换为 .icns
文件: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_JIT 标志创建可写和可执行的内存com.apple.security.cs.allow-unsigned-executable-memory
- 表示应用程序是否可以在不使用 MAP_JIT 标志施加的限制的情况下创建可写和可执行的内存com.apple.security.cs.allow-dyld-environment-variables
- 表示应用程序是否可能受到动态链接器环境变量的影响,您可以使用这些变量向应用程序的进程注入代码某些应用程序可能还需要额外的授权。Steamworks 扩展需要这个额外的授权:
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
* `com.apple.security.cs.disable-library-validation` - 表示应用程序是否可以加载任意插件或框架,而不需要代码签名。
可以授予应用程序的所有授权都列在官方的 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
调用返回的请求 UUID 检查您的提交状态:$ xcrun altool --notarization-info 2EFE2717-52EF-43A5-96DC-0797E4CA1041
-u "AC_USERNAME"
success
,然后将公证票证钉到游戏上:$ xcrun stapler staple "Game.app"
发布到 Mac App Store 的过程在 Apple 开发者文档 中有详细记录。在提交之前,请确保如上所述添加权限并为应用程序签名。
注意:发布到 Mac App Store 时,游戏不必经过公证。
隐私清单是一个属性列表,用于记录您的应用程序或第三方 SDK 收集的数据类型,以及您的应用程序或第三方 SDK 使用的必需原因 API。对于您的应用程序或第三方 SDK 收集的每种数据类型以及使用的必需原因 API 类别,应用程序或第三方 SDK 需要在其捆绑的隐私清单文件中记录这些原因。
Defold 通过 game.project 文件中的隐私清单字段提供了一个默认的隐私清单。创建应用程序包时,隐私清单将与项目依赖项中的任何隐私清单合并,并包含在应用程序包中。
有关隐私清单的更多信息,请参阅 Apple 的官方文档。
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB