Kompilieren für Android

Siehe auch

Diese Seite beschreibt, wie man Android-Exportvorlagen-Binärdateien aus dem Quellcode kompiliert. Wenn Sie Ihr Projekt stattdessen nach Android exportieren möchten, lesen Sie Exportieren für Android.

Anmerkung

In den meisten Fällen reicht es aus, den integrierten Deployer und die Exportvorlagen zu verwenden. Das manuelle Kompilieren der Android-APK ist vor allem für benutzerdefinierte Builds oder benutzerdefinierte Pakete für den Deployer nützlich.

Außerdem müssen Sie immer noch die im Exportieren für Android-Tutorial genannten Schritte befolgen, bevor Sie versuchen, eine benutzerdefinierte Exportvorlage zu erstellen.

Anforderungen

Zum Kompilieren unter Windows, Linux oder MacOS ist Folgendes erforderlich:

  • Python 3.8+.

  • SCons 4.0+ build system.

  • Android SDK (Kommandozeilen-Tools reichen aus).

    • Erforderliche SDK-Komponenten werden automatisch installiert.

    • Verwenden Sie unter Linux kein Android-SDK aus den Repositorys Ihrer Distribution, da es oft veraltet ist.

    • Verwenden Sie unter macOS kein Android-SDK, das von Homebrew bereitgestellt wird, da es nicht an einem einheitlichen Ort installiert wird.

  • Gradle (wird automatisch heruntergeladen und installiert, wenn es fehlt).

  • JDK 17 (entweder OpenJDK oder Oracle JDK).

    • Sie können einen Build von Adoptium herunterladen.

Siehe auch

Um den Godot-Quellcode zum Kompilieren zu erhalten, siehe Beschaffung des Quellcodes.

Eine allgemeine Übersicht über die Verwendung von SCons für Godot finden Sie unter Einführung in das Buildsystem.

Buildsystem einrichten

  • Setzen Sie die Umgebungsvariable ANDROID_HOME so, dass sie auf das Android SDK zeigt. Wenn Sie die Android-Kommandozeilen-Tools heruntergeladen haben, ist dies der Ordner, in den Sie den Inhalt des ZIP-Archivs entpackt haben.

    • Windows: Drücken Sie Windows + R, geben Sie "control system" ein, klicken Sie dann auf Erweiterte Systemeinstellungen im linken Fenster und klicken Sie dann auf Umgebungsvariablen in dem Fenster, das erscheint.

    • Linux oder macOS: Fügen Sie den Text export ANDROID_HOME="/pfad/zu/android-sdk" in Ihre .bashrc oder .zshrc ein, wobei /pfad/zu/android-sdk auf den Verzeichnisstamm der SDK-Verzeichnisse zeigt.

  • Installieren Sie die erforderlichen SDK-Komponenten in diesem Ordner:

    • Akzeptieren Sie die SDK-Komponentenlizenzen, indem Sie den folgenden Befehl ausführen, wobei android_sdk_path der Pfad zum Android SDK ist, und beantworten Sie dann alle Fragen mit y:

    cmdline-tools/latest/bin/sdkmanager --sdk_root=<android_sdk_path> --licenses
    
    • Schließen Sie das Setup ab, indem Sie den folgenden Befehl ausführen, wobei android_sdk_path der Pfad zum Android SDK ist.

    cmdline-tools/latest/bin/sdkmanager --sdk_root=<android_sdk_path> "platform-tools" "build-tools;34.0.0" "platforms;android-34" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;23.2.8568313"
    
  • Nachdem Sie das SDK und die Umgebungsvariablen eingerichtet haben, müssen Sie Ihr Terminal neustarten, damit die Änderungen übernommen werden. Wenn Sie eine IDE mit einem integrierten Terminal verwenden, müssen Sie die IDE neu starten.

  • Führen Sie scons platform=android aus. Wenn dies fehlschlägt, gehen Sie zurück und überprüfen Sie die Schritte. Wenn Sie das Setup korrekt abgeschlossen haben, wird das NDK heruntergeladen. Wenn Sie versuchen, die GDExtension zu kompilieren, müssen Sie zuerst die Engine kompilieren, um das NDK herunterzuladen, dann können Sie die GDExtension kompilieren.

