Signer votre application

Android exige que tous les APK soient signés à l'aide d'un certificat numérique avant de pouvoir être installés ou mis à jour sur un appareil. Lorsque vous utilisez Android App Bundles, vous devez signer votre app bundle avec une clé d'importation avant de l'importer dans la Play Console. Le service de signature d'application Play se charge du reste. Pour les applications distribuées par le biais d'APK sur le Play Store ou distribuées sur d'autres plates-formes, vous devez signer manuellement les APK pour les importer.

Cette page présente certains concepts importants liés à la signature et à la sécurité des applications, au processus de signature avec Android Studio en vue d'une publication sur Google Play, et à la configuration de la signature d'application Play.

Vous trouverez ci-dessous une présentation générale des procédures à suivre pour signer et publier une nouvelle application sur Google Play :

  1. Générer une clé d'importation et un keystore
  2. Signer votre application avec votre clé d'importation
  3. Configurer la signature d'application Play
  4. Importer votre application sur Google Play
  5. Préparer et déployer la publication de votre application

Si votre application est déjà publiée sur le Google Play Store avec une clé de signature d'application existante, ou si vous souhaitez choisir la clé de signature d'application pour une nouvelle application au lieu de laisser Google la générer, procédez comme suit :

  1. Signez votre application avec la clé de signature de votre application.
  2. Importez la clé de signature de votre application dans le service de signature d'application Play.
  3. (Recommandé) Générez et enregistrez un certificat d'importation pour les futures mises à jour de votre application.
  4. Importez votre application sur Google Play.
  5. Préparer et déployer la publication de votre application

Cette page explique également comment gérer vos propres clés lors de l'importation de votre application sur d'autres plates-formes de téléchargement. Si vous n'utilisez pas Android Studio ou si vous préférez signer votre application à partir d'une ligne de commande, découvrez comment utiliser apksigner.

Signature d'application Play

Avec le service Signature d'application Play, Google gère et protège la clé de signature de votre application à votre place, et l'utilise pour signer vos APK en vue de leur distribution. Comme les app bundles délèguent la compilation et la signature des APK au Google Play Store, vous devez configurer la signature d'application Play avant d'importer votre app bundle. Cette approche présente les avantages suivants :

  • Vous pouvez utiliser le format Android App Bundle et profiter des modes de distribution avancés de Google Play. Le format Android App Bundle rend votre application moins volumineuse, simplifie vos releases, et permet d'utiliser des modules de fonctionnalité et de proposer des expériences instantanées.
  • Vous renforcez la sécurité de votre clé de signature et permettez à l'app bundle importé sur Google Play d'utiliser une clé d'importation distincte.
  • La mise à jour de la clé vous permet de modifier la clé de signature de votre application si elle est compromise ou si vous devez renforcer son chiffrement.

Le service Signature d'application Play utilise deux clés : la clé de signature d'application et la clé d'importation, qui sont décrites plus en détail dans la section Clés et keystores. Vous conservez la clé d'importation et l'utilisez pour signer l'application que vous importez dans le Google Play Store. Google utilise le certificat d'importation pour valider votre identité, puis signe votre ou vos APK avec votre clé de signature d'application en vue de leur distribution, comme illustré dans la figure 1. L'utilisation d'une clé d'importation distincte vous permet de demander à la réinitialiser si elle est perdue ou compromise.

À titre de comparaison, pour les applications pour lesquelles la signature d'application Play n'est pas activée, si vous perdez la clé de signature de votre application, vous ne pourrez plus la mettre à jour.

Figure 1 : Signature d'une application avec le service Signature d'application Play.

Vos clés sont stockées sur la même infrastructure que Google utilise pour stocker ses propres clés, et sont protégées par le service de gestion des clés de Google. Pour en savoir plus sur l'infrastructure technique de Google, lisez les livres blancs sur la sécurité avec Google Cloud.

Lorsque vous utilisez la signature d'application Play, si vous perdez votre clé d'importation ou si sa sécurité est compromise, vous pouvez demander une réinitialisation de la clé d'importation dans la Play Console. Comme votre clé de signature d'application est sécurisée par Google, vous pouvez continuer à importer de nouvelles versions de votre application en tant que mises à jour de l'application d'origine, même si vous modifiez les clés d'importation. Pour en savoir plus, consultez la section Réinitialiser une clé d'importation privée perdue ou compromise.

