2017-07-27 17 views
10

Tôi không thể mở tệp kho khóa hiện có của mình trong Android Studio hoặc sử dụng jarsigner từ dòng lệnh.Không thể mở kho khóa trong AndroidStudio - "Đã tìm thấy các byte độ dài thừa"

Trong cả hai trường hợp, các thông báo lỗi là:

java.security.cert.CertificateException: Không thể khởi tạo, java.io.IOException: DerInputStream.getLength(): byte chiều dài Redundant tìm thấy

Xem ảnh chụp màn hình:
Android Studio

Rõ ràng đây là một vấn đề mà cần được cố định với JDK8_131 nhưng không làm việc cho tôi. (Tất cả chúng ta đều đang sử dụng OSX)

Tôi cũng gặp lỗi tương tự trên chuyến đi. (Xem "Update" dưới đây.)

Tôi tìm thấy một câu hỏi SO (Signing android app throws IOException: Redundant length bytes found), nơi họ chuyển đổi các tập tin .pkc12-.keystore nhưng chúng tôi đã sử dụng .keystore


CẬP NHẬT

tôi thấy rằng xây dựng cũng bắt đầu thất bại trên travis bởi vì họ đang di chuyển xây dựng để distro mới của họ trusty tải xuống JDK mới nhất trong khi precise sử dụng JDK7 theo mặc định. Thêm dist: precise vào đầu tệp .travis.yml hoạt động ngay bây giờ nhưng điều này chắc chắn không phải là giải pháp vĩnh viễn.

Chúng tôi chỉ có thể hy vọng cho bản cập nhật JDK khắc phục sự cố hoặc có cách nào để xóa các byte độ dài dư thừa khỏi kho khóa không?

+0

Không hoàn toàn chắc chắn, nhưng có vẻ như bạn đang nhấn vào đây: https://bugs.openjdk.java.net/browse/JDK-8179191. Nếu nó là ... nó chỉ được sửa trong java-9. bạn có thể thử với java-9 để xem điều gì xảy ra không? – Eugene

+0

Nhưng chúng tôi không sử dụng openJDK nhưng mã JDK – Altoyyr

+0

của oracle gần như giống nhau ở mỗi trường hợp. và thử nghiệm với oracle jdk-9 sẽ không làm tổn thương – Eugene

Trả lời

3

Tôi cũng gặp lỗi tương tự và tôi đã sửa lỗi bằng cách làm theo Giải pháp 1 bên dưới. bạn có thể thử Giải pháp 1 để giải quyết nó. Khác làm theo các giải pháp khác.

Giải pháp 1

Đang cập nhật JDK từ 7 đến 8

Giải pháp 2

Bạn có thể chạy lệnh sau để liệt kê các nội dung của tập tin keystore của bạn:

keytool -list -keystore .keystore 

Nếu bạn đang tìm kiếm một bí danh cụ thể, bạn cũng có thể chỉ định y nó trong lệnh:

keytool -list -keystore .keystore -alias foo 

Nếu bí danh không được tìm thấy, nó sẽ hiển thị một ngoại lệ:

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

Giải pháp 3

Để có được tất cả các chi tiết tôi đã có thêm tùy chọn -v

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

Nó chắc chắn sẽ giúp bạn giải quyết lỗi hoặc bạn có thể lấy nội dung của kho khóa của bạn và có thể tạo kho khóa mới cho ứng dụng của bạn.

+0

sugansoft tôi đồng ý câu trả lời của bạn ... tuyệt vời tôi đã tìm kiếm lâu dài. nhưng chỉ đơn giản là nó cố định và tiết kiệm thời gian của tôi .... – gowtham

+0

Xin lỗi nhưng điều này không hoạt động. Trước hết, vấn đề xảy ra khi chúng tôi cập nhật lên JDK8. 'Keytool' thứ hai là công cụ được gọi bởi Android Studio. Vì vậy, khi sử dụng 'keytool' tôi nhận được chính xác các lỗi tương tự. – Altoyyr

Các vấn đề liên quan