Erstellen der Exportvorlagen

Godot needs three export templates for Android: the optimized "release" template (android_release.apk), the debug template (android_debug.apk), and the Gradle build template (android_source.zip). As Google requires all APKs to include ARMv8 (64-bit) libraries since August 2019, the commands below build templates containing both ARMv7 and ARMv8 libraries.

Die Kompilierung der Standard-Exportvorlagen erfolgt durch den Aufruf von SCons aus dem Godot-Stammverzeichnis mit den folgenden Argumenten:

  • Release-Vorlage (wird beim Exportieren verwendet, wenn die Checkbox Debugging aktiviert deaktiviert ist)

scons platform=android target=template_release arch=arm32
scons platform=android target=template_release arch=arm64 generate_apk=yes
  • Debug-Vorlage (wird beim Exportieren verwendet, wobei Debugging aktiviert ausgewählt ist)

scons platform=android target=template_debug arch=arm32
scons platform=android target=template_debug arch=arm64 generate_apk=yes
  • (Optional) Dev template (used when troubleshooting)

scons platform=android target=template_debug arch=arm32 dev_build=yes
scons platform=android target=template_debug arch=arm64 dev_build=yes generate_apk=yes

The resulting templates will be located under the bin directory:

  • bin/android_release.apk for the release template

  • bin/android_debug.apk for the debug template

  • bin/android_dev.apk for the dev template

  • bin/android_source.zip for the Gradle build template

Bemerkung

  • If you are changing the list of architectures you're building, remember to add generate_apk=yes to the last architecture you're building, so that the template files are generated after the build.

  • To include debug symbols in the generated templates, add the debug_symbols=yes parameter to the SCons command.

Siehe auch

Wenn Sie Vulkan-Validation Layers aktivieren möchten, lesen Sie Vulkan-Validation Layers auf Android.

Unterstützung für x86-Geräte hinzufügen

Wenn Sie auch die Unterstützung für x86- und x86_64-Geräte einschließen möchten, führen Sie den SCons-Befehl ein drittes und viertes Mal mit den Argumenten arch=x86_32 und arch=x86_64 aus, bevor Sie die APK mit Gradle erstellen. Zum Beispiel für die Release-Vorlage:

scons platform=android target=template_release arch=arm32
scons platform=android target=template_release arch=arm64
scons platform=android target=template_release arch=x86_32
scons platform=android target=template_release arch=x86_64 generate_apk=yes

This will create template binaries that works on all platforms. The final binary size of exported projects will depend on the platforms you choose to support when exporting; in other words, unused platforms will be removed from the binary.

Bereinigen der generierten Exportvorlagen

Mit den folgenden Befehlen können Sie die generierten Exportvorlagen entfernen:

cd platform/android/java
# On Windows
.\gradlew clean
# On Linux and macOS
./gradlew clean

Verwenden der Exportvorlagen

Godot needs release and debug binaries that were compiled against the same version/commit as the editor. If you are using official binaries for the editor, make sure to install the matching export templates, or build your own from the same version.

When exporting your game, Godot uses the templates as a base, and updates their content as needed.

Vorlagen installieren

The newly-compiled templates (android_debug.apk , android_release.apk, and android_source.zip) must be copied to Godot's templates folder with their respective names. The templates folder can be located in:

  • Windows: %APPDATA%\Godot\export_templates\<version>\

  • Linux: $HOME/.local/share/godot/export_templates/<version>/

  • macOS: $HOME/Library/Application Support/Godot/export_templates/<version>/

<version> hat die Form major.minor[.patch].status unter Verwendung der Werte aus version.py in Ihrem Godot Quellcode-Repository (z.B. 4.1.3.stable oder 4.2.dev). Sie müssen diesen Versions-String auch in eine Datei version.txt schreiben, die sich neben Ihren Exportvorlagen befindet.

