Signer votre application

Stay organized with collections Save and categorize content based on your preferences.

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 publiez via Android App Bundles, vous devez signer votre app bundle avec une clé d'importation avant de l'importer dans la Play Console. Le service Signature d'application Play se charge du reste. Pour les applications distribuées par le biais d'APK sur le Play Store (celles créées avant août 2021) ou distribuées sur d'autres plates-formes, vous devez signer manuellement vos 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 release 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, puis sélectionnez l'option permettant de chiffrer et d'exporter sa clé de signature.
  2. Importez la clé de signature de votre application dans le service 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éparez et déployez la release 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.
  • Si votre clé de signature est compromise ou si vous devez renforcer son chiffrement, vous pouvez procéder à une mise à niveau unique de votre clé pour toutes les nouvelles installations.

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 créées avant août 2021 et 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 le service Signature d'application Play, si vous perdez votre clé d'importation ou si sa sécurité est compromise, vous pouvez contacter Google pour révoquer votre ancienne clé d'importation et en générer une nouvelle. 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 Publier > Configuration > Intégrité de l'appli 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 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 Créer > Générer un app bundle/APK signé.
  2. Dans la boîte de dialogue Générer un app bundle/APK signé, sélectionnez Android App Bundle ou APK, puis cliquez sur Suivant.
  3. Sous le champ Emplacement du keystore, cliquez sur Créer.
  4. Dans la fenêtre 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

    • 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.
    • 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é.
    • 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.)
    • 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.
    • 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 cette même clé pour signer votre application, et veillez à la chiffrer et à l'exporter pour activer le service Signature d'application Play pour votre application. Vous pouvez générer une clé d'importation distincte et enregistrer le certificat public de votre clé d'importation ultérieurement auprès de Google Play pour signer et importer les mises à jour de votre application.

Pour signer votre application avec Android Studio et exporter une clé de signature d'application existante, procédez comme suit :

  1. Si la boîte de dialogue Générer un app bundle/APK signé n'est pas ouverte, cliquez sur Créer > Générer un app bundle/APK signé.
  2. Dans la boîte de dialogue Générer un app bundle/APK signé, sélectionnez Android App Bundle ou APK, puis cliquez sur 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. Si vous signez un app bundle avec une clé de signature d'application existante et que vous souhaitez activer ultérieurement le service Signature d'application Play pour votre application, cochez la case correspondante (Exporter la clé chiffrée) et spécifiez un emplacement pour enregistrer votre clé de signature sous forme de fichier *.pepk chiffré. Vous pouvez ensuite utiliser votre clé de signature d'application chiffrée pour activer le service Signature d'application Play pour une application existante.

  6. Cliquez sur Suivant.

  7. 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.

  8. 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.

  9. Cliquez sur Terminer.

    Figure 4 : Génération d'une version signée de l'application pour les types de produit sélectionnés.

Figure 5 : Les liens dans la notification pop-up vous permettent d'analyser ou de localiser votre app bundle, ou de localiser votre clé de signature exportée.

Une fois qu'Android Studio a terminé de créer votre application signée, vous pouvez la localiser ou l'analyser en cliquant sur l'option correspondante dans la notification pop-up. Si vous avez choisi d'exporter votre clé de signature, vous pouvez y accéder rapidement en cliquant sur la flèche du menu déroulant (en bas à droite de la fenêtre pop-up). Ensuite, cliquez sur Afficher le fichier de clé exporté, 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 Intégrité de l'appli. 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, accédez à Modifier la clé de signature d'application > Utiliser ma propre clé > Utiliser la même clé qu'une autre appli de ce compte, sélectionnez une application, puis cliquez sur Continuer.
    • Pour que Google signe votre application à l'aide d'une clé de signature fournie par vos soins, sélectionnez Modifier la clé de signature d'application > Utiliser ma propre clé, puis choisissez l'une des options vous permettant d'importer une clé privée et son certificat public.

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. Si ce n'est pas déjà fait, signez votre application en utilisant Android Studio avec votre clé de signature d'application existante. N'oubliez pas de cocher la case Exporter la clé chiffrée pour enregistrer votre clé de signature sous forme de fichier *.pepk chiffré. Vous aurez besoin de ce fichier ultérieurement. Vous pouvez également utiliser l'outil PEPK, que vous pouvez télécharger à partir de la Play Console.
  2. Connectez-vous à la Play Console, puis accédez à votre application.
  3. Dans le menu de gauche, sélectionnez Version > Configuration > Intégrité de l'appli.
  4. Le cas échéant, lisez les conditions d'utilisation et sélectionnez Accepter.
  5. 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 avez exporté la clé de signature de votre application à l'aide d'Android Studio de la façon décrite sur cette page, sélectionnez Importer une clé exportée depuis Android Studio, puis importez le fichier *.pepk chiffré de votre clé.
  6. Cliquez sur Enregistrer.

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 lisez la section ci-dessous pour le faire enregistrer par l'équipe d'assistance Google Play.

Mettre à jour 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 à niveau la clé de signature de votre application publiée via la Play Console. Votre nouvelle clé permet de signer les nouvelles installations et les mises à jour, tandis que l'ancienne clé de signature reste utilisée pour signer les mises à jour auprès des utilisateurs qui ont installé votre application avant la mise à niveau de la clé.

Pour en savoir plus, consultez Mettre à niveau votre clé de signature d'application pour les nouvelles installations.

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

Si vous avez perdu votre clé d'importation privée, ou si elle est compromise, vous pouvez en créer une nouvelle et contacter l'équipe d'assistance Google Play pour la réinitialiser.

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 Projet, effectuez un clic droit sur votre application, puis cliquez sur Ouvrir les paramètres du module.
  2. Dans le panneau de gauche de la fenêtre Structure du projet, sous Modules, cliquez sur le module que vous souhaitez signer.
  3. Cliquez sur l'onglet Signature, puis sur 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 Types de compilation.
  6. Cliquez sur le build release.
  7. Sous 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 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 la section Sécuriser votre clé.

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 Projet, effectuez un clic droit sur votre application, puis cliquez sur Ouvrir les paramètres du module.
  2. Dans le panneau de gauche de la fenêtre Structure du projet, sous Modules, cliquez sur le module que vous souhaitez signer.
  3. Cliquez sur l'onglet Signature, puis sur 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 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 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 la section Configurer les paramètres de signature.

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é de signature d'application et keystore, 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 {
            getByName("config") {
                keyAlias = keystoreProperties["keyAlias"]
                keyPassword = keystoreProperties["keyPassword"]
                storeFile = file(keystoreProperties["storeFile"])
                storePassword = keystoreProperties["storePassword"]
            }
        }
        ...
      }
  5. Ouvrez la fenêtre de l'outil Variantes de compilation et assurez-vous que le type de compilation est sélectionné.
  6. Sélectionnez une option sous 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.