无法在 Android Studio 中打开密钥库 - "Redundant length bytes found"

Unable to open keystore in AndroidStudio - "Redundant length bytes found"

我无法在 Android Studio 中打开我现有的密钥库文件,也无法从命令行使用 jarsigner

在这两种情况下,错误消息都是:

java.security.cert.CertificateException: Unable to initialize, java.io.IOException: DerInputStream.getLength(): Redundant length bytes found

见截图:

显然这是一个应该用 JDK8_131 解决的问题,但对我不起作用。 (我们都在用OSX)

我在 travis 上也遇到同样的错误。 (请参阅下面的“更新”部分。)

我发现了另一个 SO 问题 (),他们将 .pkc12 文件转换为 .keystore,但我们已经在使用 .keystore


更新

我发现构建在 travis 上也开始失败,因为他们正在将构建移动到他们的新发行版 trusty,该发行版下载最新的 JDK 而 precise 使用 JDK默认为 7。将 dist: precise 添加到 .travis.yml 文件的顶部目前可行,但这绝对不是永久性解决方案。

我们只能希望 JDK 更新来解决问题,还是有办法从密钥库中删除冗余长度字节?

我也遇到了同样的错误,我按照下面的解决方案 1 修复了它。您可以尝试解决方案 1 来解决它。否则按照其他解决方案。

解决方案 1

Updating JDK from 7 to 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

它一定会帮助您解决错误,或者您可以获得您的密钥库的内容,并可以生成您的应用程序的新密钥库。

我们最终通过使用 Google Play App Signing.

解决了这个问题

我们使用 JDK 7 的机器来执行应用签名教程中描述的所有步骤。

然后我们使用 JDK9 机器创建了新的密钥库。

我遇到了完全相同的问题,none 的解决方案有效。

我终于通过上传使用 pepk 工具生成的私钥升级到 Google 的新应用程序签名来让它工作,并请求他们的支持重置上传密钥。