Ich hatte meine App vor einiger Zeit bei Google Play hochgeladen (damals, als sie Android Market hieß).
Heute habe ich die App aktualisiert, aber ich hatte den vorherigen Schlüsselspeicher gelöscht und einen neuen erstellt.
Beim Hochladen heißt es, dass der APK mit den gleichen Zertifikaten wie die vorherige Version signiert sein muss:
Upload fehlgeschlagen
Sie haben eine APK, die mit einem anderen Zertifikat signiert ist, zu Ihren früheren APKs hochgeladen. Sie müssen das gleiche Zertifikat verwenden.
Ihre bestehenden APKs werden mit den Zertifikaten mit Fingerabdruck (en) signiert:
[SHA1: 89: 2F: 11: FE: CE: D6: CC: DF: 65: E7: 76: 3E: DD: A7: 96: 4F: 84: DD: BA: 33]
und die Zertifikate, die zum Signieren der von Ihnen hochgeladenen APK verwendet werden, haben Fingerabdrücke:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]
Ich habe jedoch dieses Zertifikat nicht und möchte die Anwendung nicht löschen und erneut veröffentlichen, da sie über aktive Benutzer verfügt.
Wie kann ich meine App mit einem neuen Zertifikat signieren?
Nichts. Lesen Sie die Dokumentation: Veröffentlichen von Updates im Android Market
Stellen Sie vor dem Hochladen der aktualisierten Anwendung sicher, dass Sie die Attribute Android: versionCode und Android: versionName im Element der Manifestdatei erhöht haben. Außerdem muss der Paketname derselbe sein und the .apk muss mit demselben privaten Schlüssel signiert sein. Wenn der Paketname und das Signaturzertifikat nicht mit denen der vorhandenen Version übereinstimmen, betrachtet Market diese als neue Anwendung und bietet sie den Benutzern nicht als Update an.
Mit Google Play können Sie keine mit Ihrem Debug-Keystore signierte App veröffentlichen. Wenn Sie versuchen, eine solche APK hochzuladen, schlägt Google Play mit der Meldung fehl: "Sie haben eine APK hochgeladen, die im Debug-Modus signiert wurde. Sie müssen Ihre APK im Release-Modus signieren."
Wenn Sie jedoch versuchen, ein Update hochzuladen, das mit dem Debug-Keystore signiert ist, wird diese Meldung nicht angezeigt. Google Play zeigt die in der Frage angezeigte Nachricht an, die sich auf SHA1-Fingerabdrücke bezieht.
Prüfen Sie also zunächst, ob Sie die App versehentlich mit Ihrem Debug-Schlüssel signiert haben.
Mit den folgenden Befehlen können Sie überprüfen, mit welchen Zertifikaten das ursprüngliche APK und das Update-APK signiert wurden. Verwenden Sie dazu Java keytool
:
keytool -list -printcert -jarfile original.apk
keytool -list -printcert -jarfile update.apk
Dies zeigt Ihnen detaillierte Informationen darüber, wie ein APK signiert wurde, zum Beispiel:
Owner: CN=My App, O=My Company, L=Somewhere, C=DE
Issuer: CN=My App, O=My Company, L=Somewhere, C=DE
Serial number: 4790b086
Valid from: Mon Nov 11 15:01:28 GMT 2013 until: Fri Mar 29 16:01:28 BST 2041
Certificate fingerprints:
MD5: A3:2E:67:AF:74:3A:BD:DD:A2:A9:0D:CA:6C:D4:AF:20
SHA1: A6:E7:CE:64:17:45:0F:B4:C7:FC:76:43:90:04:DC:A7:84:EF:33:E9
SHA256: FB:6C:59:9E:B4:58:E3:62:AD:81:42:...:09:FC:BC:FE:E7:40:53:C3:D8:14:4F
Signature algorithm name: SHA256withRSA
Version: 3
Die hier zu beachtenden wichtigen Teile - für jede APK - sind der SHA1 Fingerabdruckwert, der Eigentümer Identitätswert und das Gültig von/bis Datum.
Wenn der Befehl keytool
nicht funktioniert (für die Option -jarfile
ist Java 7 erforderlich), können Sie über den Befehl jarsigner
grundlegendere Informationen abrufen:
jarsigner -verify -verbose:summary -certs original.apk
jarsigner -verify -verbose:summary -certs update.apk
Dies zeigt leider nicht den SHA1-Fingerabdruck, sondern die X.509-Besitzeridentität zusammen mit den Ablaufdaten des Zertifikats. Zum Beispiel:
sm 4642892 Thu Apr 17 10:57:44 CEST 2014 classes.dex (and 412 more)
X.509, CN=My App, O=My Company, L=Somewhere, C=DE
[certificate is valid from 11/11/13 12:12 to 29/03/41 12:12]
[CertPath not validated: Path does not chain with any of the trust anchors]
Sie können jede Meldung "CertPath nicht validiert" sowie Warnungen zu Zertifikatketten oder Zeitstempeln ignorieren. Sie sind in diesem Fall nicht relevant.
Wenn der Besitzer / X.509 Identitätswert ist CN=Android Debug, O=Android, C=US
, dann haben Sie das APK mit Ihrem Debug-Schlüssel und nicht mit dem ursprünglichen Release-Schlüssel signiert
Wenn der SHA1 Fingerabdruckwert zwischen den Original- und Update-APKs unterschiedlich ist, haben Sie nicht benutze für beide APKs den gleichen Signaturschlüssel
Wenn die Besitzer / X.509 Identitätswerte unterschiedlich sind, oder die Das Ablaufdatum des Zertifikats unterscheidet sich zwischen den beiden APKs. Dann haben Sie nicht für beide APKs den gleichen Signaturschlüssel verwendet
Beachten Sie, dass auch wenn die Owner/X.509-Werte zwischen den beiden Zertifikaten identisch sind, dies nicht bedeutet, dass die Zertifikate identisch sind - wenn etwas anderes nicht übereinstimmt - wie z. B. die Fingerabdruckwerte - dann sind die Zertifikate unterschiedlich.
Wenn die beiden APKs unterschiedliche Zertifikatinformationen haben, müssen Sie den ursprünglichen Schlüsselspeicher finden , d. H. Die Datei mit dem ersten SHA1-Fingerabdruckwert, den Google Play (oder keytool
) Ihnen mitgeteilt hat.
Durchsuchen Sie alle Keystore-Dateien, die Sie auf Ihrem Computer finden, und alle Backups, bis Sie die mit dem richtigen SHA1-Fingerabdruck haben:
keytool -list -keystore my-release.keystore
Drücken Sie einfach Enter Wenn Sie zur Eingabe des Kennworts aufgefordert werden, müssen Sie es nicht unbedingt eingeben, um den SHA1-Wert schnell zu überprüfen.
Wenn Sie den ursprünglichen Keystore nicht finden können, können Sie niemals Updates für diese bestimmte App veröffentlichen.
Android erwähnt dies ausdrücklich auf der Seite Signing Your Application :
Warnung: Bewahren Sie Ihren Schlüsselspeicher und Ihren privaten Schlüssel an einem sicheren Ort auf und stellen Sie sicher, dass Sie sichere Backups davon haben. Wenn Sie eine App bei Google Play veröffentlichen und dann den Schlüssel verlieren, mit dem Sie Ihre App signiert haben, können Sie keine Updates für Ihre App veröffentlichen, da Sie immer alle Versionen Ihrer App signieren müssen mit dem gleichen Schlüssel.
Nach der ersten Veröffentlichung einer APK müssen alle nachfolgenden Veröffentlichungen mit genau demselben Schlüssel signiert werden.
Nein das ist nicht möglich. Das APK enthält nur öffentliche Informationen und nicht Ihre privaten Schlüsselinformationen.
Nein. Auch wenn Sie das Original finden, können Sie keine APK mit Schlüssel A signieren. Signieren Sie dann das nächste Update mit den Schlüsseln A und B und signieren Sie anschließend das nächste Update nur mit Schlüssel B.
Das Signieren einer APK (oder einer beliebigen JAR-Datei) mit mehreren Schlüsseln ist technisch möglich , Google Play akzeptiert jedoch keine APKs mit mehreren Signaturen mehr.
Wenn Sie dies versuchen, wird die Meldung "Ihre APK wurde mit mehreren Zertifikaten signiert. Bitte signieren Sie sie nur mit einem Zertifikat und laden Sie sie erneut hoch."
Sie müssen Ihre App mit einer neuen Anwendungs-ID erstellen (z. B. von "com.example.myapp" in "com.example.myapp2" ändern) und einen brandneuen Eintrag bei Google Play erstellen.
Möglicherweise müssen Sie auch Ihren Code ändern, damit Benutzer die neue App installieren können, auch wenn sie die alte App installiert haben, z. Sie müssen sicherstellen, dass keine widersprüchlichen Inhaltsanbieter vorhanden sind.
Sie verlieren Ihre vorhandene Installationsbasis, Überprüfungen usw. und müssen einen Weg finden, Ihre bestehenden Kunden dazu zu bringen, die alte App zu deinstallieren und die neue Version zu installieren.
Stellen Sie erneut sicher, dass Sie sichere Sicherungen des Keystores und der Kennwörter haben, die Sie für diese Version verwenden.
Nichts - Google sagt eindeutig, dass die Anwendung anhand der zum Signieren verwendeten Schlüssel identifiziert wird. Wenn Sie die Schlüssel verloren haben, müssen Sie daher eine neue Anwendung erstellen.
Hier bekomme ich die Antwort auf diese Frage. Nachdem ich zu lange gesucht habe, knacke ich den Schlüssel und das Passwort. Ich vergesse meinen Schlüssel und Alias auch die JKS-Datei, aber zum Glück kenne ich die Menge des Passworts, was ich hineingelegt hatte. aber die richtigen Kombinationen dafür zu finden, war für mich die schwierigste Aufgabe.
Lösung - Laden Sie dieses herunter - Keytool IUI Version 2.4.1 plugin
das Fenster wird jetzt angezeigt. Es zeigt den Aliasnamen. Wenn Ihre JKS-Datei korrekt ist. Klicken Sie mit der rechten Maustaste auf den Aliasnamen und klicken Sie auf "Zertifikatskette anzeigen" ...,. Der SHA1-Schlüssel wird angezeigt Schlüssel mit dem Schlüssel, den Sie erhalten, während Sie die APK im Google App Store hochgeladen haben ...
wenn es passt, sind Sie mit der richtigen JKS-Datei und Alias.
glück, ich habe eine Menge Passwort, um zu passen ..
gehen Sie nun zu diesem scrren und geben Sie den gleichen Pfad ein. Geben Sie den Pfad in das Feld "Zertifikatdatei" ein.
wenn auf dem Bildschirm ein Fehler angezeigt wird, stimmt das Passwort nicht überein. Wenn kein Fehler angezeigt wird, bedeutet dies, dass Sie mit der richtigen JKS-Datei arbeiten. korrektes Alias und Passwort () Jetzt können Sie Ihre apk in den Play Store hochladen :)
Wenn Sie eine vorherige Apk-Datei bei sich haben (Backup), dann verwenden Sie jarSigner, um das Zertifikat von dieser Apk zu extrahieren, dann verwenden Sie diesen Schlüssel oder verwenden Sie keytool, um dieses Zertifikat zu klonen. Vielleicht hilft das ... Hilfreiche Links sind jarsigner) docs und keytool docs .
Ich hatte das gerade aus heiterem Himmel vorgefunden. Ich glaube wirklich nicht, dass ich etwas verändert habe.
Es wurde jedoch durch "Build"/"Clean Project" behoben.
Ich empfehle Keystore Explorer ( https://keystore-Explorer.org/ ) wärmstens, mit dem Sie auf Ihren Keystore zugreifen können, ohne ihn in Google Play hochladen zu müssen. Auf diese Weise können Sie feststellen, ob Sie Ihr Kennwort falsch eingeben.
Mein [alberner] Fehler war, dass ich die Datei app-debug.apk anstelle der Datei app-release.apk verwendet habe. Sie müssen "release" in "Build Variants" auswählen, wenn Sie signierte APK generieren. Die Datei app-release.apk sollte sich in Ihrem Projektstamm im Ordner "app\release" befinden.
Ich war vor kurzem mit diesem Problem konfrontiert, nachdem ich verschiedene Anmeldemethoden ausprobiert hatte, z. B. V1 oder V2 aktivieren, angemeldet durch Ändern des Aliasnamens und wissen Sie zuletzt, dass ich eine falsche Schlüsselspeicherdatei verwende
Sie können die neue Funktion zum Signieren von Google Play-Apps verwenden, um eine neue Schlüsseldatei zu generieren.
Ab Mai 2017 bietet der Google Play Store eine neue Funktion im Play Store und "It's Good News For Android Developers". Mit dieser Funktion können Entwickler ihre App oder Apk aktualisieren, die eine KeyStore-Datei verloren haben. Sie müssen die Google Play App-Signatur in der Play Store-Konsole aktivieren.
https://support.google.com/googleplay/Android-developer/answer/7384423?hl=de
http://www.geekcodehub.com/2018/05/23/keystore-lost-in-Android/