电脑安装FortiClient是否导致Android项目依赖下载失败?
没错,Fortinet这类企业级VPN/安全客户端大概率就是你遇到这个问题的根源!它会在后台拦截所有HTTPS网络请求,替换成自己的证书,而Android Studio依赖的JVM(Java虚拟机)并不认可这个证书,所以才会出现你看到的PKIX路径构建失败的错误,没法从Google Maven仓库下载com.android.support.test:runner:1.0.1这类依赖。
先给你拆解下错误里的核心信息:
ERROR: Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve com.android.support.test:runner:1.0.1.
...
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这段错误的本质就是JVM找不到能验证Google仓库证书的有效信任链,问题出在Fortinet的证书没被JVM纳入信任列表。
下面是亲测有效的解决步骤:
导出Fortinet的根证书
打开Chrome浏览器,访问https://dl.google.com(任何被Fortinet拦截的HTTPS网站都行),点击地址栏的锁图标 → 「证书」→ 「详细信息」标签页 → 「复制到文件」,选择「Base64编码的X.509(.CER)」格式,把证书保存到本地(比如命名为fortinet.cer)。将证书导入Android Studio的JVM证书库
先找到Android Studio自带的JDK路径:- Windows:一般是
C:\Program Files\Android\Android Studio\jre\jre\lib\security - Mac:
/Applications/Android Studio.app/Contents/jre/jre/lib/security - Linux:根据安装路径调整,比如
/opt/android-studio/jre/jre/lib/security
打开终端/命令提示符(Windows要右键以管理员身份运行),执行导入命令:
# Windows示例 keytool -import -alias fortinet -keystore "C:\Program Files\Android\Android Studio\jre\jre\lib\security\cacerts" -file C:\你的证书保存路径\fortinet.cer # Mac/Linux示例 sudo keytool -import -alias fortinet -keystore /Applications/Android\ Studio.app/Contents/jre/jre/lib/security/cacerts -file ~/Downloads/fortinet.cer证书库的默认密码是
changeit,输入后按提示确认导入即可。- Windows:一般是
重启Android Studio并同步项目
完全关闭Android Studio(包括后台进程),重新打开后点击工具栏的「Sync Project with Gradle Files」按钮,等待同步完成,依赖应该就能正常下载了。
额外提醒:如果你的项目用的是系统自带的JDK而非Android Studio内置的JDK,需要把证书导入系统JDK的cacerts文件里,路径一般是JAVA_HOME/jre/lib/security/cacerts,操作步骤和上面一致。
内容的提问来源于stack exchange,提问作者Artalantu




