java - java.io.IOException:无效的密钥库格式/无法识别的密钥库格式。使用旧的 android 密钥库时,请以指定的类型加载它
问题描述
我尝试使用 Android Studio 4.0.1 签署一个旧的 Android 应用程序(我在 1 年前成功签署了该应用程序),似乎密钥库无法再打开了。我仔细检查了凭据,但我不认为它来自那里。我还在互联网上使用“无效的密钥库格式”检查了各种答案,但在这里没有运气。
android JRE 引发此错误:
$ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/jre/bin/keytool -list -keystore android.keystore -v
erreur keytool : java.io.IOException: Invalid keystore format
java.io.IOException: Invalid keystore format
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:663)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
at java.security.KeyStore.load(KeyStore.java:1445)
at sun.security.tools.keytool.Main.doCommands(Main.java:823)
at sun.security.tools.keytool.Main.run(Main.java:366)
at sun.security.tools.keytool.Main.main(Main.java:359)
$ /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/jre/bin/java -version
openjdk version "1.8.0_242-release"
OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
OpenJDK 64-Bit Server VM (build 25.242-b3-6222593, mixed mode)
这是与操作系统完全相同的消息:
$ keytool -list -keystore android.keystore -v
keytool error: java.security.KeyStoreException: Unrecognized keystore format. Please load it with a specified type
java.security.KeyStoreException: Unrecognized keystore format. Please load it with a specified type
at java.base/java.security.KeyStore.getInstance(KeyStore.java:1809)
at java.base/java.security.KeyStore.getInstance(KeyStore.java:1680)
at java.base/sun.security.tools.keytool.Main.doCommands(Main.java:936)
at java.base/sun.security.tools.keytool.Main.run(Main.java:417)
at java.base/sun.security.tools.keytool.Main.main(Main.java:410)
$ java --version
openjdk 14.0.2 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)
我想我过去已经遇到过这个问题,必须恢复到旧版本的 JRE 才能继续正确打开我的密钥库(我现在正在尝试的解决方案)。
- 这是版本之间更改的默认算法的问题吗?如果是,我如何检查我的密钥库是否仍然有效并且我使用了正确的算法(因为不幸的是我没有创建它)?
- 我需要以某种方式迁移密钥库吗?
解决方案
推荐阅读
- java - 使用 JNA 使用 VC++ dll
- laravel - 如何从 Laravel 5.6 中的父包访问配置
- c# - 如何将变量分配给类
- javascript - android下一个和上一个按钮事件处理程序
- docker - Dockerfile 复制整个文件夹而不是其中的文件
- mockito - 使用参数匹配器 eq() 验证具有不同参数的方法调用失败,抱怨参数不同
- android - 画布 drawTextOnPath 并保存视图
- loops - 如何检查该值是否与前第 ? 行中的值匹配?(?是动态的)
- anaconda - 没有管理员权限的 Anaconda 安装包
- c# - 使用 doasync 任务调用方法