web-dev-qa-db-de.com

Aktualisierte APK kann aufgrund eines anderen Zertifikats nicht zu Google Play hochgeladen werden

Ich verwende Android Studio zum Erstellen meiner Android) - Projekte. Wenn ich meine APK auf Google Play hochlade, wird mir dieser Fehler trotz der Verwendung weiterhin angezeigt Der derselbe Keystore den ich für frühere Versionen meiner App verwendet habe:

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 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 hochgeladenen APK verwendet wurden, haben Fingerabdrücke:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]

18
user3871129

Erstens ist es unwahrscheinlich, dass Google Play hier falsch ist. Sind Sie sicher, dass Sie Ihren Debug-Schlüssel nicht versehentlich verwendet haben?

Überprüfen Sie die verwendeten Signaturschlüssel

Sie sollten mit den folgenden Befehlen überprüfen, welche Zertifikate das alte APK und das neue APK enthalten:

jarsigner -verify -verbose:summary -certs old.apk
jarsigner -verify -verbose:summary -certs new.apk

Hier sehen Sie Informationen zu den in den einzelnen APKs signierten Dateien:

sm  4642892 Thu Apr 17 10:57:44 CEST 2014 classes.dex (and 412 more)

    X.509, CN=My App, O=My Company, C=DE, L=Köln
    [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]

Wenn in der neuen APK X.509, CN=Android Debug, O=Android, C=US Steht, haben Sie die APK mit Ihrem Debug-Schlüssel anstelle des ursprünglichen Release-Schlüssels signiert.

Wenn die X.509-Identitätszeichenfolgen ansonsten unterschiedlich sind oder die Zertifikatdaten für die beiden APKs unterschiedlich sind, haben Sie gerade bestätigt, dass Sie keine verwendet haben der gleiche Signaturschlüssel für beide APKs.

Sie können jede Meldung "CertPath nicht validiert" ignorieren. es ist in diesem Fall nicht relevant.

Suchen Sie nach dem ursprünglichen Keystore

Wenn sich die Zertifikatinformationen unterscheiden, müssen Sie den ursprünglichen Schlüsselspeicher suchen, d. H. Die Datei mit dem ersten SHA1-Wert, den Google Play Ihnen mitgeteilt hat.

Durchsuchen Sie alle gefundenen Keystore-Dateien, bis Sie die mit dem richtigen SHA1-Fingerabdruck gefunden haben:

keytool -list -keystore my-release.keystore

Ich kann den ursprünglichen Schlüsselspeicher nicht finden

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 mit derselben signieren müssen Schlüssel.

Nach der ersten Veröffentlichung einer APK müssen alle nachfolgenden Veröffentlichungen 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. Das APK enthält nur öffentliche Informationen und nicht Ihre privaten Schlüsselinformationen.

Kann ich auf einen neuen Signaturschlüssel migrieren?

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 das nächste Update nur mit Schlüssel B.

Signieren einer APK (oder einer JAR-Datei) mit mehreren Schlüsseln technisch gesehen möglich, aber Google Play akzeptiert keine APKs mit mehreren Signaturen.

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, 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 Sicherungen des für diese Version verwendeten Schlüsselspeichers und Kennworts haben.

44
Christopher Orr