Ich hatte meine App vor einiger Zeit auf Google Play hochgeladen (damals, als sie Android Market hieß).
Heute habe ich die App aktualisiert, aber den vorherigen Keystore gelöscht und einen neuen erstellt.
Beim Hochladen heißt es, dass die APK mit denselben Zertifikaten wie die vorherige Version signiert sein muss:
Upload fehlgeschlagen
Sie haben eine APK hochgeladen, die mit einem anderen Zertifikat als Ihre vorherigen APKs signiert ist. Sie müssen dasselbe Zertifikat verwenden.
Ihre vorhandenen APKs sind 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 zum Signieren der von Ihnen hochgeladenen APK verwendeten Zertifikate 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 dieses Zertifikat jedoch nicht und möchte die Anwendung nicht löschen und erneut veröffentlichen, da sie aktive Benutzer hat.
Was kann ich tun, um meine App mit einem neuen Zertifikat zu signieren?
quelle
Antworten:
Nichts. Lesen Sie die Dokumentation: Veröffentlichen von Updates in Android Market
quelle
Haben Sie versehentlich mit dem Debug-Schlüssel unterschrieben?
Mit Google Play können Sie keine App veröffentlichen, die mit Ihrem Debug-Keystore signiert ist. Wenn Sie versuchen, eine solche APK hochzuladen, schlägt Google Play mit der Meldung "Sie haben eine APK hochgeladen, die im Debug-Modus signiert wurde. Sie müssen Ihre APK im Release-Modus signieren" fehl.
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.
Überprüfen Sie zunächst, ob Sie die App versehentlich mit Ihrem Debug-Schlüssel signiert haben.
Wie überprüfe ich, welche Signaturschlüssel verwendet wurden?
Sammeln Sie die Informationen aus der APK
Mit den folgenden Befehlen können Sie mithilfe von Java überprüfen, mit welchen Zertifikaten das ursprüngliche APK und das Update-APK signiert wurden
keytool
:Hier sehen Sie detaillierte Informationen darüber, wie eine APK signiert wurde, zum Beispiel:
Die wichtigen Teile, die hier zu beachten sind - für jede APK - sind der SHA1- Fingerabdruckwert, der Eigentümeridentitätswert und das Gültigkeitsdatum von / bis .
Wenn dieser
keytool
Befehl nicht funktioniert (für die-jarfile
Option ist Java 7 erforderlich), können Sie über den folgendenjarsigner
Befehl weitere grundlegende Informationen abrufen:Dies zeigt leider nicht den SHA1-Fingerabdruck, sondern die X.509-Eigentümeridentität sowie die Ablaufdaten des Zertifikats. Beispielsweise:
Sie können jede Meldung "CertPath nicht validiert" sowie Warnungen zu Zertifikatketten oder Zeitstempeln ignorieren. Sie sind in diesem Fall nicht relevant.
Vergleichen Sie die Werte für Eigentümer, SHA1 und Ablauf zwischen den APKs
Wenn der Identitätswert Owner / X.509 lautet
CN=Android Debug, O=Android, C=US
, haben Sie die APK mit Ihrem Debug-Schlüssel und nicht mit dem ursprünglichen Release-Schlüssel signiertWenn sich der SHA1- Fingerabdruckwert zwischen den ursprünglichen und den aktualisierten APKs unterscheidet, haben Sie nicht für beide APKs denselben Signaturschlüssel verwendet
Wenn die Identitätswerte für Eigentümer / X.509 unterschiedlich sind oder die Ablaufdaten des Zertifikats zwischen den beiden APKs unterschiedlich sind, haben Sie nicht für beide APKs denselben Signaturschlüssel verwendet
Beachten Sie, dass selbst 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 die Fingerabdruckwerte -, dann unterscheiden sich die Zertifikate.
Suchen Sie nach dem ursprünglichen Schlüsselspeicher und überprüfen Sie die Sicherungen
Wenn die beiden APKs unterschiedliche Zertifikatinformationen haben, müssen Sie den ursprünglichen Schlüsselspeicher finden, dh 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 und in allen vorhandenen Backups finden, bis Sie die mit dem richtigen SHA1-Fingerabdruck haben:
Drücken EnterSie einfach, wenn Sie zur Eingabe des Passworts aufgefordert werden. Sie müssen es nicht unbedingt eingeben, wenn Sie nur schnell den SHA1-Wert überprüfen möchten.
Ich kann den ursprünglichen Schlüsselspeicher nirgendwo finden
Wenn Sie den ursprünglichen Schlüsselspeicher 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 Signieren Ihrer Anwendung :
Nach der ersten Veröffentlichung einer APK müssen alle nachfolgenden Versionen mit genau demselben Schlüssel signiert werden.
Kann ich den ursprünglichen Signaturschlüssel aus der ursprünglichen APK extrahieren?
Nein das ist nicht möglich. Die APK enthält nur öffentliche Informationen und nicht Ihre privaten Schlüsselinformationen.
Kann ich auf einen neuen Signaturschlüssel migrieren?
Nein. Selbst wenn Sie das Original finden, können Sie keine APK mit Schlüssel A signieren, dann das nächste Update mit beiden Schlüsseln A und B signieren und das nächste Update danach nur mit Schlüssel B signieren.
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." Angezeigt.
Was kann ich tun?
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. Sie müssen beispielsweise sicherstellen, dass Sie keine widersprüchlichen Inhaltsanbieter haben.
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 über sichere Sicherungen des für diese Version verwendeten Schlüsselspeichers und Kennworts verfügen.
quelle
[CertPath not validated: Path does not chain with any of the trust anchors]
ist mit kein Problem? Ich sehe meinen Namen bei,CN
also habe ich ihn wohl richtig unterschrieben :)Nichts - Google sagt deutlich, dass die Anwendung durch die zum Signieren verwendeten Schlüssel identifiziert wird. Wenn Sie die Schlüssel verloren haben, müssen Sie eine neue Anwendung erstellen.
quelle
Heute hatte ich das gleiche Problem, leider hatte ich zwei Aliase in meiner Keystore-Datei.
quelle
Ich hatte dies gerade aus heiterem Himmel geschehen. Ich glaube wirklich nicht, dass ich etwas geändert habe.
Es wurde jedoch
Build => Clean Project
behoben.quelle
Hier bekomme ich die Antwort auf diese Frage. Nachdem ich zu lange gesucht habe, kann ich endlich den Schlüssel und das Passwort dafür knacken. Ich vergesse meinen Schlüssel und Alias auch die JKS-Datei, aber zum Glück kenne ich die Menge an Passwörtern, die ich eingegeben habe. Aber die richtigen Kombinationen dafür zu finden, war für mich die schwierigste Aufgabe.
Lösung - Laden Sie dieses Plugin für Keytool IUI Version 2.4.1 herunter
Das Fenster wird geöffnet, in dem der Aliasname angezeigt wird. Wenn Ihre JKS-Datei korrekt ist. Klicken Sie mit der rechten Maustaste auf den Alias und klicken Sie auf "Zertifikatskette anzeigen". Es wird der SHA1-Schlüssel angezeigt. Ordnen Sie diesen Schlüssel dem Schlüssel zu, den Sie erhalten während du die apk im google app store hochgeladen hast ...
Wenn es übereinstimmt, haben Sie die richtige JKS-Datei und den richtigen Alias.
Jetzt habe ich Glück, dass ich ein paar passende Passwörter habe.
Gehen Sie jetzt zu diesem Skript und geben Sie den gleichen JKS-Pfad ein. Geben Sie das Passwort (unter dem Passwort, das Sie haben) einen beliebigen Pfad in "Zertifikatdatei" ein.
Wenn auf dem Bildschirm ein Fehler angezeigt wird, stimmt das Kennwort nicht überein. Wenn kein Fehler angezeigt wird, bedeutet dies, dass Sie über die richtige JKS-Datei verfügen. korrekter Alias und Passwort () jetzt damit kannst du deine apk im play store hochladen :)
quelle
Wenn Sie eine vorherige Apk-Datei bei sich haben (Backup), verwenden Sie jarSigner, um das Zertifikat aus diesem Apk zu extrahieren. Verwenden Sie dann diesen Schlüssel oder Keytool, um dieses Zertifikat zu klonen. Dies kann hilfreich sein. Hilfreiche Links sind Jarsigner-Dokumente und Keytool-Dokumente .
quelle
Ich empfehle den Keystore Explorer ( https://keystore-explorer.org/ ), mit dem Sie auf Ihren Keystore zugreifen können, ohne ihn auf Google Play hochladen zu müssen. Auf diese Weise können Sie Fehler beheben, wenn Sie Ihr Passwort falsch eingeben.
quelle
Sie können die neue Funktion der Google Play App-Signatur verwenden, um eine neue Schlüsseldatei zu generieren.
Nach Mai 2017 hat der Google Play Store eine neue Funktion im Play Store hinzugefügt und es sind gute Nachrichten für Android-Entwickler. Über diese Funktion kann der Entwickler seine App oder Apk aktualisieren, die eine KeyStore-Datei verloren haben. Sie müssen die Google Play App-Signatur auf 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/
quelle
Ich war kürzlich mit diesem Problem konfrontiert, nachdem ich verschiedene Anmeldemethoden wie "Aktivieren von V1" oder "V2" ausprobiert hatte , mich durch Ändern des Aliasnamens angemeldet hatte und zuletzt festgestellt hatte, dass ich eine falsche Schlüsselspeicherdatei verwende
quelle
Mein [dummer] Fehler war, dass ich die Datei app-debug.apk anstelle der Datei app-release.apk verwendet habe. Sie müssen "Freigabe" im Rahmen "Varianten erstellen" auswählen, wenn Sie signierte APK generieren. Die Datei app-release.apk sollte sich im Ordner "app \ release" in Ihrem Projektstamm befinden.
quelle