如何解决密钥库加载:密钥库格式无效?

时间:2012-09-06 02:26:05

标签: android keystore jarsigner

三个月前,我正在为我的应用添加一个发布密钥。现在我格式化我的计算机,当我使用我的releasekey签署我的应用程序时,我收到了错误:java.lang.RunTimeException:keystore load:无效的密钥库格式。

我应该如何解决这个错误?

命令是:jarsigner -verbose -keystore“D:\ releasekey.keystore”“D:\ myApp.apk”releasekey

我正在使用较旧的密钥库(fisrt one),但我收到了错误。

我试过这个:

java.io.IOException: java.io.IOException: invalid keystore format 
at sun.security.provider.javaKeyStore.engineLoad(JavaKeyStore.java:650) 
at sun.security.provider.javaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) 
at java.security.KeyStrore.load(KeyStore.java:1214) 
at sun.security.tools.KeyTool.doCommands(KeyTool.java:789) 
at sun.security.tools.KeyTool.run(KeyTool.java:340) 
at sun.security.tools.KeyTool.main(KeyTool.java:333) 

enter image description here

1 个答案:

答案 0 :(得分:1)

密钥库包含用于签署应用程序的私有加密密钥 - 重新运行该命令会生成一个完全不同的密钥(密码只保护持有它的文件 - 它与加密密钥本身没有直接关系) - 你如果丢失了密钥库文件,则无法恢复/重建它。

如果您丢失了它,那么您的用户必须在安装新版本之前完全卸载现有应用程序 - 当他们卸载时,他们将丢失应用程序中保存的所有数据(没有解决方法,这是一个安全功能在android)

更糟糕的是 - android play store不会让你上传你的新版本,因为它们没有使用与旧版本相同的密钥编码 - 你需要在不同的包名下发布新版本 - 这意味着您现有的用户甚至无法自动升级(他们必须找到新版本) - 您甚至无法告诉他们需要升级(您无法上传旧版本的旧应用程序。 ..)

您必须在备份中找到密钥库文件或尝试从磁盘恢复数据 - 希望您采用“快速”格式 - 在这种情况下,良好的数据恢复服务可能能够如果您的操作系统尚未覆盖它,请将其恢复。

古德勒克!