Compilation pour Android

Voir aussi

Cette page décrit comment compiler les binaires du modèle d'exportation Android à partir du code source. Si vous souhaitez plutôt exporter votre projet vers Android, lisez Exportation 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 Exportation 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.

    • Sous Linux, n'utilisez pas un SDK Android fourni par les dépôts de votre distribution car il est souvent obsolète.

  • Gradle (sera téléchargé et installé automatiquement s'il manque).

  • JDK 11 (soit OpenJDK ou Oracle JDK).

    • Vous pouvez télécharger un build à partir de ojdkbuild.

Voir aussi

Pour récupérer le code source de Godot pour le compiler, voir Obtenir la source.

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)

  • Définissez la variable d'environnement ANDROID_SDK_ROOT pour qu'elle pointe vers le SDK Android. Si vous avez téléchargé les outils de ligne de commande Android, il s'agit du dossier dans lequel vous avez extrait le contenu de l'archive ZIP.

  • Installez les composants SDK nécessaires dans ce dossier :

    • Acceptez les licences des composants SDK en exécutant la commande suivante où android_sdk_path est le chemin vers le SDK Android, puis répondez à toutes les questions par y :

    tools/bin/sdkmanager --sdk_root=<android_sdk_path> --licenses
    
    • Terminez l'installation en exécutant la commande suivante où android_sdk_path est le chemin vers le SDK Android.

    tools/bin/sdkmanager --sdk_root=<android_sdk_path> "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404"
    

Voir aussi

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.

Voir aussi

Pour définir la variable d'environnement sous Linux ou macOS, utilisez export ANDROID_SDK_ROOT=/path/to/android-sdk/path/to/android-sdk pointe vers la racine des répertoires du SDK.

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 depuis le répertoire racine de Godot 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 : C:\Users\[username]\AppData\Roaming\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 défini la variable d'environnement ANDROID_SDK_ROOT. Ceci est nécessaire pour que la plateforme apparaisse dans la liste des plateformes détectées de SCons. Voir Configurer le 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.