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.
Checking the stable version of the documentation...
為 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 憑證檔案和密碼。
公證匯出的應用程式
在「公證 > 公證」選項中選擇「PyOxidizer rcodesign」。
要對 App 進行公證,你必須禁用
Debugging授權。在「Notarization」部分設定有效的「App Store Connect <https://developer.apple.com/documentation/appstoreconnectapi>`__ API UUID/金鑰」。
你可以使用 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/金鑰。
這些選項僅於使用 Xcode altool 進行公證時可見。
授權
強化執行階段授權
強化運作時授權(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)除錯匯出的應用程式。正式發行時應停用本授權。 |
Allow JIT Code Execution、Allow Unsigned Executable Memory、Allow DYLD Environment Variables 授權在 Godot Mono 匯出中始終啟用,在匯出選項中不可見。
Godot 並不支援這些功能的開箱即用,請在使用需要用到它們的外掛程式時啟用。
要對 App 進行公證,你必須禁用 Debugging 授權。
App 沙盒授權
App 沙盒會限制對使用者資料、網路、裝置的存取。沙盒 App 無法存取檔案系統的大部分位置,無法使用自訂檔對話方塊,也無法執行 .app 組合包以外的可執行檔(通過 OS.execute 和 OS.create_process)。詳情請參閱 App Sandbox。
備註
若要透過 App Store 發佈應用程式,必須啟用 App 沙盒。
授權 |
說明 |
|---|---|
已啟用 |
啟用 App 沙盒功能。 |
網路伺服器 |
啟用後可讓應用程式監聽外部網路連線。 |
網路客戶端 |
啟用後可讓應用程式建立對外網路連線。 |
裝置 USB |
啟用後可讓應用程式與 USB 裝置互動。若需支援有線控制器必須啟用本授權。 |
裝置藍芽 |
啟用後可讓應用程式與藍牙裝置互動。若需支援無線控制器必須啟用本授權。 |
檔案下載 [7] |
允許讀寫使用者的「下載」資料夾。 |
檔案圖片 [7] |
允許讀寫使用者的「圖片」資料夾。 |
檔案音樂 [7] |
允許讀寫使用者的「音樂」資料夾。 |
檔案影片 [7] |
允許讀寫使用者的「影片」資料夾。 |
刪除所選 |
允許讀寫任意資料夾。使用者必須於原生檔案對話框中手動選取該資料夾以獲取權限。 |
輔助執行檔 |
嵌入於 app 組合包中的輔助執行檔清單。啟用沙盒後,應用程式僅能執行此清單內的執行檔。 |
你也可以於 privacy/*_folder_usage_description 選項中,為不同資料夾提供用途說明。
備註
你可以選擇自訂授權檔以覆蓋預設授權,若如此設定,其餘授權選項將會被忽略。
環境變數
您可以使用下列環境變數在編輯器外部設定匯出選項。在匯出過程中,這些值會覆寫您在匯出選單中設定的值。
匯出選項 |
環境變數 |
|---|---|
加密/加密金鑰 |
|
選項/程式碼設計/憑證檔案 |
|
選項/程式碼設計/憑證密碼 |
|
選項/程式碼設計/配置檔案 |
|
選項/公證/API UUID |
|
選項/公證/API 金鑰 |
|
選項/公證/API 金鑰 ID |
|
選項/公證/Apple ID 名稱 |
|
選項/公證/Apple ID 密碼 |
|
匯出選項
完整的可用匯出選項列表請見 EditorExportPlatformMacOS 類別參考。