Flutter构建APK遇SSL握手异常:无法获取有效证书路径
解决Flutter构建APK时的SSLHandshakeException证书问题
以下是几种可行的解决方法,按优先级推荐:
方法一:手动下载Gradle包(最稳妥)
- 直接下载
gradle-7.4-all.zip到你的Flutter项目的gradle/wrapper/目录下 - 打开项目根目录的
gradle/wrapper/gradle-wrapper.properties文件,将distributionUrl的值修改为本地包路径,比如:
(如果包放在其他路径,写对应的相对或绝对路径即可)distributionUrl=gradle-7.4-all.zip - 重新执行
flutter build apk --split-per-abi,此时Gradle会直接使用本地包,跳过网络下载环节
方法二:导入Gradle网站证书到JDK信任库
Chrome里看不到证书可以用命令行工具抓取:
- 用OpenSSL获取证书:
openssl s_client -connect services.gradle.org:443 < /dev/null | openssl x509 -outform PEM > gradle-cert.pem - 找到你的JDK安装目录,进入
jre/lib/security/路径,执行以下命令导入证书(默认密码是changeit):keytool -importcert -file gradle-cert.pem -keystore cacerts -alias gradle-services - 按提示输入密码并确认导入,之后重新运行构建命令
方法三:临时忽略SSL证书验证(不建议长期使用)
在项目根目录的gradle.properties文件中添加以下配置:
systemProp.javax.net.ssl.trustStore=/path/to/your/jdk/jre/lib/security/cacerts systemProp.javax.net.ssl.trustStorePassword=changeit systemProp.org.gradle.jvmargs=-Djavax.net.ssl.trustStore=/path/to/your/jdk/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit
注意替换/path/to/your/jdk为你的实际JDK安装路径
方法四:检查并配置代理
如果是公司内网环境,大概率是代理拦截了SSL请求:
- 在
gradle.properties中添加代理配置:systemProp.http.proxyHost=你的代理地址 systemProp.http.proxyPort=代理端口 systemProp.https.proxyHost=你的代理地址 systemProp.https.proxyPort=代理端口 - 也可以通过Flutter命令配置全局代理:
flutter config --enable-web-proxy flutter config --web-proxy-host=你的代理地址 --web-proxy-port=代理端口
内容的提问来源于stack exchange,提问作者Emmanuel Njorodongo
相关产品推荐
相关产品推荐

