遇到问题
android studio今天编译突然就遇到问题:
A problem occurred configuring root project 'android'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not download MobSDK2022-2023.0713.1137.jar (com.mob.sdk:MobSDK2022:2023.0713.1137)
> Could not get resource 'https://mvn.mob.com/android/com/mob/sdk/MobSDK2022/2023.0713.1137/MobSDK2022-2023.0713.1137.jar'.
> Could not GET 'https://mvn.mob.com/android/com/mob/sdk/MobSDK2022/2023.0713.1137/MobSDK2022-2023.0713.1137.jar'.
> PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
解决方案
下载证书,导入到android studio中即可。
步骤如下,以MAC电脑为例:
- https://mvn.mob.com/android/com/mob/sdk/MobSDK2022/2023.0713.1137/MobSDK2022-2023.0713.1137.jar 先打开看一下能否正常下载,如果能正常下载说明页面是没问题的。
- 再打开https://mvn.mob.com/ 网站,不用管里面显示的内容。
- 点击锁图标→连接是安全的 →证书有效→导出
- 先去到Android studio jdk的证书目录下
cd /Applications/Android Studio.app/Contents/jre/Contents/Home/lib/security
进入security目录后,使用keytool命令导入证书
keytool -import -alias mob -keystore cacerts -file /Downloads/_.mob.com.cer
-alias mob 设置别名,这个是唯一的,不要跟已有的冲突,可以自己随便取,最好有相关意义。
终端库密钥口令输入:changeit(这是默认密码)
再输入:Y
提示证书导入成功,重启android studio再进行编译,即可解决问题。
-keystore 指定存储文件
注意: cacerts 是因为当前目录就是cacerts文件所在的目录,才可指定 -keystore cacerts, 否则应该指定全路径;
-file 指定证书文件全路径(证书文件所在的目录)
注意: 此时命令行会提示你输入cacerts证书库的密码,敲入changeit即可,这是java中cacerts证书库的默认密码,当然也可自行修改。
库密钥口令输入:changeit
是否信任:Y
最好在android studio也配上相关证书。
最后重启android studio。
补充
个人还遇到访问https://developer.huawei.com/repo/ 下载华为推送库没有证书,按照以上方式,再导入一份华为的证书即可。
keytool -import -alias huawei -keystore cacerts -file /Downloads/appgallery.cloud.huawei.com.cer
本地java环境导入证书
在android studio环境中导入证书又出现问题,我就尝试在本地java环境中导入,执行的流程跟上面一样。
查看本地java环境
/usr/libexec/java_home
输出显示:/Library/Java/JavaVirtualMachines/jdk-11.0.17.jdk/Contents/Home
执行命令
keytool -import -alias mob -keystore cacerts -file /Downloads/_.mob.com.cer
keytool -import -alias huawei -keystore cacerts -file/Downloads/appgallery.cloud.huawei.com.cer
如果遇到提示:java.io.FileNotFoundException: cacerts (Permission denied)
解决: cacerts文件没有写权限,再执行导入
sudo chmod 777 cacerts
尝试使用,但没有成功,做个记录
- File -> invalidate caches,清空缓存没有效果
- 考虑可能是代理问题, gradle 的某个全局配置被改变,而 gradle 的全局配置文件路径为
~/.gradle/gradle.properties
如果里面存在以下内容
...
systemProp.http.proxyHost=127.0.0.1
systemProp.https.proxyPort=7890
systemProp.https.proxyHost=127.0.0.1
systemProp.http.proxyPort=7890
...
则把内容注释,重启android studio也无法解决。