无法使用 Android Studio 签署 APK - 出现异常:DerInputStream.getlength()

Cannot sign an APK with Android Studio - Getting exception: DerInputStream.getlength()

我刚刚继承了一个 2013 年创建的旧项目。

密钥库可能是用 jdk 7 创建的。

当我尝试在 Android studio 中生成 APK 时,出现异常:
无法加载密钥存储:无法初始化,java.io.IOException:DerInputStream.getLength():发现冗余长度字节

我试过的是:

相关帖子:
Android keystore corrupted

我不知道下一步该做什么。

唯一可行的方法是在终端中手动签署未签名的 apk。
这个解决方案不是最优的。 此外,它仅在使用旧 jdk 版本时有效(在本例中为 jdk1.7.0_80) 所以我不能长期使用这个解决方案。

这可能对您有所帮助。这是在 JDK 7 上生成的密钥库无法用 JDK 8.

读取的相同情况

https://forum.unity.com/threads/keystore-generated-on-jdk-7-unable-to-read-with-jdk-8.460020/

好吧,我没有尝试修复原始密钥库,而是通过转向 Play 应用签名设法解决了这个问题。

我创建了一个新的上传密钥,我从现在开始使用它来创建签名的 APK。

对于可能有帮助的人:

  • 签名以播放商店并导航到您的应用程序

  • 转到设置 -> 应用完整性

  • 选择从 Java 密钥库导出并上传密钥,然后按照说明操作*

*请注意,在此阶段您可能会遇到与上述相同的异常 (DerInputStream.getlength()....)。
发生这种情况是因为私钥生成命令使用 java - 与首先导致异常的 java 版本相同。
所以这是要点:
您应该使用不同的 java 8 版本,在该版本中不会发生异常(如 1.8.0_112)。
它不适用于 java 7 及更早版本,因为 pepk 工具是使用 java 8.

构建的

像这样:

/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/jre/bin/java -jar pepk.jar ....

从这里继续创建新的上传密钥,您应该已完成所有设置。