Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

為 macOS 匯出

也參考

本頁說明如何將 Godot 專案匯出到 macOS。如果你想從原始碼編譯編輯器或匯出樣板二進位檔,請參考 在 macOS 上編譯

使用官方匯出範本匯出的 macOS 應用會以單一「Universal 2」二進位檔 .app 組合包形式存在,這是一個具有特定結構的資料夾,包含執行檔、函式庫與所有專案檔案。此組合包可以直接匯出,也可打包成 ZIP 壓縮檔,或打包成 DMG 磁碟映像(僅在 macOS 上匯出時支援)。適用於 macOS 的通用二進位檔同時支援 Intel x86_64 與 ARM64(Apple Silicon)架構

警告

由於檔案系統限制, 從 Windows 匯出的 .app 組合包會缺少 executable 旗標, 無法在 macOS 上執行。以 .zip 匯出的專案不受此影響。要在 macOS 上執行從 Windows 匯出的 .app , 請將該 .app 傳至 macOS 或 Linux 裝置, 並在終端機使用 chmod +x {executable_name} 指令來加入 executable 權限。位於 Contents/MacOS/ 子資料夾的主要執行檔, 以及位於 Contents/Helpers/ 子資料夾的選用輔助執行檔, 都應設為 executable, 才能使 .app 組合包有效。

系統需求

  • 下載 Godot 匯出樣板。使用 Godot 選單: [編輯器] > [管理匯出樣板]

  • 請於匯出選項中的 Application (應用程式)區段設定一個有效且唯一的 Bundle identifier (組合包識別碼)。

備註

A valid bundle ID can only contain alphanumeric characters, hyphens, and periods (A-Z, a-z, 0-9, -, and .). Apple recommends using reverse-DNS format (e.g. com.example.your-game) of a domain you own, so that your bundle ID is guaranteed to be unique. Bundle IDs are case-insensitive. See CFBundleIdentifier.

警告

若專案匯出時未進行程式碼簽章與公證,並從未知來源下載,將會被 Gatekeeper 阻擋。詳情請參閱 在 macOS 執行 Godot 應用 頁面。

程式碼簽章與公證

預設情況下,macOS 只會運作經過簽章和公證的應用程式。如果你使用了其他簽章配置,替代方案請參閱 在 macOS 上運作 Godot 應用

要公證應用程式,必須 擁有有效的 Apple Developer ID 憑證

若你有 Apple Developer ID 憑證,且於 macOS 匯出

安裝 Xcode <https://developer.apple.com/xcode/>`__ 命令列工具並開啟 Xcode 至少一次或執行 sudo xcodebuild -license Accept 命令接受許可協議。

簽署匯出的應用程式

  • 在“程式碼簽章 > 程式碼設計”選項中選擇“Xcode 程式碼設計”。

  • 在「程式碼簽署 > 身分」部分設定有效的 Apple ID 憑證身分(憑證「通用名稱」)。

公證匯出的應用程式

  • 在「公證 > 公證」選項中選擇「Xcode altool」。

  • 要對 App 進行公證,你必須禁用 Debugging 授權。

  • 設定有效的 Apple ID 登入/應用程式。特定密碼或「App Store Connect <https://developer.apple.com/documentation/appstoreconnectapi>`__ API UUID /「公證」區段中的金鑰。

你可以使用 xcrun notarytool history 命令檢查公證狀態,使用 xcrun notarytool log {ID} 命令下載公證紀錄。

如果你在公證過程中遇到了問題,請在 Resolving common notarization issues 查看更多資訊。

完成公證後,請將`票證裝訂 <https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/customizing_the_notarization_workflow>`__到匯出的專案上。

若你有 Apple Developer ID 憑證,且於 Linux 或 Windows 匯出

請安裝 PyOxidizer rcodesign,並於「編輯器設定 > 匯出 > macOS > rcodesign」中設定 rcodesign 的路徑。

簽署匯出的應用程式

  • 於「程式碼簽章 > Codesign」選項中選擇「PyOxidizer rcodesign」。

  • 在「程式碼簽署」部分設定有效的 Apple ID PKCS #12 憑證檔案和密碼。

公證匯出的應用程式

你可以使用 rcodesign notary-log 指令檢查公證狀態。

公證完成後,請使用 rcodesign staple 指令將票證裝訂到匯出的專案上。

若你沒有 Apple Developer ID 憑證

  • 程式碼簽章 > Codesign 選項中選擇 內建 (僅 ad-hoc)

  • 於「公證 > 公證」選項中選擇「停用」。

此時 Godot 將採用 ad-hoc 簽章,讓終端使用者更容易執行匯出的應用。詳情請參見 在 macOS 上執行 Godot 應用 頁面。

簽章選項

最佳化

說明

程式碼簽章

用於程式碼簽章的工具。

身份

簽章身分的「全名」或「通用名稱」,儲存在 macOS 鑰匙圈。 [1]

憑證檔案

PKCS #12 憑證檔案。 [2]

憑證密碼

該憑證檔案的密碼。 [2]

自訂選項

提供給程式碼簽章工具的命令列參數陣列。

公證選項

最佳化

說明

公證

用於公證的工具。

Apple ID 名稱

Apple ID 帳號名稱(電子郵件地址)。 [3]

Apple ID 密碼

Apple ID 的應用程式專用密碼。請參考 使用應用程式專用密碼 以啟用雙重驗證並建立專用密碼。 [3]

Apple 團隊 ID

