This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Les appareils Android vous permettent d’y exécuter librement vos propres applications. Il est très facile de créer un build de votre jeu et de le copier sur un appareil Android. Ce manuel explique les étapes nécessaires à la création d’un bundle de votre jeu pour Android. Pendant le développement, il est souvent préférable d’exécuter votre jeu avec l’application de développement, car elle vous permet de recharger à chaud le contenu et le code directement sur votre appareil.
Android exige que tous les APK soient signés numériquement avec un certificat avant leur installation ou leur mise à jour sur un appareil. Si vous utilisez des Android App Bundles, vous devez uniquement signer votre bundle d’application avant de l’importer dans la Play Console, puis Play App Signing s’occupe du reste. Vous pouvez aussi signer manuellement votre application pour l’importer sur Google Play ou d’autres boutiques d’applications, ou pour la distribuer en dehors de toute boutique.
Lorsque vous créez un bundle d’application Android depuis l’éditeur Defold ou l’outil en ligne de commande, vous pouvez fournir un magasin de clés (keystore), contenant votre certificat et votre clé, ainsi que son mot de passe, qui serviront à signer votre application. Si vous ne le faites pas, Defold génère un magasin de clés de débogage et l’utilise pour signer le bundle d’application.
Vous ne devez jamais importer votre application sur Google Play si elle a été signée avec un magasin de clés de débogage. Utilisez toujours un magasin de clés dédié que vous avez créé vous-même.
Defold utilise un magasin de clés pour le processus de signature Android. Vous trouverez plus d’informations dans ce message du forum.
Vous pouvez créer un magasin de clés avec Android Studio ou depuis un terminal ou une invite de commandes :
keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125
Cette commande crée un fichier de magasin de clés nommé mykeystore.keystore, contenant une clé et un certificat. L’accès à la clé et au certificat est protégé par le mot de passe 5Up3r_53cR3t. La clé et le certificat sont valables pendant 25 ans (9125 jours). La clé et le certificat générés sont identifiés par l’alias myAlias.
Veillez à conserver le magasin de clés et son mot de passe en lieu sûr. Si vous signez et importez vous-même vos applications sur Google Play et que vous perdez le magasin de clés ou son mot de passe, vous ne pourrez plus mettre à jour l’application sur Google Play. Vous pouvez éviter cette situation en utilisant Google Play App Signing et en laissant Google signer vos applications pour vous.
L’éditeur vous permet de créer facilement un bundle d’application autonome pour votre jeu. Avant de créer le bundle, vous pouvez préciser les icônes à utiliser pour l’application, définir le code de version, etc. dans le fichier de paramètres du projet game.project.
Pour créer un bundle, sélectionnez Project ▸ Bundle... ▸ Android Application... dans le menu.
Si vous souhaitez que l’éditeur crée automatiquement des certificats de débogage aléatoires, laissez les champs Keystore et Keystore password vides :

Si vous souhaitez signer votre bundle avec un magasin de clés particulier, renseignez les champs Keystore et Keystore password. Le fichier Keystore doit avoir l’extension .keystore, tandis que le mot de passe doit être enregistré dans un fichier texte portant l’extension .txt. Vous pouvez aussi renseigner le champ Key password si la clé du magasin de clés utilise un mot de passe différent de celui du magasin lui-même :

Defold permet de créer des fichiers APK et AAB. Sélectionnez APK ou AAB dans la liste déroulante Bundle Format.
Cliquez sur Create Bundle lorsque vous avez configuré les paramètres du bundle d’application. Vous devrez ensuite préciser à quel emplacement de votre ordinateur le bundle sera créé.

