Compilation pour Android

Note

Dans la plupart des cas, l’utilisation des modèles de déploiement et d’exportation intégrés est suffisante. La compilation manuelle de l’APK Android est surtout utile pour les constructions personnalisées ou les paquets personnalisés pour le déployeur.

Vous devez également suivre les étapes mentionnées dans le tutoriel Exporter pour Android avant de tenter de créer un modèle d’exportation personnalisé.

Pré-requis

Pour la compilation sous Windows, Linux ou macOS, les éléments suivants sont nécessaires :

  • Python 3.5+.
  • SCons 3.0+ système de construction(build).
  • SDK Android (les outils en ligne de commande sont suffisants).
    • Les composants SDK requis seront automatiquement installés par Gradle (sauf le NDK).
  • Android NDK r17 ou ultérieur.
  • Gradle (sera téléchargé et installé automatiquement s’il manque).
  • JDK 8 (soit OpenJDK ou Oracle JDK).
    • JDK 9 ou plus ne sont pas pris en charge actuellement.
    • Vous pouvez télécharger un build à partir de ojdkbuild.

Voir aussi

Pour un aperçu général de l’utilisation de SCons pour Godot, voir Introduction au buildsystem.

Mise en place du système de construction(build)

Réglez la variable d’environnement ANDROID_HOME pour qu’elle pointe vers le SDK Android. Si vous avez téléchargé les outils en ligne de commande d’Android, ce sera le dossier où vous avez extrait le contenu de l’archive ZIP. Plus tard, gradlew installera les composants nécessaires du SDK dans ce dossier. Cependant, vous devez accepter les licences des composants SDK avant qu’ils puissent être téléchargés par Gradle. Cela peut être fait en exécutant la commande suivante à partir de la racine du répertoire SDK, puis en répondant à toutes les questions avec y :

tools/bin/sdkmanager --licenses

Définissez la variable d’environnement``ANDROID_NDK_ROOT`` pour qu’elle pointe vers le NDK d’Android. Vous pouvez aussi avoir besoin de mettre la variable ANDROID_NDK_HOME au même chemin, surtout si vous utilisez des modules Android personnalisés, puisque certains plugins Gradle s’appuient sur le NDK et utilisent cette variable pour déterminer son emplacement.

Pour définir ces variables d’environnement sous Windows, appuyez sur Windows + R, tapez « control system », puis cliquez sur Advanced system settings dans le panneau de gauche, puis cliquez sur Environment variables dans la fenêtre qui apparaît.

Pour définir ces variables d’environnement sous Linux ou macOS, utilisez export ANDROID_HOME=/path/to/android-sdk et export ANDROID_NDK_ROOT=/path/to/android-ndk/path/to/android-sdk et /path/to/android-ndk pointent vers la racine des répertoires SDK et NDK.

Construction(Building) des modèles d’exportation

Godot a besoin de deux modèles d’exportation pour Android : le modèle « release » optimisé (android_release.apk) et le modèle debug (android_debug.apk). Comme Google exigera que tous les APKs incluent les bibliothèques ARMv8 (64 bits) à partir d’août 2019, les commandes ci-dessous permettront de construire un APK contenant à la fois les bibliothèques ARMv7 et ARMv8.

La compilation des modèles d’exportation standard se fait en appelant SCons avec les arguments suivants :

  • Modèle de release (utilisé lors de l’exportation avec Debugging Enabled non coché)
scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

L’APK qui en résultera se trouvera à bin/android_release.apk.

  • Modèle de débogage (utilisé lors de l’exportation avec Débogage activé coché)
scons platform=android target=release_debug android_arch=armv7
scons platform=android target=release_debug android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

L’APK qui en résultera se trouvera à bin/android_debug.apk.

Ajout de la prise en charge des appareils x86

Si vous voulez également inclure le support des appareils x86 et x86-64, lancez la commande SCons une troisième et une quatrième fois avec les arguments android_arch=x86, et android_arch=x86_64 avant de construire l’APK avec Gradle. Par exemple, pour le modèle de version :

scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
scons platform=android target=release android_arch=x86
scons platform=android target=release android_arch=x86_64
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

Cela permettra de créer un gros binaire qui fonctionne sur toutes les plateformes. La taille finale de l’APK des projets exportés dépendra des plates-formes que vous choisirez de prendre en charge lors de l’exportation ; en d’autres termes, les plates-formes inutilisées seront supprimées de l’APK.

Nettoyage des modèles d’exportation générés

Vous pouvez utiliser les commandes suivantes pour supprimer les modèles d’exportation générés :

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

Utilisation des modèles d’exportation

Godot a besoin des APK release and debug qui ont été compilés avec la même version/commit que l’éditeur. Si vous utilisez des binaires officiels pour l’éditeur, assurez-vous d’installer les modèles d’exportation correspondants, ou construisez le vôtre à partir de la même version.

Lors de l’exportation de votre jeu, Godot ouvre l’APK, modifie quelques éléments à l’intérieur et ajoute vos fichiers.

Installation des modèles

Les modèles nouvellement compilés (android_debug.apk et android_release.apk) doivent être copiés dans le dossier des modèles de Godot avec leurs noms respectifs. Le dossier modèles peut être situé dans :

  • Windows : %APPDATA%\Godot\templates\<version>\
  • Linux : $HOME/.local/share/godot/templates/<version>/
  • macOS : $HOME/Library/Application Support/Godot/templates/<version>/

<version> est de la forme major.minor[.patch].status en utilisant les valeurs de version.py dans votre dépôt de sources Godot (par exemple 3.0.5.stable ou 3.1.dev). Vous devez également écrire cette même chaîne de cractère de version dans un fichier version.txt situé à côté de vos modèles d’exportation.

Toutefois, si vous écrivez vos modules personnalisés ou du code C++ personnalisé, vous pouvez configurer vos APK comme modèles d’exportation personnalisés ici :

../../_images/andtemplates.png

Vous n’avez même pas besoin de les copier, vous pouvez simplement référencer le fichier résultant dans le répertoire bin\ de votre dossier source Godot, de sorte que la prochaine fois que vous construirez, vous aurez automatiquement les modèles personnalisés référencés.

Dépannage

La plate-forme n’apparaît pas dans SCons

Vérifiez que vous avez bien défini les variables d’environnement « ANDROID_HOME » et « ANDROID_NDK_ROOT ». Ceci est nécessaire pour que la plate-forme apparaisse dans la liste des plates-formes détectées par SCons. Voir Configuration du système de construction pour plus d’informations.

Application non installée

Android pourrait se plaindre que l’application n’est pas correctement installée. Si c’est le cas :

  • Vérifiez que la keystore de débogage est correctement générée.
  • Vérifiez que l’exécutable jarsigner provient du JDK 8.

S’il échoue encore, ouvrez une ligne de commande et lancez logcat :

adb logcat

Vérifiez alors la sortie pendant que l’application est installée ; le message d’erreur devrait être présenté là. Demander assistance si vous n’arrivez pas à vous en sortir.

L’application se ferme immédiatement

Si l’application s’exécute mais se ferme immédiatement, cela peut être due à l’une des raisons suivantes :

  • Assurez-vous d’utiliser des modèles d’exportation correspondant à la version de votre éditeur ; si vous utilisez une nouvelle version de Godot, vous devez mettre à jour tous les modèles.
  • libgodot_android.so n’est pas dans libs/<android_arch>/<android_arch> est l’architecture de l’appareil.
  • L’architecture de l’appareil ne correspond pas à celle exportée. Assurez-vous que vos modèles ont été créés pour l’architecture de cet appareil et que les paramètres d’exportation incluent la prise en charge de cette architecture.

Dans tous les cas, ``adb logcat``devrait également indiquer la cause de l’erreur.