La section suivante décrit certains termes et concepts importants liés à la signature et à la sécurité des applications. Si vous préférez ignorer cette étape et découvrir comment préparer votre application pour l'importer sur le Google Play Store, consultez la section Signer votre application en vue de sa publication.

Keystores, clés et certificats

Les keystores Java (.jks ou .keystore) sont des fichiers binaires servant de dépôts de certificats et de clés privées.

Un certificat de clé publique (fichier .der ou .pem, également appelé certificat numérique ou certificat d'identité) contient la clé publique d'une paire de clés publique et privée, ainsi que d'autres métadonnées (par exemple, nom et localisation) qui identifient le propriétaire de la clé privée correspondante.

Voici les différents types de clés à connaître :

  • Clé de signature d'application : elle permet de signer les fichiers APK installés sur l'appareil d'un utilisateur. Conformément au modèle de mises à jour sécurisées Android, la clé de signature reste la même pendant toute la durée de vie de votre application. Cette clé est privée et doit rester secrète. En revanche, vous pouvez partager le certificat généré à l'aide de votre clé de signature d'application.
  • Clé d'importation : elle sert à signer l'app bundle ou le fichier APK avant de l'importer pour la signature d'application avec Google Play. La clé d'importation doit rester secrète. En revanche, vous pouvez partager le certificat généré à l'aide de votre clé de signature d'application. Pour générer une clé d'importation, procédez de l'une des manières suivantes :

    • Si vous avez demandé que Google génère la clé de signature à votre place, alors la clé que vous utilisez pour signer votre application pour sa release devient votre clé d'importation.
    • Si vous fournissez une clé de signature d'applications à Google au moment d'enregistrer votre application, nouvelle ou existante, alors vous avez la possibilité de générer une nouvelle clé d'importation pendant ou après l'enregistrement pour plus de sécurité.
    • Si vous ne générez pas de nouvelle clé d'importation, vous pouvez continuer d'utiliser votre clé de signature d'applications en guise de clé d'importation à chaque release.

    Conseil : Pour des raisons de sécurité, nous vous conseillons de choisir des clés de signature d'applications et d'importation différentes.

Collaborer avec des fournisseurs d'API

Vous pouvez télécharger le certificat de la clé de signature d'application et de votre clé d'importation depuis la page Release > Setup > App signing (Publier > Configuration > Signature d'application) de la Play Console. Ce certificat est utilisé pour enregistrer votre ou vos clés publiques auprès des fournisseurs d'API. Il est destiné à être partagé et ne contient pas votre clé privée.

L'empreinte du certificat est une représentation courte et unique d'un certificat, souvent requise par les fournisseurs d'API en même temps que le nom du package afin de permettre à une application d'utiliser leurs services. Les empreintes MD5, SHA-1 et SHA-256 des certificats d'importation et de signature d'applications sont disponibles sur la page de signature d'application de la Play Console. D'autres empreintes peuvent également être converties en téléchargeant le certificat original (.der) sur la même page.

Signer votre version de débogage

Lors de l'exécution ou du débogage de votre projet depuis l'IDE, Android Studio signe automatiquement votre application avec un certificat de débogage généré par SDK Tools pour Android. La première fois que vous exécutez ou déboguez votre projet dans Android Studio, l'IDE crée automatiquement le keystore et le certificat de débogage dans $HOME/.android/debug.keystore, puis définit les mots de passe du keystore et de la clé.

Étant donné que le certificat de débogage est créé par les outils de compilation et n'est pas intrinsèquement sécurisé, la plupart des plates-formes de téléchargement d'applications (y compris le Google Play Store) n'acceptent pas de publier des applications signées avec un certificat de débogage.

Android Studio stocke automatiquement les informations de votre signature de débogage dans une configuration de signature, ce qui vous évite de les saisir à chaque débogage. Une configuration de signature est un objet contenant toutes les informations nécessaires à la signature de votre application, y compris l'emplacement et le mot de passe du keystore, ainsi que le nom et le mot de passe de la clé.

Pour en savoir plus sur la compilation et l'exécution d'applications pour le débogage, consultez la page Créer et exécuter votre application.

Expiration du certificat de débogage

Le certificat autosigné utilisé pour signer votre application en vue du débogage expire après 30 ans à compter de sa date de création. Un certificat expiré produit une erreur de compilation.

Pour résoudre ce problème, supprimez simplement le fichier debug.keystore stocké à l'un des emplacements suivants.

  • Sous OS X ou Linux : ~/.android/
  • Sous Windows XP : C:\Documents and Settings\user\.android\
  • Sous Windows Vista, 7, 8 ou 10 : C:\Users\user\.android\

La prochaine fois que vous créez et exécutez une version de débogage de votre application, Android Studio génère un nouveau keystore et une nouvelle clé de débogage.

Signer votre application en vue de sa publication sur Google Play

Lorsque vous êtes prêt à publier votre application, vous devez la signer et l'importer sur une plate-forme de téléchargement telle que Google Play. Lorsque vous publiez votre application sur Google Play pour la première fois, vous devez également configurer la signature d'application Play. Le service Signature d'application Play est facultatif pour les applications créées avant août 2021. Cette section vous explique comment signer correctement votre application pour la publier et comment configurer la signature d'application Play.

Générer une clé d'importation et un keystore

Si vous ne disposez pas encore d'une clé d'importation à utiliser pour configurer la signature d'application Play, vous pouvez en générer une à l'aide d'Android Studio. Procédez comme suit :

  1. Dans la barre de menu, cliquez sur Build > Generate Signed Bundle/APK (Compiler > Générer un app bundle/APK signé).
  2. Dans la boîte de dialogue Generate Signed Bundle or APK (Générer un app bundle/APK signé), sélectionnez Android App Bundle ou APK, puis cliquez sur Next (Suivant).
  3. Sous Key Store Path (Chemin du keystore), cliquez sur Create new (Créer).
  4. Dans la fenêtre New Key Store (Nouveau keystore), renseignez les champs suivants concernant votre keystore et votre clé, comme illustré dans la figure 2.

    Figure 2 : Création d'une clé d'importation et d'un keystore dans Android Studio.

  5. Keystore

    • Key store path: (Chemin d'accès) : sélectionnez l'emplacement où votre keystore doit être créé. Ajoutez également un nom de fichier avec l'extension .jks à la fin du chemin d'accès.
    • Password: (Mot de passe) : créez et confirmez un mot de passe sécurisé pour votre keystore.
  6. Clé

    • Alias: : saisissez un nom permettant d'identifier votre clé.
    • Password: (Mot de passe) : créez et confirmez un mot de passe sécurisé pour votre clé. Utilisez le même mot de passe que pour votre keystore. (Pour plus détails, consultez la liste des problèmes connus.)
    • Validity (years): (Validité (en années)) : définissez la durée de validité de votre clé, en années. Votre clé doit être valide pendant au moins 25 ans pour que vous puissiez signer des mises à jour d'applications avec la même clé pendant toute la durée de vie de votre application.
    • Certificate: (Certificat) : saisissez certaines informations vous concernant pour votre certificat. Ces informations n'apparaissent pas dans votre application, mais sont incluses dans votre certificat avec l'APK.
  7. Une fois le formulaire rempli, cliquez sur OK.

  8. Si vous souhaitez créer et signer votre application avec votre clé d'importation, passez à la section Signer votre application avec votre clé d'importation. Si vous souhaitez uniquement générer la clé et le keystore, cliquez sur Annuler.

Signer votre application avec votre clé d'importation

Si vous possédez déjà une clé d'importation, utilisez-la pour signer votre application. Si votre application est déjà signée et publiée sur le Google Play Store avec une clé de signature d'application existante, utilisez-la pour signer votre application. Vous pouvez générer et enregistrer une clé d'importation distincte ultérieurement avec Google Play pour signer et importer les mises à jour de votre application.

Pour signer votre application avec Android Studio, procédez comme suit :

  1. Si la boîte de dialogue Generate Signed Bundle or APK (Générer un app bundle/APK signé) n'est pas ouverte, cliquez sur Build > Generate Signed Bundle/APK (Créer > Générer un app bundle/APK signé).
  2. Dans la boîte de dialogue Generate Signed Bundle or APK (Générer un app bundle/APK signé), sélectionnez Android App Bundle ou APK, puis cliquez sur Next (Suivant).
  3. Sélectionnez un module dans la liste déroulante.
  4. Indiquez le chemin d'accès à votre keystore et à l'alias de votre clé, puis saisissez leurs mots de passe respectifs. Si vous n'avez pas encore préparé de keystore et de clé d'importation, commencez par générer une clé d'importation et un keystore, puis revenez à cette étape pour terminer la procédure.

    Figure 3 : Signature d'une application avec une clé d'importation.

  5. Cliquez sur Next (Suivant).

  6. Dans la fenêtre suivante (voir figure 4), sélectionnez un dossier de destination pour votre application signée. Ensuite, sélectionnez le type de compilation et, si nécessaire, choisissez le ou les types de produit.

  7. Si vous créez et signez un APK, vous devez sélectionner les versions de signature que votre application doit accepter. Pour en savoir plus, consultez la page consacrée aux schémas de signature d'application.

  8. Cliquez sur Créer.

Figure 5 : Cliquez sur le lien dans la fenêtre pop-up pour analyser ou localiser votre app bundle.

Une fois qu'Android Studio a terminé de compiler votre application signée, vous pouvez la localiser (localize) ou l'analyser (analyze) en cliquant sur l'option appropriée dans la notification pop-up, comme illustré dans la figure 5.

Vous êtes maintenant prêt à activer le service Signature d'application Play et à importer votre application pour sa publication. Si vous n'avez jamais utilisé le processus de publication d'applications, vous pouvez consulter la présentation du processus de lancement. Sinon, passez à la page Importer une application dans la Play Console.

Utiliser la signature d'application Play

Comme indiqué précédemment sur cette page, vous devez configurer la signature d'application Play pour signer votre application en vue de sa distribution sur Google Play (sauf pour les applications créées avant août 2021, qui peuvent continuer à distribuer des APK autosignés). La procédure à suivre varie selon que votre application n'a pas encore été publiée sur Google Play ou qu'elle a déjà été signée et publiée avant août 2021 à l'aide d'une clé de signature d'application existante.

Configurer une nouvelle application

Pour configurer la signature pour une application qui n'a pas encore été publiée sur Google Play, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, générez une clé d'importation, puis utilisez-la pour signer votre application.
  2. Connectez-vous à la Play Console.
  3. Créez votre nouvelle release en suivant les instructions pour la préparer et la déployer.
  4. Après avoir choisi un canal de publication, configurez la signature d'application dans la section App signing (Signature d'application). Procédez comme suit :
    • Si vous souhaitez que Google Play génère et utilise une clé de signature d'application à votre place, vous n'avez rien à faire. La clé que vous utilisez pour signer votre première release devient votre clé d'importation et doit être utilisée pour signer les releases suivantes.
    • Pour utiliser la même clé qu'une autre application de votre compte de développeur, sélectionnez Change app signing key > Use the same key as another app in this account (Modifier la clé de signature d'application > Utiliser la même clé qu'une autre application de ce compte), sélectionnez une application, puis cliquez sur Continue (Continuer).
    • Pour que Google signe votre application à l'aide d'une clé de signature fournie par vos soins, sélectionnez Change app signing key (Modifier la clé de signature d'application) et choisissez l'une des options Export and upload (Exporter et importer) pour importer une clé privée et son certificat public de manière sécurisée.

Dans la section intitulée App bundles, cliquez sur Parcourir les fichiers pour localiser et importer l'application que vous avez signée à l'aide de votre clé d'importation. Pour plus d'informations sur la publication de votre application, consultez la page Préparer et déployer votre release. Si vous n'importez pas une clé existante, Google Play peut gérer la clé de signature de votre application pour vous. Cette clé sera générée lorsque vous publiez votre application, après avoir configuré le service Signature d'application Play. Il vous suffit de signer les mises à jour ultérieures de votre application à l'aide de la clé d'importation de votre application avant de l'importer dans Google Play.

Si vous devez créer une nouvelle clé d'importation pour votre application, consultez la section Réinitialiser une clé d'importation privée perdue ou compromise.

Inscrire une application existante

Si vous mettez à jour une application qui a déjà été publiée sur Google Play à l'aide d'une clé de signature d'application existante, vous pouvez activer la signature d'application Play en procédant comme suit :

  1. Connectez-vous à la Play Console, puis accédez à votre application.
  2. Dans le menu de gauche, sélectionnez Release > Setup > App signing (Publier > Configuration > Signature d'application).
  3. Le cas échéant, lisez les conditions d'utilisation et sélectionnez Accept (Accepter).
  4. Sélectionnez l'option qui décrit le mieux la clé de signature que vous souhaitez importer sur Google Play, puis suivez les instructions qui s'affichent. Par exemple, si vous utilisez un keystore Java pour votre clé de signature, sélectionnez Upload a new app signing key from Java Keystore (Importer une nouvelle clé de signature d'application depuis un keystore Java), puis suivez les instructions pour télécharger et exécuter l'outil PEPK et importez le fichier généré avec votre clé chiffrée.
  5. Cliquez sur Enroll (S'inscrire).

Vous devriez maintenant voir une page recensant les détails des certificats de signature et d'importation de votre application. Google Play signera désormais votre application avec votre clé existante lorsqu'elle est déployée auprès des utilisateurs. L'un des principaux avantages de la signature d'application Play est qu'elle permet de séparer la clé que vous utilisez pour signer l'artefact importé dans Google Play de la clé utilisée par Google Play pour signer votre application en vue de sa distribution. Nous vous encourageons à suivre les étapes de la section suivante afin de générer et d'enregistrer une clé d'importation distincte.

Générer et enregistrer un certificat d'importation

Si vous publiez une application qui n'est pas signée par une clé d'importation, la Play Console vous offre la possibilité d'en enregistrer une pour les futures mises à jour de l'application. Bien que cela soit facultatif, nous vous recommandons de publier votre application à l'aide d'une clé distincte de celle que Google Play utilise pour la distribuer aux utilisateurs. Cette approche permet à Google de protéger votre clé de signature et vous permet de réinitialiser une clé d'importation privée perdue ou compromise. Cette section explique comment créer une clé d'importation, générer un certificat d'importation à partir de celle-ci et l'enregistrer dans Google Play pour les futures mises à jour de votre application.

Vous pouvez enregistrer un certificat d'importation dans la Play Console dans les circonstances suivantes :

  • Lorsque vous publiez une nouvelle application signée avec une clé de signature et que vous activez la signature d'application Play.
  • Lorsque vous êtes sur le point de publier une application existante qui bénéficie déjà de la signature d'application Play, mais qui est signée à l'aide de sa clé de signature.

Si vous souhaitez enregistrer un certificat d'importation, mais n'êtes pas en train de publier de mise à jour pour une application existante bénéficiant déjà de la signature d'application Play, suivez la procédure ci-dessous puis passez à la section Réinitialiser une clé d'importation privée perdue ou compromise.

Si vous ne l'avez pas déjà fait, générez une clé d'importation et un keystore.

Après avoir créé votre clé d'importation et votre keystore, vous devez générer un certificat public à partir de votre clé d'importation. Utilisez keytool avec la commande suivante :

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Maintenant que vous disposez de votre certificat d'importation, enregistrez-le auprès de Google lorsque vous y êtes invité dans la Play Console ou lors de la réinitialisation de votre clé d'importation.

Mettre à niveau votre clé de signature d'application

Certaines situations peuvent nécessiter de modifier la clé de signature de votre application (par exemple, si votre clé de signature a été compromise ou si vous souhaitez renforcer son chiffrement). Toutefois, comme les applications des utilisateurs ne peuvent être mises à jour qu'avec des versions portant la même clé de signature, il est difficile de modifier la clé de signature d'une application déjà publiée.

Si vous publiez votre application sur Google Play, vous pouvez mettre à jour la clé de signature de votre application publiée via la Play Console. La nouvelle clé permet de signer les installations et les mises à jour d'applications sur Android 13 et les versions ultérieures, tandis que l'ancienne la clé de signature d'application permet de signer les mises à jour pour les utilisateurs des versions antérieures d'Android.

Pour en savoir plus, consultez la section Mettre à niveau votre clé de signature d'application.

Réinitialiser une clé d'importation privée perdue ou compromise

Si vous avez perdu votre clé d'importation privée ou si elle a été compromise, vous pouvez en créer une autre et demander une réinitialisation de la clé d'importation dans la Play Console.

Configurer le processus de compilation pour signer automatiquement votre application

Dans Android Studio, vous pouvez configurer votre projet pour signer automatiquement la version disponible de votre application lors du processus de compilation. Pour ce faire, créez une configuration de signature et attribuez-la à votre type de compilation. Une configuration de signature réunit un emplacement de keystore, un alias et les mots de passe correspondants. Pour créer une configuration de signature et l'attribuer à votre type de compilation à l'aide d'Android Studio, procédez comme suit :

  1. Dans la fenêtre Project (Projet), effectuez un clic droit sur votre application, puis cliquez sur Open Module Settings (Ouvrir les paramètres du module).
  2. Dans le panneau de gauche de la fenêtre Project Structure (Structure du projet), sous Modules, cliquez sur le module que vous souhaitez signer.
  3. Cliquez sur l'onglet Signing (Signature), puis sur Add (Ajouter) .
  4. Sélectionnez votre fichier keystore, saisissez un nom pour cette configuration de signature (pour l'identifier et la différencier, car vous pouvez en créer plusieurs), puis saisissez les informations requises.

    Figure 7 : La fenêtre de création des configurations de signature.

  5. Cliquez sur l'onglet Build Types (Types de compilation).
  6. Cliquez sur le build release.
  7. Sous Signing Config (Configuration de signature), sélectionnez la configuration que vous venez de créer.

    Figure 8 : Sélection d'une configuration de signature dans Android Studio.

  8. Cliquez sur OK.

Désormais, à chaque fois que vous effectuez ce type de compilation (en sélectionnant une option sous Build > Build Bundle(s) / APK(s) (Créer > Compiler un bundle/APK) dans Android Studio), l'IDE signe automatiquement votre application en suivant la configuration que vous avez spécifiée. Vous trouverez l'APK ou l'app bundle signé sous build/outputs/, dans le répertoire de projet du module compilé.

Lorsque vous créez une configuration de signature, vos informations de signature sont incluses en texte brut dans vos fichiers de compilation Gradle. Si vous travaillez en équipe ou partagez votre code de façon publique, vous devez sécuriser vos informations de signature en les supprimant des fichiers de compilation et en les stockant séparément. Pour savoir comment supprimer vos informations de signature de vos fichiers de compilation, consultez la section Supprimer les informations de signature de vos fichiers de compilation. Pour savoir comment sécuriser vos informations de signature, consultez Sécuriser votre clé ci-dessous.

Signer chaque type de produit différemment

Si votre application utilise les types de produit et que vous souhaitez signer chaque type de produit différemment, vous pouvez créer des configurations de signature supplémentaires et les attribuer par type de produit :

  1. Dans la fenêtre Project (Projet), effectuez un clic droit sur votre application, puis cliquez sur Open Module Settings (Ouvrir les paramètres du module).
  2. Dans le panneau de gauche de la fenêtre Project Structure (Structure du projet), sous Modules, cliquez sur le module que vous souhaitez signer.
  3. Cliquez sur l'onglet Signing (Signature), puis sur Add (Ajouter) .
  4. Sélectionnez votre fichier keystore, saisissez un nom pour cette configuration de signature (pour l'identifier et la différencier, car vous pouvez en créer plusieurs), puis saisissez les informations requises.

    Figure 10 : La fenêtre de création des configurations de signature.

  5. Si nécessaire, répétez les étapes 3 et 4 jusqu'à disposer de toutes les configurations de signature requises.
  6. Cliquez sur l'onglet Flavors (Types de produit).
  7. Cliquez sur le type de produit que vous souhaitez configurer, puis sélectionnez la configuration de signature appropriée dans le menu déroulant Signing Config (Configuration de signature).

    Figure 11 : Configuration des paramètres de signature par type de produit.

    Répétez l'opération pour configurer d'autres types de produit.

  8. Cliquez sur OK.

Vous pouvez également spécifier vos paramètres de signature dans les fichiers de configuration Gradle. Pour en savoir plus, consultez Configurer les paramètres de signature.

Générer un rapport de signature

Pour obtenir des informations de signature pour chacune des variantes de votre application, exécutez la tâche signingReport Gradle dans Android Studio :

  1. Sélectionnez View > Tool Windows > Gradle (Affichage > Fenêtres d'outils > Gradle) pour ouvrir la fenêtre de l'outil Gradle.
  2. Sélectionnez YourApp > Tasks > android > signingReport (Votre appli > Tâches > Android > Rapport de signature) pour générer le rapport.

Gérer votre propre clé de signature

Si vous choisissez de ne pas activer la signature d'application Play (uniquement pour les applications créées avant août 2021), vous pouvez gérer vos propres clés de signature d'application et keystore. N'oubliez pas qu'il est de votre responsabilité de sécuriser la clé et le keystore. De plus, votre application ne sera pas compatible avec Android App Bundle, ni avec les fonctionnalités Play Feature Delivery et Play Asset Delivery.

Lorsque vous êtes prêt à créer vos propres clé et keystore, commencez par choisir un mot de passe sécurisé pour votre keystore et un mot de passe sécurisé distinct pour chaque clé privée stockée dans le keystore. Vous devez conserver votre keystore en lieu sûr. Si vous perdez l'accès à votre clé de signature d'application ou si votre clé est compromise, Google ne pourra pas la récupérer pour vous. Vous ne pourrez plus déployer les nouvelles versions auprès des utilisateurs sous forme de mises à jour de l'application d'origine. Pour en savoir plus, consultez la section Sécuriser votre clé ci-dessous.

Si vous gérez vos propres clés de signature d'application et keystores, vous signerez votre APK localement avec votre clé de signature d'application avant d'importer l'APK signé directement dans le Google Play Store pour sa distribution, comme illustré dans la figure 12.

Figure 12. Processus de signature lorsque vous gérez votre propre clé de signature d'application.

Lorsque vous utilisez le service Signature d'application Play, Google protège votre clé de signature, et garantit que vos applications sont correctement signées et peuvent recevoir des mises à jour tout au long de leur durée de vie. En revanche, si vous décidez de gérer vous-même votre clé de signature d'application, vous devez prendre en compte certains points.

Facteurs à prendre en compte concernant la signature

Nous vous recommandons de signer votre application avec le même certificat pendant toute sa durée de vie. Les raisons sont les suivantes :

  • Mises à jour : lorsque le système installe une mise à jour d'application, il compare le ou les certificats de la nouvelle version à ceux de la version existante. Le système n'autorise la mise à jour que si les certificats correspondent. Si vous signez la nouvelle version avec un certificat différent, vous devez attribuer un nom de package différent à l'application. Dans ce cas, l'utilisateur installe cette nouvelle version comme une nouvelle application.
  • Modularité : Android autorise les APK signés par le même certificat à s'exécuter dans le même processus, si les applications le demandent, afin que le système les traite comme une seule et même application. Procéder ainsi vous permet de déployer votre application sous forme de modules que les utilisateurs peuvent mettre à jour indépendamment.
  • Autorisations de partager du code ou des données : Android fournit des autorisations basées sur la signature, afin qu'une application puisse exposer des fonctionnalités à une autre application signée avec un certificat spécifié. En signant plusieurs APK avec le même certificat et en utilisant les vérifications d'autorisation basées sur la signature, vos applications peuvent partager du code et des données de manière sécurisée.

Si vous prévoyez de prendre en charge les mises à niveau d'une application, assurez-vous que la période de validité de votre clé de signature d'application dépasse la durée de vie attendue. Nous recommandons une période de validité de 25 ans ou plus. Lorsque la période de validité de votre clé expire, il ne sera plus aussi facile pour les utilisateurs de passer à de nouvelles versions de votre application.

Si vous prévoyez de publier vos applications sur Google Play, la clé de signature d'application être valide au moins jusqu'au 22 octobre 2033. Google Play prévoit cette obligation pour que les utilisateurs puissent installer de façon transparente les nouvelles versions de leurs applications lorsqu'elles sont publiées.

Sécuriser votre clé

Si vous choisissez de gérer et de sécuriser vous-même votre clé de signature d'application et votre keystore (au lieu d'activer le service Signature d'application Play), vos mesures de sécurité revêtent une importance cruciale pour vous et vos utilisateurs. Si vous autorisez un tiers à utiliser votre clé, ou si vous conservez votre keystore et vos mots de passe dans un endroit non sécurisé permettant à autrui de les trouver et de les utiliser, votre identité de création et la confiance que lui accordent les utilisateurs sont compromises.

Si un tiers parvient à utiliser votre clé de signature d'applications à votre insu ou sans votre autorisation, il peut signer et distribuer des applications qui remplacent vos applications authentiques par des versions corrompues ou malveillantes. Cette personne pourrait alors pour publier en votre nom des applications qui attaquent d'autres applications, ou le système lui-même, ou qui corrompent ou volent les données utilisateur.

Votre clé privée est requise pour signer toutes les futures versions de votre application. Si vous perdez ou égarez votre clé, vous ne pourrez pas publier de mises à jour dans votre application existante. Vous ne pouvez pas générer une nouvelle clé.

En tant que développeur, la réputation de votre entité professionnelle est liée à la sécurité de votre clé de signature d'application, qui doit être protégée correctement et en permanence, jusqu'à son expiration. Voici quelques conseils pour sécuriser votre clé :

  • Sélectionnez des mots de passe sécurisés pour le keystore et la clé.
  • Ne donnez ni ne prêtez votre clé privée à personne. Ne communiquez pas votre keystore ni vos mots de passe à des personnes non autorisées.
  • Conservez le fichier keystore qui contient votre clé privée en lieu sûr.

En règle générale, respecter les précautions de base lorsque vous générez, utilisez et stockez votre clé, suffit à assurer sa sécurité.

Supprimer les informations de signature de vos fichiers de compilation

Lorsque vous créez une configuration de signature, Android Studio inclut vos informations de signature en texte brut dans les fichiers build.gradle du module. Si vous travaillez en équipe ou si vous partagez votre code en Open Source, vous devez retirer ces informations sensibles des fichiers de compilation afin de ne pas les rendre accessibles aux autres utilisateurs. Pour ce faire, créez un fichier de propriétés distinct pour stocker les informations sécurisées et faites-y référence dans vos fichiers de compilation. Procédez comme suit :

  1. Créez une configuration de signature et attribuez-la à un ou plusieurs types de compilation. Ces instructions supposent que vous avez défini une configuration de signature unique pour votre type de compilation, comme décrit dans la section Configurer le processus de compilation pour signer automatiquement votre application ci-dessus.
  2. Créez un fichier nommé keystore.properties dans le répertoire racine de votre projet. Ce fichier doit contenir vos informations de signature, comme suit :
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. Dans le fichier build.gradle de votre module, ajoutez le code permettant de charger votre fichier keystore.properties avant le bloc android {}.

    Groovy

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Remarque : Vous pouvez choisir de stocker keystore.properties dans un autre emplacement (par exemple, dans le dossier du module plutôt que dans le dossier racine du projet, ou sur votre serveur de compilation si vous utilisez un outil d'intégration continue). Dans ce cas, vous devez modifier le code ci-dessus pour initialiser correctement keystorePropertiesFile en utilisant l'emplacement réel de votre fichier keystore.properties.

  4. Vous pouvez faire référence aux propriétés stockées dans keystoreProperties à l'aide de la syntaxe keystoreProperties['propertyName']. Modifiez le bloc signingConfigs du fichier build.gradle de votre module pour faire référence aux informations de signature stockées dans keystoreProperties. Utilisez la syntaxe suivante :

    Groovy

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            create("config") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
        ...
      }
  5. Ouvrez la fenêtre de l'outil Build Variants et assurez-vous que le type de compilation est sélectionné.
  6. Sélectionnez une option sous Build > Build Bundle(s) / APK(s) (Créer > Compiler un bundle/APK) pour compiler un fichier APK ou un app bundle de votre build. Le résultat de la compilation doit apparaître dans le répertoire build/outputs/ de votre module.

Comme vos fichiers de compilation ne contiennent plus d'informations sensibles, vous pouvez désormais les inclure dans un contrôle du code source ou les importer dans un codebase partagé. Veillez à conserver le fichier keystore.properties de manière sécurisée. Vous pouvez, par exemple, le supprimer de votre système de contrôle du code source.