為 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(組合包識別碼)。
警告
若專案匯出時未進行程式碼簽章與公證,並從未知來源下載,將會被 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 類別參考。