You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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里看不到证书可以用命令行工具抓取:

  1. 用OpenSSL获取证书:
    openssl s_client -connect services.gradle.org:443 < /dev/null | openssl x509 -outform PEM > gradle-cert.pem
    
  2. 找到你的JDK安装目录,进入jre/lib/security/路径,执行以下命令导入证书(默认密码是changeit):
    keytool -importcert -file gradle-cert.pem -keystore cacerts -alias gradle-services
    
  3. 按提示输入密码并确认导入,之后重新运行构建命令

方法三:临时忽略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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:40:38