Подтвердить что ты не робот

Не удалось открыть хранилище ключей в AndroidStudio - "Найдены избыточные байты длины"

Я не могу открыть существующий файл хранилища ключей в Android Studio или использовать jarsigner из командной строки.

В обоих случаях сообщение об ошибке:

java.security.cert.CertificateException: Невозможно инициализировать, java.io.IOException: DerInputStream.getLength(): Найдены избыточные байты длины

Смотрите снимок экрана:
Android Studio

По-видимому, это проблема, которая должна быть исправлена ​​с помощью JDK8_131, но не работает для меня. (Мы все используем OSX)

Я также получаю ту же ошибку в travis. (См. Раздел "Обновление" ниже.)

Я нашел еще один вопрос SO (Signing android app throws IOException: Найдены избыточные байты длины), где они преобразовали файл .pkc12 в .keystore, но мы уже используя .keystore


UPDATE

Я обнаружил, что сборка также началась с сбоя на travis, потому что они перемещают сборки в свой новый дистрибутив trusty, который загружает новейший JDK, тогда как precise используется JDK7 по умолчанию. Добавление dist: precise в начало файла .travis.yml работает пока, но это определенно не является постоянным решением.

Можно ли только надеяться на обновление JDK, которое исправляет проблему, или есть способ удалить избыточные байты длины из хранилища ключей?

4b9b3361

Ответ 1

Я также получил ту же ошибку, и я исправил ее, выполнив решение 1 ниже. вы можете попробовать Решение 1, чтобы решить проблему. Остальные следуют другим решениям.

Решение 1

Обновление JDK с 7 до 8

Решение 2

Вы можете запустить следующую команду, чтобы отобразить содержимое файла хранилища ключей:

keytool -list -keystore .keystore

Если вы ищете определенный псевдоним, вы также можете указать его в команде:

keytool -list -keystore .keystore -alias foo

Если псевдоним не найден, будет отображаться исключение:

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

Решение 3

Чтобы получить все детали, мне пришлось добавить опцию -v

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

Это поможет вам решить эту проблему, или вы можете получить содержимое своего хранилища ключей и создать новое хранилище своего приложения.