2017-07-27 5 views
10

Je ne parviens pas à ouvrir mon fichier de magasin de clés existant dans Android Studio ou à utiliser le jarsigner à partir de la ligne de commande.Impossible d'ouvrir le fichier de clés dans AndroidStudio - "Octets de longueur redondants trouvés"

Dans les deux cas, le message d'erreur est:

java.security.cert.CertificateException: impossible à initialiser, java.io.IOException: DerInputStream.getLength(): octets de longueur redondants trouvés

Voir capture d'écran:
Android Studio

Apparemment, ce fut une question qui devrait être fixé avec JDK8_131 mais ne fonctionne pas pour moi. (Nous utilisons tous OSX)

J'ai aussi la même erreur sur travis. (Voir la section "Mise à jour" ci-dessous.)

Je trouve une autre question SO (Signing android app throws IOException: Redundant length bytes found) où ils ont converti le fichier .pkc12-.keystore mais nous utilisons déjà .keystore


MISE À JOUR

J'ai trouvé que la construction a également commencé à échouer sur travis car ils déplacent des builds vers leur nouvelle distribution trusty qui télécharge le dernier JDK alors que precise utilisait le JDK7 par défaut. Ajouter dist: precise au début du fichier .travis.yml fonctionne pour l'instant mais ce n'est certainement pas une solution permanente. Pouvons-nous seulement espérer une mise à jour du JDK qui corrige le problème ou existe-t-il un moyen de supprimer les octets de longueur redondants du fichier de clés?

+0

Pas tout à fait sûr, mais il semble que vous frappez ceci: https://bugs.openjdk.java.net/browse/JDK-8179191. Si c'est ... c'est seulement corrigé dans java-9. pouvez-vous essayer avec java-9 juste pour voir ce qui se passe? – Eugene

+0

Mais nous n'utilisons pas openJDK mais Oracle JDK – Altoyyr

+0

le code est proche de la même dans tous les cas. et tester contre oracle jdk-9 ne ferait pas mal – Eugene

Répondre

3

J'ai également obtenu la même erreur et je l'ai corrigé en suivant la solution 1 ci-dessous. vous pouvez essayer la solution 1 pour le résoudre. Sinon, suivez les autres solutions.

Solution 1

Mise à jour JDK 7 à 8

Solution 2

Vous pouvez exécuter la commande suivante pour afficher le contenu de votre fichier keystore:

keytool -list -keystore .keystore 

Si vous recherchez un alias spécifique, vous pouvez également spécifier y dans la commande:

keytool -list -keystore .keystore -alias foo 

Si l'alias est introuvable, il affiche une exception:

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

Solution 3

Pour obtenir tous les détails que je devais ajouter l'option -v

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

Il va sûrement vous aider à résoudre l'erreur ou vous pouvez obtenir le contenu de votre fichier de clés et peut générer un nouveau fichier de clés de votre application.

+0

sugansoft je suis d'accord votre réponse ... super je cherchais longtemps. mais simplement c'est fixe et sauvé mon temps .... – gowtham

+0

Désolé mais cela ne fonctionne pas. Tout d'abord, le problème est survenu lors de la mise à jour de JDK8. La seconde 'keytool' est l'outil qui est invoqué par Android Studio. Donc quand j'utilise 'keytool', j'obtiens exactement les mêmes erreurs. – Altoyyr