无法找到Program Files中的Java文件夹,需通过keystore命令获取SHA值
别急,我之前做Android开发时也碰到过一模一样的情况——gradle signing report输出的SHA不被API页面认可,还死活找不到Java文件夹,给你一步步捋清楚解决办法:
第一步:精准定位Java(JDK/JBR)路径
你之前能正常开发,大概率用的是Android Studio自带的JDK,而非单独安装的Java版本,所以在Program Files里找不到很正常。这里有两个绝对靠谱的查找方式:
方法1:从Android Studio直接获取(最推荐)
打开Android Studio,依次点击File > Project Structure > SDK Location,在「JDK Location」栏就能看到完整路径(新版AS一般是C:\Program Files\Android\Android Studio\jbr,旧版可能是jre或jdk开头),直接复制这个路径就好,百分百准确。方法2:通过系统环境变量查找
右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量里找JAVA_HOME,它的取值就是Java的根目录,keytool.exe就藏在这个路径下的bin文件夹里。如果没找到这个变量,直接用方法1就行。
第二步:用keytool命令生成并验证SHA值
找到Java的bin目录后,按下面的步骤操作:
打开命令提示符(CMD)或PowerShell,先切换到Java的bin路径:
cd 你复制的JDK路径\bin举个例子:
cd C:\Program Files\Android\Android Studio\jbr\bin针对默认debug keystore执行命令(绝大多数场景用这个):
keytool -list -v -keystore "C:\Users\你的用户名\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android记得把「你的用户名」替换成你电脑的实际用户名,执行后就能看到SHA-1、SHA-256等完整签名信息。
如果gradle输出的SHA和这个不一致,那大概率是你项目配置了自定义keystore:
打开项目的build.gradle(Module level)文件,找到signingConfigs代码块,里面会写明自定义keystore的路径、密码等信息,把命令里的debug.keystore替换成这个自定义路径,再执行一遍就能得到对应SHA值。
为啥gradle的SHA不被API接受?
大概率是这两个原因:
- 你gradle里使用的keystore和API页面配置的不是同一个(比如用了release keystore而非debug版本)
- 某些API要求的是SHA-256,但你复制了SHA-1,或者反过来,仔细核对一下API的具体要求。
内容的提问来源于stack exchange,提问作者Androidcoder

