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...
Exportieren für macOS
Siehe auch
Diese Seite beschreibt, wie man ein Godot-Projekt nach macOS exportiert. Wenn Sie stattdessen Editor- oder Exportvorlagen-Binärdateien aus dem Quellcode kompilieren möchten, lesen Sie Kompilieren für MacOS.
macOS apps exported with the official export templates are exported as a single "Universal 2" binary .app
bundle, a folder with a specific structure which stores the executable, libraries and all the project files.
This bundle can be exported as is, packed in a ZIP archive or DMG disk image (only supported when exporting from a computer running macOS).
Universal binaries for macOS support both Intel x86_64 and ARM64 (Apple Silicon) architectures.
Warnung
Due to file system limitations, raw .app
bundles exported from Windows lack executable
flag and won't run on macOS.
To fix it, use the chmod +x {executable_name}
command after transferring the exported .app
to macOS or Linux. Projects exported as .zip
aren't affected by this issue.
The main executable located in the Contents/MacOS/
subfolder, as well as optional helper executables in the Contents/Helpers/
subfolder, should have executable
permission for the .app
bundle to be valid.
Anforderungen
Laden Sie die Godot-Exportvorlagen herunter. Verwenden Sie das Godot-Menü:
Editor> Exportvorlagen verwalten
.Ein gültiger und eindeutiger
Bundle-Identifikator
sollte im AbschnittAnwendung
der Exportoptionen angegeben werden.
Warnung
Projekte, die ohne Code-Signierung und Notarisierung exportiert werden, werden von Gatekeeper blockiert, wenn sie aus unbekannten Quellen heruntergeladen werden. Weitere Informationen finden Sie auf der Seite Ausführen von Godot-Anwendungen unter macOS.
Unterzeichnung und Notarisierung des Codes
Standardmäßig werden unter macOS nur Anwendungen ausgeführt, die signiert und notarialisiert sind. Wenn Sie eine andere Signierkonfiguration verwenden, finden Sie unter Ausführen von Godot-Anwendungen unter macOS Workarounds.
Um eine App zu notarisieren, müssen Sie ein gültiges Apple Developer ID-Zertifikat haben.
Wenn Sie ein Apple Developer ID-Zertifikat haben und aus macOS exportieren
Installieren Sie die Xcode-Kommandozeilentools und öffnen Sie Xcode mindestens einmal oder führen Sie den Befehl sudo xcodebuild -license accept
aus, um die Lizenzvereinbarung zu akzeptieren.
Signieren der exportierten App
Wählen Sie
Xcode Codesign
in der OptionCode Signing > Codesign
.Stellen Sie eine gültige Apple ID Zertifikatsidentität (Zertifikat "Common Name") im Abschnitt
Code Signing > Identity
ein.
Notarisieren der exportierten App
Wählen Sie
Xcode altool
in der OptionNotarization > Notarization
.Deaktivieren Sie die Berechtigung
Debugging
.Setzen Sie ein gültiges Apple ID Login / App-spezifisches Passwort oder App Store Connect API UUID / Key im Abschnitt
Notarization
.
Sie können den Befehl xcrun notarytool history
verwenden, um den Notarisierungsstatus zu überprüfen und den Befehl xcrun notarytool log {ID}
verwenden, um das Notarisierungsprotokoll herunterzuladen.
Wenn Sie auf Probleme bei der Notarisierung stoßen, finden Sie weitere Informationen unter Lösung allgemeiner Notarisierungsprobleme.
Nachdem die Notarisierung abgeschlossen ist, heften Sie das Ticket an das exportierte Projekt.
Wenn Sie ein Apple Developer ID-Zertifikat haben und von Linux oder Windows exportieren
Installieren Sie PyOxidizer rcodesign, und konfigurieren Sie den Pfad zu rcodesign
in den Editor-Einstellungen > Export > macOS > rcodesign
.
Signieren der exportierten App
Wählen Sie
PyOxidizer rcodesign
in der OptionCode Signing > Codesign
.Setzen Sie eine gültige Apple ID PKCS #12 Zertifikatsdatei und ein Passwort im Abschnitt
Code Signing
.
Notarisieren der exportierten App
Wählen Sie
PyOxidizer rcodesign
in der OptionNotarization > Notarization
.Deaktivieren Sie die Berechtigung
Debugging
.Setzen Sie gültige App Store Connect-API UUID / Schlüssel im Abschnitt
Notarisierung
.
Sie können den Befehl rcodesign notary-log
verwenden, um den Status der Notarisierung zu überprüfen.
Nachdem die Notarisierung abgeschlossen ist, verwenden Sie den Befehl rcodesign staple
, um das Ticket an das exportierte Projekt zu heften.
Wenn Sie kein Apple Developer ID-Zertifikat besitzen
Wählen Sie
Built-in (nur ad-hoc)
in der OptionCode Signing > Codesign
.Wählen Sie
Deaktiviert
in der OptionNotarization > Notarization
.
In diesem Fall wird Godot eine Ad-hoc-Signatur verwenden, die das Ausführen einer exportierten Anwendung für den Endbenutzer einfacher macht. Weitere Informationen finden Sie auf der Seite Ausführen von Godot-Anwendungen auf macOS.
Signieroptionen
Option |
Beschreibung |
---|---|
Codesign |
Tool für die Codesignierung. |
Identität |
Der "Full Name" oder "Common Name" der signierenden Identität, gespeichert in der macOS-Keychain. [1] |
Zertifikatsdatei |
Die PKCS #12-Zertifikatsdatei. [2] |
Zertifikatspasswort |
Passwort für die Zertifikatsdatei. [2] |
Benutzerdefinierte Optionen |
Array von Kommandozeilenargumenten, die an das Code Signing Tool übergeben werden. |
Notarisierungsoptionen
Option |
Beschreibung |
---|---|
Notarisierung |
Tool für die Notarisierung. |
Apple-ID-Name |
Apple ID Account-Name (E-Mail-Adresse). [3] |
Apple-ID-Password |
Apple ID App-spezifisches Passwort. Siehe Verwendung von app-spezifischen Passwörtern, um die Zwei-Faktor-Authentifizierung zu aktivieren und ein App-Passwort zu erstellen. [3] |
Apple-Team-ID |
Team-ID ("Organisationseinheit"), wenn Ihre Apple ID zu mehreren Teams gehört (optional). [3] |
API UUID |
Apple App Store Connect API-Aussteller UUID. |
API-Schlüssel |
Apple App Store Connect API-Schlüssel. |
Bemerkung
Sie sollten entweder Apple ID Name/Passwort oder App Store Connect API UUID/Key einstellen.
Diese Optionen sind nur beim Notarisieren mit Xcode altool sichtbar.
Weitere Informationen finden Sie unter Notarisierung von macOS-Software vor der Verteilung.
Berechtigungen
Gehärtete Laufzeitberechtigungen
Die gehärteten Laufzeitberechtigungen verwalten die Sicherheitsoptionen und die Richtlinien für den Ressourcenzugriff. Siehe Gehärtete Laufzeit für weitere Informationen.
Berechtigung |
Beschreibung |
---|---|
JIT-Code-Ausführung zulassen [4] |
Ermöglicht die Erstellung von beschreibbarem und ausführbarem Speicher für JIT-Code. Wenn Sie Add-ons mit dynamischem oder selbstmodifizierendem nativen Code verwenden, aktivieren Sie diese gemäß der Dokumentation des Add-ons. |
Unsigned Executable Memory zulassen [4] |
Ermöglicht die Erstellung von beschreibbarem und ausführbarem Speicher ohne JIT-Einschränkungen. Wenn Sie Add-ons mit dynamischem oder selbstmodifizierendem nativen Code verwenden, aktivieren Sie diese gemäß der Dokumentation des Add-ons. |
DYLD-Umgebungsvariablen zulassen [4] |
Ermöglicht der Anwendung die Verwendung von dynamischen Linker-Umgebungsvariablen zum Einfügen von Code. Wenn Sie Add-ons mit dynamischem oder selbstmodifizierendem nativen Code verwenden, aktivieren Sie diese gemäß der Dokumentation des Add-ons. |
Bibliotheksvalidierung deaktivieren |
Erlaubt der Anwendung, beliebige Bibliotheken und Frameworks zu laden. Aktivieren Sie dies, wenn Sie GDExtension-Add-ons oder Ad-hoc-Signierung verwenden oder vom Benutzer bereitgestellte externe Add-ons unterstützen möchten. |
Audioeingang |
Aktivieren Sie diese Option, wenn Sie das Mikrofon oder andere Audio-Eingangsquellen verwenden müssen. Wenn sie aktiviert ist, sollten Sie in der Option privacy/microphone_usage_description auch eine Nutzungsmeldung angeben. |
Kamera |
Aktivieren Sie die Option, wenn Sie die Kamera verwenden müssen. Wenn sie aktiviert ist, sollten Sie auch eine Nutzungsmeldung in der Option privacy/camera_usage_description angeben. |
Ort |
Aktivieren Sie diese Option, wenn Sie Standortinformationen aus den Standortdiensten verwenden müssen. Wenn sie aktiviert ist, sollten Sie in der Option privacy/location_usage_description auch eine Nutzungsmeldung angeben. |
Adressbuch |
[5] Aktivieren Sie diese Option, um den Zugriff auf die Kontakte im Adressbuch des Benutzers zuzulassen. Wenn Sie diese Option aktivieren, sollten Sie auch eine Nutzungsmeldung in der Option privacy/address_book_usage_description angeben. |
Kalender |
[5] Aktivieren Sie diese Option, um den Zugriff auf den Kalender des Benutzers zu ermöglichen. Wenn Sie diese Option aktivieren, sollten Sie in der Option privacy/calendar_usage_description auch eine Nutzungsmeldung angeben. |
Fotobibliothek |
[5] Aktivieren Sie diese Option, um den Zugriff auf die Fotobibliothek des Benutzers zu erlauben. Wenn Sie diese Option aktivieren, sollten Sie auch eine Nachricht über die Verwendung in der Option privacy/photos_library_usage_description angeben. |
Apple-Events |
[5] Aktivieren Sie diese Option, damit die Anwendung Apple-Events an andere Anwendungen senden kann. |
Debugging |
[6] Sie können diese Berechtigung vorübergehend aktivieren, um den nativen Debugger (GDB, LLDB) mit der exportierten Anwendung zu verwenden. Diese Berechtigung sollte für den Produktionsexport deaktiviert werden. |
Die Berechtigungen JIT-Code-Ausführung zulassen
, Unsigned Executable Memory zulassen
und DYLD-Umgebungsvariablen zulassen
sind für die Godot-Mono-Exporte immer aktiviert und in den Exportoptionen nicht sichtbar.
Diese Features werden von Godot nicht von Haus aus unterstützt. Aktivieren Sie sie nur, wenn Sie Add-ons verwenden, die sie benötigen.
Um eine Anwendung zu notarisieren, müssen Sie die Berechtigung Debugging
deaktivieren.
App Sandbox-Berechtigung
Die App-Sandbox schränkt den Zugriff auf Benutzerdaten, Netzwerke und Geräte ein. Apps in der Sandbox können nicht auf den größten Teil des Dateisystems zugreifen, können keine benutzerdefinierten Dateidialoge verwenden und führen Binärdateien (mit OS.execute
und OS.create_process
) außerhalb des . app
-Bundles aus. Siehe App Sandbox für weitere Informationen.
Bemerkung
Um eine App über den App Store zu vertreiben, müssen Sie die App Sandbox aktivieren.
Berechtigung |
Beschreibung |
---|---|
Aktiviert |
Aktiviert die App-Sandbox. |
Netzwerk-Server |
Aktivieren Sie diese Option, damit die Anwendung auf eingehende Netzwerkverbindungen warten kann. |
Netzwerk-Client |
Aktivieren Sie diese Option, damit die Anwendung ausgehende Netzwerkverbindungen herstellen kann. |
Gerät USB |
Aktivieren Sie diese Option, damit die App mit USB-Geräten interagieren kann. Diese Berechtigung ist für die Verwendung von kabelgebundenen Controllern erforderlich. |
Gerät Bluetooth |
Aktivieren Sie diese Option, damit die App mit Bluetooth-Geräten interagieren kann. Diese Berechtigung ist für die Verwendung von drahtlosen Controllern erforderlich. |
Dateien Downloads [7] |
Ermöglicht den Lese- oder Schreibzugriff auf den Ordner "Downloads" des Benutzers. |
Dateien Bilder [7] |
Ermöglicht den Lese- oder Schreibzugriff auf den Ordner "Bilder" des Benutzers. |
Dateien Musik [7] |
Ermöglicht den Lese- oder Schreibzugriff auf den Ordner "Musik" des Benutzers. |
Dateien Filme [7] |
Ermöglicht den Lese- oder Schreibzugriff auf den Ordner "Filme" des Benutzers. |
Dateien Benutzerdefiniert [7] |
Erlaubt Lese- oder Schreibzugriff auf beliebige Ordner. Um Zugriff zu erhalten, muss der Benutzer einen Ordner aus dem nativen Dateidialog auswählen. |
Helfer Ausführbare Datei |
Liste der ausführbaren Hilfsprogramme, die in das App-Bundle eingebettet werden. Sandbox-Apps können nur diese ausführbaren Dateien ausführen. |
Sie können in den Optionen privacy/*_folder_usage_description optional Nutzungsmeldungen für verschiedene Ordner angeben.
Bemerkung
Sie können die Standardberechtigungen außer Kraft setzen, indem Sie eine benutzerdefinierte Berechtigungsdatei auswählen; in diesem Fall werden alle anderen Berechtigungen ignoriert.
Umgebungsvariablen
Sie können die folgenden Umgebungsvariablen verwenden, um Exportoptionen außerhalb des Editors festzulegen. Während des Exportvorgangs überschreiben diese die Werte, die Sie im Exportmenü festgelegt haben.
Export-Option |
Umgebungsvariable |
---|---|
Verschlüsselung / Verschlüsselungsschlüssel |
|
Optionen / Codesign / Zertifikatsdatei |
|
Optionen / Codesign / Zertifikatspasswort |
|
Optionen / Codesign / Bereitstellungsprofil |
|
Optionen / Notarisierung / API UUID |
|
Optionen / Notarisierung / API-Schlüssel |
|
Optionen / Notarisierung / API-Schlüssel-ID |
|
Optionen / Notarisierung / Apple ID-Name |
|
Optionen / Notarisierung / Apple ID-Passwort |
|