J'essaie de comprendre comment télécharger une application sur Google Play tout en utilisant la signature de l'application Google Play.
Voici ce que j'ai fait:
Il se plaint que le certificat n'est pas le certificat
Télécharger un nouveau fichier APK dans Production
Échec du téléchargement Vous avez téléchargé un fichier APK qui n'est pas signé avec le certificat de téléchargement. Vous devez utiliser le même certificat. Le certificat de téléchargement a une empreinte digitale: [SHA1: 0C: ...] et le certificat utilisé pour signer l'APK que vous avez téléchargé a une empreinte digitale: [SHA1: 2D: ...]
Après avoir cherché pendant un moment. Je découvre comment placer le certificat publié sur ma console Google Play dans mon magasin de clés. Quelque chose comme ça:
keytool.exe -importcert -file upload.pem -keystore myapp-release-key.keystore
Le certificat semble être présent. Lorsque je liste le contenu du magasin de clés, voici ce que je reçois:
keytool.exe -list -keystore trackcoachfull-release-key.keystore Entrez le mot de passe du magasin de clés:
Type de magasin de clés: JKS Fournisseur de magasin de clés: Sun
Votre magasin de clés contient 2 entrées
myappfull, 18 mai 2017, PrivateKeyEntry, empreinte digitale de certificat (SHA1): 2D: ... uploadkey, 19 mai 2017, trustedCertEntry, empreinte digitale de certificat (SHA1): 0C: ...
Maintenant, où je suis bloqué ...
Dans Android Studio, j'essaie de générer un fichier APK signé avec la clé de téléchargement.
Construire> Générer un APK signé Sélectionnez le magasin de clés ci-dessus Entrez le mot de passe du magasin de clés Sélectionnez la clé de téléchargement comme alias de clé que je force pour entrer un mot de passe de clé.
Erreur dans Android Studio:
Erreur: L'exécution a échoué pour la tâche ': app: packageFullRelease'.
com.Android.ide.common.signing.KeytoolException: Échec de lecture de la clé de téléversement du magasin "C:\Utilisateurs\Admin\AndroidStudioProjects\keystores\myappfull-release-key.keystore": les entrées de certificats sécurisées ne sont pas protégées par mot de passe
Ma question est la suivante:
Comment générer un fichier APK signé avec une clé de téléchargement fournie par Google Play?
Merci
J'ai pu signer mon fichier APK à l'aide de la clé de téléchargement fournie par Google Play. Voici les étapes que j'ai suivies pour une nouvelle application:
keytool.exe -importcert -file upload_cert.der -keystore <keystorefile>
Il est important de noter ici que, à l’étape (6), l’importation keytool met à jour le certificat original avec celui téléchargé de Google Play.
Vous ne pouvez pas signer un APK avec le certificat de téléchargement dans la console Google Play.
Espérons que cette réponse empêchera les autres de perdre autant de temps que moi à essayer de trouver une solution qui n'existe pas.
L'article de support technique de Google Play Gérez les clés de signature de votre application contient les informations nécessaires pour le comprendre.
De la section " Types de clés et définitions importantes ":
- Clé de téléchargement (facultatif pour les applications existantes) : nouvelle clé générée lors de votre inscription au programme. Vous utiliserez la clé de téléchargement pour signer tous les futurs APK avant de les télécharger sur la Play Console.
- Clé privée : Pour les signatures APK, il s'agit de la clé utilisée pour signer l'APK. La clé privée doit être gardée secrète.
- Clé publique : Pour les signatures APK, il s'agit de la clé utilisée pour vérifier la signature d'un APK. La clé publique peut être visible par tout le monde.
- Certificat : un certificat contient une clé publique ainsi que des informations d'identification supplémentaires permettant de savoir à qui appartient la clé.
Notez ensuite que dans la console Google Play, vous pouvez uniquement télécharger un certificat de téléchargement (par opposition à une clé de téléchargement ). ). Sur la base des définitions ci-dessus, nous pouvons conclure que:
Comme preuve supplémentaire, cette autre SO question (erreur de signature Android: les entrées de certificats de confiance ne sont pas protégées par mot de passe) résout le même problème, mais ne mentionne pas les clés de téléchargement/certificats, il est facile de passer à côté des implications de cette question: rien que vous puissiez télécharger à partir de Google Play ne résoudra ce problème.
Bien que certaines personnes signalent qu'il est IS possible de signer votre APK avec votre certificat de téléchargement téléchargé depuis Google Play, je pense qu'elles ne comprennent pas ce qui s'est passé. Notez que ces rapports indiquent généralement que vous devez importer le certificat dans le magasin de clés d'origine utilisé pour générer la clé. En fait, lorsqu'ils pensent importer la clé (privée) nécessaire pour signer les fichiers APK, ils ne font qu'importer la clé publique et écraser la moitié publique de la paire de clés - avec la même clé publique exportée dans le certificat. en premier lieu.
S'ils avaient tenté de signer l'APK avec cet alias SANS effectuer la procédure d'importation, cela aurait tout aussi bien fonctionné. (L'importation n'a rien changé pour eux.) C'est pourquoi l'importation ne semble fonctionner que lorsqu'elle est utilisée avec le magasin de clés d'origine, pas avec un nouveau magasin de clés.
Cela dépend de ta situation. L'objectif étant de signer un fichier APK et de le télécharger correctement sur Google:
keytool
, puis l'avez importée dans votre fichier de clés et que vous conserviez le fichier généré d'origine, vous pouvez réimporter la clé privée dans un autre magasin de clés, en utilisant le processus utilisé. la première fois.Je pense que vous devez avoir généré votre magasin de clés comme ceci à partir de votre dossier "Java\bin":
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
Lorsque vous souhaitez mettre à jour votre application, vous devez utiliser le même magasin de clés que vous avez généré.
Allez à Construire> Générer un APK signé.
Sélectionnez "Choisir existant" et naviguez jusqu'au chemin du magasin de clés.
Entrez "mot de passe du magasin de clés"
Dans l’alias de clé, appuyez sur "..." et vérifiez si votre alias de clé est identique à celui que vous avez fourni lors de la génération du magasin de clés.
Si oui à nouveau, indiquez "mot de passe clé"
Appuyez sur "Suivant"
Dites-moi à quelle étape vous avez trouvé le problème afin que je puisse vous guider en conséquence.
Parfois, il se produit ce qui se passe: un seul magasin de clés a deux certificats et ils sont différenciés par nom d’alias ou mot de passe Essayez de voir les propriétés des deux entrées d'un magasin de clés. Je suis sûr que n'importe qui est une clé valide avec un nom d'alias correct. Utilisez cette commande:
Keytool -list -keystore WeatherForecast.jks (votre magasin de clés)
Appuyez sur Entrée quand il vous demande le mot de passe.
Vous verrez deux entrées et le premier mot serait l'alias de votre magasin de clés.
Cela a fonctionné pour moi et je pense que cela fonctionnera sûrement pour vous.
Je devais contacter Google et suivre les instructions ci-dessous pour générer une nouvelle clé et télécharger le certificat.
La nouvelle clé de téléchargement sera utilisée pour signer les fichiers APK que vous téléchargez sur Play.
Voici comment générer et enregistrer une nouvelle clé de téléchargement:
Cette clé doit être une clé RSA 2048 bits et avoir une validité de 25 ans.
2.Exportez le certificat de cette clé au format PEM: keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
3. Répondez à cet e-mail et joignez le fichier upload_certificate.pem.