无法在AndroidStudio中打开密钥库-“;找到冗余长度字节";

无法在AndroidStudio中打开密钥库-“;找到冗余长度字节";,android,macos,java-8,apk,signing,Android,Macos,Java 8,Apk,Signing,我无法在Android Studio中打开现有密钥库文件,也无法从命令行使用jarsigner 在这两种情况下,错误消息为: java.security.cert.CertificateException:无法初始化,java.io.IOException:DerInputStream.getLength():找到冗余长度字节 请参见屏幕截图: 显然,这是一个应该解决的问题,但对我来说不起作用。(我们都在使用OSX) 我在特拉维斯身上也犯了同样的错误。(请参阅下面的“更新”部分。) 我发现了另

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

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

java.security.cert.CertificateException:无法初始化,java.io.IOException:DerInputStream.getLength():找到冗余长度字节

请参见屏幕截图:

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

我在特拉维斯身上也犯了同样的错误。(请参阅下面的“更新”部分。)

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


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


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

我也遇到了同样的错误,我按照下面的解决方案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
keytool-v-list-keystore.keystore

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

我们最终通过使用来解决这个问题

我们使用一台带有JDK 7的机器来完成应用程序签名教程中描述的所有步骤


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

我遇到了完全相同的问题,所有的解决方案都不起作用


我通过上传pepk工具生成的私钥升级到Google的新应用程序签名,并要求他们的支持人员重置上传密钥,最终实现了这一功能。

不太确定,但您似乎正在点击此按钮:。如果是。。。它只在java-9中被修复。你能试着用java-9看看会发生什么吗?但是我们不使用openJDK,但是oracle的JDK。不管怎样,每种代码都差不多。对oracle jdk-9进行测试并不仅仅是为了确保—您能用
jdk-9
重新生成它吗?我还没有时间检查。但据我所知JDK9还没有正式发布,对吗?sugansoft我同意你的答案。。。太好了,我找了很久。但简单地说,它是固定的,节省了我的时间……对不起,这不起作用。首先,问题发生在我们更新到JDK8时。第二个
keytool
是Android Studio调用的工具。因此,当使用
keytool
时,我得到了完全相同的错误。您具体执行了哪些步骤?我也有同样的问题。谢谢