團隊 ID(「組織單位」),若你的 Apple ID 屬於多個團隊可選填。[3]

API UUID

Apple App Store Connect API 頒發者 UUID。

API 金鑰

Apple App Store Connect API 金鑰。

備註

您應該設定 Apple ID 名稱/密碼或 App Store Connect API UUID/金鑰。

詳情請參閱 Notarizing macOS Software Before Distribution

授權

強化執行階段授權

強化運作時授權(Hardened Runtime entitlements)管理的是安全性選項和資源存取策略。詳情請參閱 Hardened Runtime

授權

說明

允許 JIT 程式碼執行 [4]

允許為 JIT 程式碼建立可寫可執行的記憶體。如果你正在使用動態或能夠自我修改原生程式碼的外掛程式,請根據外掛程式文件啟用它們。

允許未簽章可執行記憶體 [4]

允許建立沒有 JIT 限制的可寫可執行的記憶體。如果你正在使用動態或能夠自我修改原生程式碼的外掛程式,請根據外掛程式文件啟用它們。

允許 DYLD 環境變數 [4]

允許 App 使用動態連結器環境變數注入程式碼。如果你正在使用動態或能夠自我修改原生程式碼的外掛程式,請根據外掛程式文件啟用它們。

停用函式庫驗證

允許 App 載入任意庫和框架。如果你使用 GDNative 外掛程式和 Ad-hoc 簽章,或者想要支援使用者提供的外部外掛程式,請啟用。

音源輸入

請在需要使用麥克風或者其他音訊輸入源時啟用。啟用時,你應該還要在 privacy/microphone_usage_description 中提供用途資訊。

相機

請在需要使用攝像頭時啟用。啟用時,你應該還要在 privacy/camera_usage_description 中提供用途資訊。

位置

請在需要使用位置服務時啟用。啟用時,你應該還要在 privacy/location_usage_description 中提供用途資訊。

地址簿

[5] 啟用後可存取使用者通訊錄,啟用時應在 privacy/address_book_usage_description 選項中提供用途說明。

日曆

[5] 啟用後可存取使用者行事曆,啟用時應在 privacy/calendar_usage_description 選項中提供用途說明。

照片圖庫

[5] 啟用後可存取使用者照片圖庫,啟用時應在 privacy/photos_library_usage_description 選項中提供用途說明。

Apple 活動

[5] 啟用後允許應用程式向其他 app 傳送 Apple 事件。

除錯

[6] 可暫時啟用本授權以便使用原生除錯器(如 GDB、LLDB)除錯匯出的應用程式。正式發行時應停用本授權。

App 沙盒授權

App 沙盒會限制對使用者資料、網路、裝置的存取。沙盒 App 無法存取檔案系統的大部分位置,無法使用自訂檔對話方塊,也無法執行 .app 組合包以外的可執行檔(通過 OS.executeOS.create_process)。詳情請參閱 App Sandbox

備註

若要透過 App Store 發佈應用程式,必須啟用 App 沙盒。

授權

說明

已啟用

啟用 App 沙盒功能。

網路伺服器

啟用後可讓應用程式監聽外部網路連線。

網路客戶端

啟用後可讓應用程式建立對外網路連線。

裝置 USB

啟用後可讓應用程式與 USB 裝置互動。若需支援有線控制器必須啟用本授權。

裝置藍芽

啟用後可讓應用程式與藍牙裝置互動。若需支援無線控制器必須啟用本授權。

檔案下載 [7]

允許讀寫使用者的「下載」資料夾。

檔案圖片 [7]

允許讀寫使用者的「圖片」資料夾。

檔案音樂 [7]

允許讀寫使用者的「音樂」資料夾。

檔案影片 [7]

允許讀寫使用者的「影片」資料夾。

刪除所選

允許讀寫任意資料夾。使用者必須於原生檔案對話框中手動選取該資料夾以獲取權限。

輔助執行檔

嵌入於 app 組合包中的輔助執行檔清單。啟用沙盒後,應用程式僅能執行此清單內的執行檔。

備註

你可以選擇自訂授權檔以覆蓋預設授權,若如此設定,其餘授權選項將會被忽略。

環境變數

您可以使用下列環境變數在編輯器外部設定匯出選項。在匯出過程中,這些值會覆寫您在匯出選單中設定的值。

macOS 匯出環境變數

匯出選項

環境變數

加密/加密金鑰

GODOT_SCRIPT_ENCRYPTION_KEY

選項/程式碼設計/憑證檔案

GODOT_MACOS_CODESIGN_CERTIFICATE_FILE

選項/程式碼設計/憑證密碼

GODOT_MACOS_CODESIGN_CERTIFICATE_PASSWORD

選項/程式碼設計/配置檔案

GODOT_MACOS_CODESIGN_PROVISIONING_PROFILE

選項/公證/API UUID

GODOT_MACOS_NOTARIZATION_API_UUID

選項/公證/API 金鑰

GODOT_MACOS_NOTARIZATION_API_KEY

選項/公證/API 金鑰 ID

GODOT_MACOS_NOTARIZATION_API_KEY_ID

選項/公證/Apple ID 名稱

GODOT_MACOS_NOTARIZATION_APPLE_ID_NAME

選項/公證/Apple ID 密碼

GODOT_MACOS_NOTARIZATION_APPLE_ID_PASSWORD

匯出選項

完整的可用匯出選項列表請見 EditorExportPlatformMacOS 類別參考。