However, if you are writing your custom modules or custom C++ code, you might instead want to configure your template binaries as custom export templates here:

../../../_images/andtemplates.png

Sie brauchen sie nicht einmal zu kopieren, Sie können einfach auf die resultierende Datei im Verzeichnis bin\ Ihres Godot-Quellordners verweisen, so dass Sie beim nächsten Build automatisch auf die benutzerdefinierten Vorlagen verweisen können.

Bauen des Godot-Editors

Die Kompilierung des Editors erfolgt durch den Aufruf von SCons aus dem Godot-Stammverzeichnis mit den folgenden Argumenten:

scons platform=android arch=arm32 production=yes target=editor
scons platform=android arch=arm64 production=yes target=editor
scons platform=android arch=x86_32 production=yes target=editor
scons platform=android arch=x86_64 production=yes target=editor generate_apk=yes
  • You can add the dev_build=yes parameter to generate a dev build of the Godot editor.

  • You can add the debug_symbols=yes parameter to include the debug symbols in the generated build.

  • You can skip certain architectures depending on your target device to speed up compilation.

Remember to add generate_apk=yes to the last architecture you're building, so that binaries are generated after the build.

The resulting binaries will be located under bin/android_editor_builds/.

Removing the Editor binaries

You can use the following commands to remove the generated editor binaries:

 cd platform/android/java
 # On Windows
.\gradlew clean
# On Linux and macOS
./gradlew clean

Installing the Godot editor APK

Schließen Sie ein Android-Gerät mit aktivierten Entwickleroptionen über das Ladekabel an einen USB/USB-C-Anschluss an Ihren Computer an. Öffnen Sie ein Terminal/eine Eingabeaufforderung und führen Sie die folgenden Befehle aus dem Stammverzeichnis mit den folgenden Argumenten aus:

adb install ./bin/android_editor_builds/android_editor-release.apk

Fehlersuche

Die Plattform wird in SCons nicht angezeigt

Vergewissern Sie sich, dass Sie die Umgebungsvariable ANDROID_HOME gesetzt haben. Dies ist erforderlich, damit die Plattform in der Liste der erkannten Plattformen von SCons erscheint. Siehe Einrichten des Buildsystems für weitere Informationen.

Anwendung nicht installiert

Android könnte sich beschweren, dass die Anwendung nicht korrekt installiert ist. Wenn dies der Fall ist:

  • Prüfen Sie, ob der Debug-Keystore ordnungsgemäß generiert wurde.

  • Überprüfen Sie, ob die ausführbare Datei jarsigner aus JDK 8 stammt.

Wenn es immer noch fehlschlägt, öffnen Sie eine Kommandozeile und führen Sie logcat aus:

adb logcat

Prüfen Sie dann die Ausgabe, während die Anwendung installiert ist; die Fehlermeldung sollte dort angezeigt werden. Suchen Sie Hilfe, wenn Sie es selbst nicht lösen können.

Die Anwendung wird sofort beendet

Wenn die Anwendung startet, aber sofort beendet wird, kann dies einen der folgenden Gründe haben:

  • Stellen Sie sicher, dass Sie Exportvorlagen verwenden, die zu Ihrer Editorversion passen; wenn Sie eine neue Godot-Version verwenden, müssen Sie auch die Vorlagen aktualisieren.

  • libgodot_android.so befindet sich nicht in libs/<arch>/, wobei <arch> für die Architektur des Geräts steht.

  • Die Architektur des Geräts stimmt nicht mit der/den exportierten Architektur(en) überein. Vergewissern Sie sich, dass Ihre Vorlagen für die Architektur des Geräts erstellt wurden und dass die Exporteinstellungen die Unterstützung für diese Architektur enthalten.

In jedem Fall sollte adb logcat auch die Fehlerursache anzeigen.