Android申请安全码SHA1遇到的java.io.IOException: Invalid keystore format错误解决方案

前言:

最近打算做一款项目,需要调用一些大公司API(高德地图或百度地图),发现在获取安全码时发生了java.io.IOException: Invalid keystore format错误,那如何解决这种错误呢?在忙了俩小时之后,发现有一种方法可以解决。

打开Android studio :

打开android studio后,点击右上角的File选项选择Project Structure...

打开后点击SDK Location,下方有个蓝色选项Gradle Setting,点击打开。

点开Gradle JDK,就会发现,如果你之前没配置过JDK,使用的是android studio自带的版本,就可能会出现和自己主机上安装的JDK版本不相同的情况。

JDK是什么?JDK 是 Java Development ToolKit 的简称,也就是 Java 开发工具包。其中包含了编译器、调试器、运行时环境、类库以及其他实用工具,用于开发、编译、调试和运行 Java 程序。它提供了一些重要的组件,例如 Java 编译器(javac)、Java 虚拟机(JVM)和 Java 类库(Java Class Library)等。大体来说,JDK 是用于 Java 开发的一套工具和资源集合,使开发人员能够编写、编译、调试和运行 Java 程序

寻找目录

我们找到android默认的JDK存放路径,如图(我的存放路径是D:\program\android\Androidstudio\jbr\bin)

用文件夹打开,在文件夹路径上打出cmd,回车进入

于是我们进入了该目录行下的命令操作界面,我们在这个操作界面就可以获取SHA1

获取开发版SHA1安全码

我们打开c盘的用户(User)文件,打开名字为123456文件(一串数字罢了)后打开.android文件,找到debug.keystore,这个就是秘钥库。通过命令可以获得安全码。复制秘钥库所在的路径。(我为了省事这样,也可以通过命令行输入命令cd进入)

在刚才的命令行操作界面输入:keytool -v -list -keystore debug.keystore ,默认密码为android

这样就获得了开发版的SHA1安全码。

获取发布版SHA1安全码

打开Android studio,如下面图操作,跟上节奏

点击OK,再把下面的也设置了,推荐你们把所有密码都写一样的,不然分不清。

创建完后我们存放的路径会有一个jks文件。JKS 文件是一种 Java 密钥存储文件,用于在 Java 程序中管理和存储密钥、证书和可信任的证书颁发机构(CA)根证书。在 Java 程序中,可以使用密钥库(KeyStore)类来加载和操作 JKS 文件。

然后我们回到刚刚的命令行操作界面,输入: keytool -v -list -keystore + 路径 + 文件名和后缀,填写你刚刚创建的密码就可以了。

大功告成,问题完美解决

错误原因分析:

这可能是由于使用不同版本的密钥库格式或不兼容的工具导致的,Java中的 keytool 工具用于处理密钥库,包括创建、导入、导出、查看证书等操作。然而不同版本的 JDK / JRE 可能使用不同的默认密钥库格式。例如,较旧的版本可能使用 JKS (Java KeyStore) 格式,而较新的版本可能更倾向于使用 PKCS12 格式。两种格式在内部结构和文件编码上存在差异。

解决这种问题,可以把主机的JDK版本更新一下,这样就有相应版本的keytool工具。或者就是像我这样,使用android默认的JDK,也就是和它兼容的版本,就可以打开了。

补充说明:

导致Android申请安全码SHA1遇到的java.io.IOException: Invalid keystore format错误的原因不止一种,而我今天解决的是其中一种的原因。如果按我上述操作还没有成功解决的小伙伴,可以去看看其他博主写的文章。

相关推荐
Hyyy15 分钟前
Function Calling / Tool Use的原理和实现模式
前端·llm·ai编程
爱勇宝22 分钟前
从 Ctrl+CV 到 Enter:程序员正在失去什么
前端·后端·程序员
徐小夕39 分钟前
我们开源了一款“框架无关”的思维导图编辑器,3分钟集成到任意系统
前端·javascript·github
PBitW43 分钟前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
像我这样帅的人丶你还1 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩1 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
摸着石头过河的石头1 小时前
前端多仓库管理:从混乱到有序的进化之路
前端
星栈1 小时前
写 Dioxus Demo 不难,难的是把它写成项目
前端·rust·前端框架
labixiong1 小时前
还原一个完整符合规范的 Promise(二)
前端·javascript
时光足迹2 小时前
腾讯云 TRTC UniApp SDK 从入门到上线
前端·vue.js·uni-app