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

VS Code中Flutter请求API遇HandshakeException,Android Studio正常

问题分析与解决方案

核心原因

VS Code和Android Studio运行Flutter应用时,使用的运行环境/设备配置存在差异,导致证书验证逻辑触发不同。以下是具体的可能原因和对应解决办法:

1. 运行目标设备不一致

检查两个编辑器中你选择的运行设备是否完全相同:

  • 比如VS Code默认运行在Chrome浏览器,而Android Studio中运行在iOS模拟器/Android真机;
  • Chrome的安全策略对自签名证书限制更严格,而移动端模拟器/真机可能已手动信任过目标API的证书。

解决办法:

  • 在VS Code右下角确认运行目标与Android Studio一致(比如都选iOS模拟器);
  • 如果运行在Chrome,手动给Chrome添加证书信任:
    1. 访问目标API的HTTPS地址,点击地址栏锁图标 → 证书 → 详细信息 → 导出证书为.cer格式;
    2. 打开Chrome设置 → 隐私和安全 → 安全 → 管理证书 → 导入导出的证书并设置为信任。

2. 运行时环境变量/证书存储差异

Android Studio会自动加载系统或SDK相关环境变量,而VS Code可能未正确读取系统证书存储配置:

  • 比如macOS钥匙串已信任目标API证书,但VS Code启动的Flutter进程未读取到该配置;
  • 两个编辑器使用的Java环境不同(你的flutter doctor显示AS用自带JDK,VS Code可能用系统JDK,证书信任库不一致)。

解决办法:

  • 让VS Code使用与Android Studio一致的Java环境:
    1. 在VS Code设置中搜索java.home,设置为AS自带JDK路径(从你的doctor输出看是/Users/dev.meena/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/213.7172.25.2113.9123335/Android Studio.app/Contents/jre/Contents/Home);
    2. 重启VS Code后重新运行应用。
  • 手动将目标API证书导入VS Code使用的Java信任库:
    执行以下命令(替换证书路径和JDK路径):
    keytool -importcert -file /path/to/your/certificate.cer -keystore /path/to/jdk/jre/lib/security/cacerts -alias "api-cert"
    
    默认密钥库密码为changeit。

3. Flutter扩展/调试配置差异

VS Code的Flutter扩展可能存在额外调试配置,比如启用了网络代理或调试模式安全限制:

  • 检查VS Code的.vscode/launch.json文件,是否有影响网络请求的自定义启动参数;
  • 对比Android Studio的Run/Debug配置,看是否存在安全校验开关的差异。

解决办法:

  • 删除.vscode/launch.json中的自定义参数,恢复默认配置;
  • 在VS Code的Flutter扩展设置中,关闭可能影响网络的选项(比如"Flutter: Debug Network Requests"这类开关)。

4. 证书本身兼容性问题

目标API的证书可能存在链不完整或签名算法不兼容的情况:

  • 移动端运行时(Android/iOS)对证书兼容性更好,而桌面端/Chrome的Flutter运行时对证书要求更严格;
  • 比如证书缺少中间CA,桌面端无法验证,但移动端可通过系统信任链自动补充。

解决办法:

  • 联系API服务方获取完整证书链(包含根CA和中间CA);
  • 在macOS钥匙串中导入完整证书链,并设置为始终信任。

生产环境替代方案

不要使用badCertificateCallback = (_,__,___)=>true这种绕过验证的方式,正确做法是:

  • 确保API使用受信任CA颁发的证书(如Let's Encrypt);
  • 内部测试环境下,将证书添加到所有目标设备/平台的信任存储中。

内容的提问来源于stack exchange,提问作者Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:05