Lorsque vous créez un bundle de jeu, vous devez choisir le type de moteur que vous souhaitez utiliser. Vous disposez de trois options de base :
Ces différentes versions sont également appelées Build variants
Lorsque vous choisissez Project ▸ Build, vous obtenez toujours la version Debug.
Ce type d’exécutable est généralement utilisé pendant le développement d’un jeu, car il intègre plusieurs fonctionnalités de débogage utiles :
print() et des extensions natives qui utilisent dmLogInfo(), dmLogError(), etc. Découvrez comment lire ces journaux dans le manuel des journaux du jeu et du système.Les fonctionnalités de débogage sont désactivées dans cette variante. Vous devriez choisir cette option lorsque le jeu est prêt à être publié dans un magasin d’applications ou partagé avec les joueurs d’une autre manière. Il est déconseillé de publier un jeu avec les fonctionnalités de débogage activées pour plusieurs raisons :
Cet exécutable fonctionne sans interface graphique ni son. Cela signifie que vous pouvez exécuter les tests unitaires ou de bon fonctionnement du jeu sur un serveur d’intégration continue (CI), ou même l’utiliser comme serveur de jeu dans le cloud.
Vous pouvez copier un fichier .apk sur votre appareil avec l’outil adb, ou sur Google Play via la console développeur Google Play.
L’outil en ligne de commande adb est un programme polyvalent et facile à utiliser qui permet d’interagir avec les appareils Android. Vous pouvez télécharger et installer adb avec les Android SDK Platform-Tools, pour Mac, Linux ou Windows.
Téléchargez les Android SDK Platform-Tools à l’adresse suivante : https://developer.android.com/studio/releases/platform-tools. Vous trouverez l’outil adb dans /platform-tools/. Vous pouvez également installer des paquets propres à chaque plateforme à l’aide de leurs gestionnaires de paquets respectifs.
Sur Ubuntu Linux :
$ sudo apt-get install android-tools-adb
Sur Fedora 18/19 :
$ sudo yum install android-tools
Sur macOS (Homebrew)
$ brew cask install android-platform-tools
Vous pouvez vérifier que adb fonctionne en connectant votre appareil Android à votre ordinateur par USB et en exécutant la commande suivante :
$ adb devices
List of devices attached
31002535c90ef000 device
Si votre appareil n’apparaît pas, vérifiez que vous avez activé USB debugging sur l’appareil Android. Ouvrez les Settings de l’appareil et recherchez Developer options (ou Development).

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/my_app.apk
Success
Vous pouvez installer et lancer un fichier .apk à l’aide des cases à cocher « Install on connected device » et « Launch installed app » de l’éditeur, dans la boîte de dialogue Bundle :

Pour que cette fonctionnalité fonctionne, ADB doit être installé et USB debugging doit être activé sur l’appareil connecté. Si l’éditeur ne parvient pas à détecter l’emplacement d’installation de l’outil en ligne de commande ADB, vous devez le préciser dans les Preferences.
Vous pouvez importer un fichier .aab sur Google Play via la console développeur Google Play. Vous pouvez aussi générer un fichier .apk à partir d’un fichier .aab pour l’installer localement avec Android bundletool.
Le moteur Defold nécessite plusieurs autorisations pour que toutes ses fonctionnalités puissent fonctionner. Les autorisations sont définies dans le fichier AndroidManifest.xml, indiqué dans le fichier de paramètres du projet game.project. Vous trouverez plus d’informations sur les autorisations Android dans la documentation officielle. Les autorisations suivantes sont demandées dans le manifeste par défaut :
Permettent aux applications d’ouvrir des sockets réseau et d’accéder aux informations sur les réseaux. Ces autorisations sont nécessaires pour accéder à Internet. (Documentation officielle Android) et (Documentation officielle Android).
Permet d’utiliser les WakeLocks de PowerManager pour empêcher la mise en veille du processeur ou la réduction de la luminosité de l’écran. Cette autorisation est nécessaire pour empêcher temporairement l’appareil de se mettre en veille pendant la réception d’une notification push. (Documentation officielle Android)
AndroidX est une amélioration majeure de la bibliothèque Android Support Library d’origine, qui n’est plus maintenue. Les paquets AndroidX remplacent entièrement la Support Library en offrant les mêmes fonctionnalités et de nouvelles bibliothèques. La plupart des extensions Android de l’Asset Portal prennent en charge AndroidX. Si vous ne souhaitez pas utiliser AndroidX, vous pouvez le désactiver explicitement au profit de l’ancienne Android Support Library en cochant Use Android Support Lib dans le manifeste de l’application.

R : Oui, activez le paramètre immersive_mode dans la section Android de votre fichier game.project. Cela permet à votre application d’occuper tout l’écran et de capturer tous les événements tactiles à l’écran.
R : Android détecte que vous essayez d’installer l’application avec un nouveau certificat. Lors de la création de bundles de builds de débogage, chaque build est signé avec un certificat temporaire. Désinstallez l’ancienne application avant d’installer la nouvelle version :
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
R : Cela peut se produire lorsque deux extensions ou plus fournissent un fragment de manifeste Android contenant la même balise de propriété, mais avec des valeurs différentes. Cela s’est notamment produit avec Firebase et AdMob. L’erreur de build ressemble à ceci :
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
Vous trouverez plus d’informations sur ce problème et sa solution de contournement dans le ticket Defold #9453 et le ticket Google #327696048.