MacBook Air 2017中Flutter项目构建失败:unable to find valid certification path to requested target
解决Flutter在MacBook Air 2017上构建时的PKIX证书路径问题
从你的错误日志和配置来看,核心问题是JVM无法验证Google Maven仓库的SSL证书,导致Gradle无法下载com.android.tools.build:gradle:4.2.1依赖。下面是针对性的解决方案,你可以按步骤尝试:
步骤1:修正项目级build.gradle的仓库配置
你的buildscript里用了http://maven.google.com,这个地址现在会自动重定向到HTTPS地址,反而容易引发证书验证问题。同时jcenter已经停止维护,建议替换为官方推荐的仓库声明:
修改你的项目级build.gradle中buildscript的repositories部分:
buildscript { ext.kotlin_version = '1.3.50' repositories { google() // 替换原http://maven.google.com mavenCentral() // 替换已停止服务的jcenter } dependencies { classpath 'com.android.tools.build:gradle:4.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
步骤2:确保Gradle使用的JDK正确导入证书
你提到已经把证书添加到Android Studio,但Gradle可能使用的是独立的JDK环境,导致证书未生效。请按以下操作:
- 打开Android Studio,进入
File > Project Structure > SDK Location,复制JDK location的路径(比如你的路径是/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home)。 - 打开终端,执行以下命令导入证书(替换
<JDK_PATH>为复制的路径,<CERT_FILE>为你下载的证书文件路径):
sudo keytool -importcert -file <CERT_FILE> -keystore <JDK_PATH>/lib/security/cacerts -alias "google_maven"
默认的cacerts密码是
changeit,执行时需要输入验证。
步骤3:清理缓存并重新构建
- 执行Flutter清理命令:
flutter clean
- 删除项目根目录下的
.gradle文件夹(如果存在)。 - 重新执行构建:
flutter build apk
额外排查项
- 确认Mac的系统代理、VPN或第三方代理工具(如Charles、Clash)已完全关闭,这类工具可能会拦截SSL连接导致证书验证失败。
- 你的Flutter版本2.2.2是稳定版,但可以尝试升级到较新的稳定版(比如3.x系列),新版本通常会修复一些Gradle相关的兼容性问题。
如果以上步骤无效,可临时在gradle.properties中指定Gradle使用的信任库(仅用于排查,不建议长期使用):
org.gradle.jvmargs=-Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStore=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit
内容的提问来源于stack exchange,提问作者Sonnengott




