在 macOS 上运行 Godot 应用

参见

这个页面描述的是在 macOS 上运行 Godot 项目。如果你还没有导出项目,请先阅读 为 macOS 导出

默认情况下,macOS 只会运行签名并公证后的应用程序。

备注

当从下载文件夹运行应用程序或仍处于隔离状态时,Gatekeeper将执行*路径随机化[path randomization]*作为安全措施。这就中断了应用程序对相对路径的访问,而应用程序依赖于相对路径来工作。要解决此问题,请将应用程序移动到“mayoto/Applications”文件夹。

通常,macOS应用程序应该避免依赖来自应用程序文件夹的相对路径。

根据 macOS 应用签名和分发方法的不同,可能出现下列情况:

App 已签名并公证,通过 App Store 分发

备注

App 开发者需要加入 Apple 开发者计划,然后在导出时配置签名和公证选项,最后将 App 上传到 App Store。

App 应该是可以开箱即用的,无需额外的用户交互。

App 已签名并公证,在 App Store 外分发

备注

App 开发者需要加入 Apple 开发者计划,然后在导出时配置签名和公证选项,最后将 App 以“.DMG”或“.ZIP”归档文件的形式分发。

首次运行该 App 时,会出现如下对话框:

../../_images/signed_and_notarized_0.png

单击 打开 启动应用。

如果你看到了如下的警告对话框,那么你的 Mac 是被设置成了只允许来自 App Store 的应用。

../../_images/signed_and_notarized_1.png

要允许第三方程序,请打开 系统设置,点击 安全性与隐私,然后点击 通用,解锁设置,然后选择 App Store 和被认可的开发者

../../_images/sys_pref_0.png

应用已签名(包括 Ad-hoc 签名)但未公证

备注

应用开发者使用了自签名证书或 Ad-hoc 签名(Godot 导出项目的默认行为)。

首次运行该 App 时,会出现如下对话框:

../../_images/signed_0.png

要运行此应用,你可以临时覆盖 Gatekeeper:

  • 可以打开 系统设置,点击 安全性与隐私,然后点击 通用,然后点击 仍然打开

    ../../_images/sys_pref_1.png

  • 也可以在访达窗口中右键单击(Control-单击)应用图标,选择菜单中的 打开

    ../../_images/signed_1.png

  • 然后在确认对话框中单击 打开

    ../../_images/signed_2.png

  • 如出现提示就输入密码。

另一种选择是完全禁用Gatekeeper。请注意,这确实降低了你的计算机的安全性,允许你运行任何软件,你想要的。为此,运行’sudo spctl-master-disable’in the Terminal,输入你的密码,然后**Anywhere**选项将可用:

../../_images/macos_allow_from_anywhere.png

请注意,Gatekeeper将在macOS更新时重新启用自己。

App 未签名,可执行文件由链接器签名

备注

App 使用官方导出模板构建,但未签名。

首次运行该 App 时,会出现如下对话框:

../../_images/linker_signed_1.png

要运行这个 App,你应该手动移除“隔离”(quarantine)扩展文件属性:

  • 打开 Terminal.app(按 Cmd + 空格 并输入 Terminal)。

  • 切换到包含目标应用程序的文件夹。

    使用 cd 到_App_文件夹的路径 命令,例如在 Downloads 文件夹中的话就是 cd ~/Downloads/

  • 执行命令 xattr -dr com.apple.quarantine "未签名游戏.app"(包括引号和“.app”扩展名)。

App 和可执行文件都没有签名(仅适用于 Apple Slilicon 的 mac)

备注

App 使用自定义导出模板构建,使用 OSXCross 编译,完全没有签名。

首次运行该 App 时,会出现如下对话框:

../../_images/unsigned_1.png

要运行这个 App,你可以自己进行 Ad-hoc 签名:

  • 从 App Store 安装 Xcode,运行并确认安装命令行工具。

  • 打开 Terminal.app(按 Cmd + 空格 并输入 Terminal)。

  • 切换到包含目标应用程序的文件夹。

    使用 cd 到_App_文件夹的路径 命令,例如在 Downloads 文件夹中的话就是 cd ~/Downloads/

  • 运行以下命令:

    xattr -dr com.apple.quarantine "未签名游戏.app"(包括引号和“.app”扩展名)。

    codesign -s - --force --deep "未签名游戏.app"(包括引号和“.app”扩展名)。