2017-07-27 3 views
10

Ich kann meine vorhandene Keystore-Datei in Android Studio nicht öffnen oder jarsigner von der Befehlszeile verwenden.Kann Keystore in AndroidStudio nicht öffnen - "Redundante Länge Bytes gefunden"

In beiden Fällen wird die Fehlermeldung ist:

java.security.cert.CertificateException: Kann nicht initialisieren, java.io.IOException: DerInputStream.getLength(): Redundant Längenbytes

gefunden

Siehe Screenshot:
Android Studio

Anscheinend war dies ein Problem, das mit JDK8_131 festgelegt werden soll, aber für mich nicht funktioniert. (Wir verwenden alle OSX)

Ich bekomme auch den gleichen Fehler auf Travis. (Siehe "Update" Abschnitt weiter unten.)

ich eine andere Frage SO gefunden (Signing android app throws IOException: Redundant length bytes found), wo sie die .pkc12 Datei zu .keystore umgewandelt, aber wir sind bereits mit .keystore


UPDATE

Ich fand, dass Der Build begann auch Travis zu scheitern, weil sie Builds auf ihre neue Distribution verschieben , die das neueste JDK herunterlädt, während precise standardmäßig JDK7 verwendet. Das Hinzufügen von dist: precise an die Spitze der Datei .travis.yml funktioniert jetzt, aber das ist definitiv keine dauerhafte Lösung.

Können wir nur auf ein JDK-Update hoffen, das das Problem behebt, oder gibt es eine Möglichkeit, die redundanten Längenbytes aus dem Schlüsselspeicher zu entfernen?

+0

Nicht ganz sicher, aber es scheint, dass Sie dies treffen: https://bugs.openjdk.java.net/browse/JDK-8179191. Wenn es ... ist, ist es nur in Java-9 behoben. kannst du es mit java-9 versuchen, nur um zu sehen, was passiert? – Eugene

+0

Aber wir verwenden nicht openJDK aber Orakels JDK – Altoyyr

+0

der Code ist in jedem sowieso nah an der gleichen. und testen gegen oracle jdk-9 würde nicht weh tun – Eugene

Antwort

3

Ich habe auch den gleichen Fehler und ich habe es behoben, indem ich folgende Lösung 1 folgte. Sie können Lösung 1 versuchen, um es zu lösen. Sonst folge den anderen Lösungen.

Lösung 1

aktualisiert JDK von 7 bis 8

Lösung 2

können Sie den folgenden Befehl ausführen, um den Inhalt Ihres Schlüsselspeicher-Datei zur Liste:

keytool -list -keystore .keystore 

Wenn Sie nach einem bestimmten Alias ​​suchen, können Sie auch specif y es in dem Befehl:

keytool -list -keystore .keystore -alias foo 

Wenn der Alias ​​nicht gefunden wird, wird eine Ausnahme angezeigt:

keytool error: java.lang.Exception: Alias does not exist 

Lösung 3

Um alle Details zu erhalten musste ich hinzufügen die -v Option

keytool -v -list -keystore <FileName>.keystore 

Es wird sicherlich helfen Ihnen, den Fehler zu lösen, oder Sie können das bekommen Inhalt Ihres Schlüsselspeichers und kann einen neuen Schlüsselspeicher Ihrer App generieren.

+0

Sugansoft ich stimme zu Ihrer Antwort ... großartig, ich suchte lange. aber einfach ist es behoben und gespeichert meine Zeit .... – gowtham

+0

Sorry, aber das funktioniert nicht. Zuallererst trat das Problem auf, als wir auf JDK8 aktualisiert haben. Second 'keytool' ist das Tool, das von Android Studio aufgerufen wird. Wenn ich 'keytool' benutze, bekomme ich genau die gleichen Fehler. – Altoyyr

Verwandte Themen