Android exige que toutes les applications soient signées numériquement avec un certificat avant de pouvoir être installées. Afin de distribuer votre application Android via le Google Play store, elle doit être signée avec une clé de version qui doit ensuite être utilisée pour toutes les futures mises à jour. Depuis 2017, il est possible pour Google Play de gérer automatiquement la signature des releases grâce à la fonctionnalité App Signing by Google Play. Cependant, avant que le binaire de votre application ne soit téléchargé sur Google Play, il doit être signé avec une clé de téléchargement. La page Signer vos applications de la documentation Android Developers décrit le sujet en détail. Ce guide couvre le processus en bref, ainsi que la liste des étapes nécessaires pour empaqueter le bundle JavaScript.
- Générer une clé de téléchargement#
- Configuration des variables Gradle#
- Ajout de la configuration de signature à la configuration Gradle de votre app#
- Génération de la version AAB#
- Tester la build de version de votre application#
- Publication vers d’autres magasins#
- Activer Proguard pour réduire la taille de l’APK (facultatif)#
- Migration d’anciennes applications Android React Native pour utiliser App Signing by Google Play#
- Permissions par défaut#
Générer une clé de téléchargement#
Vous pouvez générer une clé de signature privée en utilisant keytool
. Sous Windows, keytool
doit être exécuté depuis C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Cette commande vous demande des mots de passe pour le keystore et la clé et pour les champs Distinguished Name de votre clé. Elle génère ensuite le keystore sous la forme d’un fichier appelé my-upload-key.keystore
.
Le keystore contient une seule clé, valable pendant 10000 jours. L’alias est un nom que vous utiliserez plus tard lors de la signature de votre application, pensez donc à prendre note de l’alias.
Sur Mac, si vous n’êtes pas sûr de l’emplacement de votre dossier JDK bin, alors exécutez la commande suivante pour le trouver :
Copy
Il en sortira le répertoire du JDK, qui ressemblera à quelque chose comme ceci:
Copier
Naviguer vers ce répertoire en utilisant la commande cd /your/jdk/path
et utiliser la commande keytool avec la permission sudo comme indiqué ci-dessous.
Copy
Note : N’oubliez pas de garder le fichier keystore privé. Dans le cas où vous avez perdu la clé de téléchargement ou qu’elle a été compromise, vous devez suivre ces instructions.
Configuration des variables Gradle#
- Placez le fichier
my-upload-key.keystore
sous le répertoireandroid/app
de votre dossier de projet. - Modifiez le fichier
~/.gradle/gradle.properties
ouandroid/gradle.properties
, et ajoutez ce qui suit (remplacez*****
par le mot de passe correct du keystore, l’alias et le mot de passe de la clé),
Copy
Ces-ci vont être des variables Gradle globales, que nous pourrons utiliser plus tard dans notre config Gradle pour signer notre app.
Note sur la sécurité : Si vous n’êtes pas chaud pour stocker vos mots de passe en clair, et que vous utilisez macOS, vous pouvez également stocker vos informations d’identification dans l’app Keychain Access. Ensuite, vous pouvez sauter les deux dernières lignes dans
~/.gradle/gradle.properties
.
Ajout de la configuration de signature à la configuration Gradle de votre app#
La dernière étape de configuration qui doit être effectuée est de configurer les builds de version pour qu’ils soient signés en utilisant la clé de téléchargement. Editez le fichier android/app/build.gradle
dans le dossier de votre projet, et ajoutez la configuration de signature,
Copie
Génération de la version AAB#
Exécutez ce qui suit dans un terminal:
Copier
La bundleRelease
Gradle regroupera tout le JavaScript nécessaire pour exécuter votre application dans l’AAB (Android App Bundle). Si vous devez changer la façon dont le bundle JavaScript et/ou les ressources dessinables sont regroupés (par exemple, si vous avez changé les noms de fichiers/dossiers par défaut ou la structure générale du projet), jetez un coup d’œil à android/app/build.gradle
pour voir comment vous pouvez le mettre à jour pour refléter ces changements.
Note : Assurez-vous que
gradle.properties
n’inclut pasorg.gradle.configureondemand=true
, car cela fera en sorte que la release build saute le regroupement de JS et des actifs dans le binaire de l’app.
L’AAB généré peut être trouvé sous android/app/build/outputs/bundle/release/app.aab
, et est prêt à être téléchargé sur Google Play.
Pour que Google Play accepte le format AAB, l’App Signing by Google Play doit être configuré pour votre application sur la console Google Play. Si vous mettez à jour une application existante qui n’utilise pas App Signing by Google Play, veuillez consulter notre section sur la migration pour savoir comment effectuer ce changement de configuration.
Tester la build de version de votre application#
Avant de télécharger la build de version sur le Play Store, assurez-vous de la tester minutieusement. Désinstallez d’abord toute version précédente de l’app que vous avez déjà installée. Installez-la sur le périphérique en utilisant la commande suivante dans la racine du projet :
Copy
Notez que --variant release
n’est disponible que si vous avez configuré la signature comme décrit ci-dessus.
Vous pouvez mettre fin à toute instance de bundler en cours d’exécution, puisque tout votre framework et votre code JavaScript sont regroupés dans les actifs de l’APK.
Publication vers d’autres magasins#
Par défaut, l’APK généré possède le code natif pour les architectures de CPU x86 et ARMv7a. Cela permet de partager plus facilement des APK qui fonctionnent sur presque tous les appareils Android. Cependant, cela a l’inconvénient qu’il y aura un peu de code natif inutilisé sur n’importe quel appareil, ce qui conduit à des APK inutilement plus gros.
Vous pouvez créer un APK pour chaque CPU en modifiant la ligne suivante dans android/app/build.gradle:
Copy
Téléchargez ces deux fichiers sur les marchés qui prennent en charge le ciblage des appareils, comme Google Play et Amazon AppStore, et les utilisateurs obtiendront automatiquement l’APK approprié. Si vous voulez télécharger sur d’autres marchés, tels que APKFiles, qui ne prennent pas en charge plusieurs APK pour une seule application, modifiez également la ligne suivante pour créer l’APK universel par défaut avec des binaires pour les deux CPU.
Copy
Activer Proguard pour réduire la taille de l’APK (facultatif)#
Proguard est un outil qui peut réduire légèrement la taille de l’APK. Il le fait en dépouillant les parties du bytecode Java React Native (et ses dépendances) que votre application n’utilise pas.
IMPORTANT : Assurez-vous de tester minutieusement votre application si vous avez activé Proguard. Proguard nécessite souvent une configuration spécifique à chaque bibliothèque native que vous utilisez. Voir
app/proguard-rules.pro
.
Pour activer Proguard, modifiez android/app/build.gradle
:
Copy
Migration d’anciennes applications Android React Native pour utiliser App Signing by Google Play#
Si vous migrez depuis une version précédente de React Native, il y a des chances que votre application n’utilise pas la fonctionnalité App Signing by Google Play. Nous vous recommandons de l’activer afin de profiter de choses comme le fractionnement automatique des apps. Afin de migrer de l’ancienne façon de signer, vous devez commencer par générer une nouvelle clé de téléchargement et ensuite remplacer la configuration de signature de la version android/app/build.gradle
pour utiliser la clé de téléchargement au lieu de celle de la version (voir la section sur l’ajout de la configuration de signature à gradle). Une fois que c’est fait, vous devez suivre les instructions du site d’aide de Google Play afin d’envoyer votre clé de version originale à Google Play.
Permissions par défaut#
Par défaut, la permission INTERNET
est ajoutée à votre application Android car à peu près toutes les applications l’utilisent. La permission SYSTEM_ALERT_WINDOW
est ajoutée à votre APK Android en mode débogage mais elle sera supprimée en production.