为 macOS 导出

参见

This page describes how to export a Godot project to macOS. If you're looking to compile editor or export template binaries from source instead, read 为 macOS 平台编译.

macOS App 会被导出为 .app 捆绑包,这是一个具有特殊结构的文件夹,里面存放着可执行文件、库,以及所有项目文件。这个捆绑包会被打包到 ZIP 归档文件或 DMG 磁盘映像文件中(后者只支持用于导出到 macOS)。

需求

  • 要启用代码签名和公证,你必须在运行 macOS 并且装有 Xcode 命令行工具的电脑上执行导出。

  • 下载 Godot 导出模板。使用 Godot 菜单:编辑器 > 管理导出模板

警告

Projects exported without code signing and notarization will be blocked by Gatekeeper if they are downloaded from unknown sources, see the Running Godot apps on macOS page for more information.

代码签名与公证

By default, macOS will run only applications that are signed and notarized, if you use any other signing configuration see Running Godot apps on macOS for workarounds.

要公证 App,你必须持有有效的 Apple 开发者 ID 证书

如果你有 Apple 开发者 ID 证书

  • 启用 Code SigningNotarizationHardened RuntimeTimestamp 并禁用 Debug 授权。

  • 提供有效的 Apple ID 证件并证明身份。

如果启用了 Notarization,Godot 会自动将导出的项目进行上传公证。

你可以使用 xcrun notarytool history 命令检查公证状态,使用 xcrun notarytool log {ID} 命令下载公证日志。

如果你在公证过程中遇到了问题,请在 Resolving common notarization issues 查看更多信息。

完成公证后,请将票证装订到导出的项目上。

如果你没有 Apple 开发者 ID 证书

保持 Code Signing 启用,将 Identity 选项留空,这样 Godot 就会使用 Ad-hoc 签名,让最终用户能够更方便地运行导出的 App。

签名选项

选项

描述

Enable

启用代码签名。

Identity

签名主体的“全名”或“通用名”,存储在 macOS 钥匙串中。1

Timestamp

向时间戳服务器请求认证签名的时间。是公证所必须的。

Hardened Runtime

启用“加固运行时”。是公证所必需的。

替换现有签名

替换 GDNative 库与内嵌辅助可执行文件的现有签名。

备注

要对 App 进行公证,必须启用 Hardened RuntimeTimestamp

1

使用 Ad-hoc 签名时请将 Identity 选项留空。

公证选项

选项

描述

Enable

启用公证自动上传。

Apple ID Name

Apple ID 账户名称(邮箱地址)

Apple ID Password

Apple ID 的 App 专用密码。请参阅《使用 App 专用密码》启用双重认证并创建 App 密码。

Apple Team ID

如果你的 Apple ID 属于多个团队,即团队 ID

详情请参阅 Notarizing macOS Software Before Distribution

授权

强化运行时授权

强化运行时授权(Hardened Runtime entitlements)管理的是安全性选项和资源访问策略。详情请参阅 Hardened Runtime

授权

描述

Allow JIT Code Execution 2

允许为 JIT 代码创建可写可执行的内存。如果你正在使用动态或能够自我修改原生代码的插件,请根据插件文档启用它们。

Allow Unsigned Executable Memory 2

允许创建没有 JIT 限制的可写可执行的内存。如果你正在使用动态或能够自我修改原生代码的插件,请根据插件文档启用它们。

Allow DYLD Environment Variables 2

允许 App 使用动态链接器环境变量注入代码。如果你正在使用动态或能够自我修改原生代码的插件,请根据插件文档启用它们。

Disable Library Validation

允许 App 加载任意库和框架。如果你使用 GDNative 插件和 Ad-hoc 签名,或者想要支持用户提供的外部插件,请启用。

Audio Input

请在需要使用麦克风或者其他音频输入源时启用。启用时,你应该还要在 privacy/microphone_usage_description 中提供用途信息。

Camera

请在需要使用摄像头时启用。启用时,你应该还要在 privacy/camera_usage_description 中提供用途信息。

位置

请在需要使用位置服务时启用。启用时,你应该还要在 privacy/location_usage_description 中提供用途信息。

Address Book

3 请在需要访问用户的地址簿时启用。启用时,你应该还要在 privacy/address_book_usage_description 中提供用途信息。

Calendars

3 请在需要访问用户的日历时启用。启用时,你应该还要在 privacy/calendar_usage_description 中提供用途信息。

Photo Library

3 请在需要访问用户的照片图库时启用。启用时,你应该还要在 privacy/photos_library_usage_description 中提供用途信息。

Apple Events

3 请在需要允许 App 向其他 App 发送 App 事件时启用。

调试

4 你可以临时启用这个授权来对导出的 App 使用原生调试器(GDB、LLDB)。生产导出中应该禁用这个授权。

2(1,2,3)

Allow JIT Code ExecutionAllow Unsigned Executable MemoryAllow DYLD Environment Variables 授权在 Godot Mono 导出中始终启用,在导出选项中不可见。

3(1,2,3,4)

Godot 并不支持这些特性的开箱即用,请在使用需要用到它们的插件时启用。

4

要对 App 进行公证,你必须禁用 Debugging 授权。

App 沙盒授权

App 沙盒会限制对用户数据、网络、设备的访问。沙盒 App 无法访问文件系统的大部分位置,无法使用自定义文件对话框,也无法执行 .app 捆绑包以外的可执行文件(通过 OS.executeOS.create_process)。详情请参阅 App Sandbox

备注

要通过 App Store 分发 App,必须启用 App 沙盒。

授权

描述

Enabled

启用 App 沙盒。

Network Server

允许 App 监听入站网络请求。

Network Client

允许 App 监听出站网络请求。

Device USB

允许 App 与 USB 设备交互。使用有线控制器需要这项授权。

Device Bluetooth

允许 App 与蓝牙设备交互。使用无线控制器需要这项授权。

Files Downloads 5

允许对用户的“ Downloads”文件夹进行读写。

Files Pictures 5

允许对用户的“ Pictures”文件夹进行读写。

Files Music 5

允许对用户的“ Music”文件夹进行读写。

Files Movies 5

允许对用户的“ Movies”文件夹进行读写。

Files User Selected 5

允许对用户的任意文件夹进行读写。要获取访问权限,必须由用户在原生文件对话框中选中该文件夹。

Helper Executable

要在 App 捆绑包中嵌入的辅助可执行文件列表。沙盒 App 仅限于执行这些可执行文件。

5(1,2,3,4,5)

针对不同的文件夹,你还可以通过 privacy/*_folder_usage_description 选项提供用途信息。

选择自定义授权文件即可覆盖默认授权,此时其他所有授权都会被忽略。