赞
踩
最近打算做一款项目,需要调用一些大公司API(高德地图或百度地图),发现在获取安全码时发生了java.io.IOException: Invalid
keystore format错误,那如何解决这种错误呢?在忙了俩小时之后,发现有一种方法可以解决。
打开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
我们打开c盘的用户(User)文件,打开名字为123456文件(一串数字罢了)后打开.android文件,找到debug.keystore,这个就是秘钥库。通过命令可以获得安全码。复制秘钥库所在的路径。(我为了省事这样,也可以通过命令行输入命令cd进入)
在刚才的命令行操作界面输入: keytool -v -list -keystore debug.keystore ,默认密码为
android 。
这样就获得了开发版的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错误的原因不止一种,而我今天解决的是其中一种的原因。如果按我上述操作还没有成功解决的小伙伴,可以去看看其他博主写的文章。
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。