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

升级Flutter 3.13.0后Android报SocketException,求解决方案并留用新版本

解决Flutter 3.13.0 Android调试端SocketException(errno=7)问题

以下是针对该问题的实际排查和解决步骤:

  • 检查Android网络权限配置
    确认android/app/src/main/AndroidManifest.xml中已添加必要的网络权限:

    <uses-permission android:name="android.permission.INTERNET"/>
    

    若目标域名是HTTPS且使用自定义证书,需在network_security_config.xml中配置信任该证书;若为HTTP域名,需开启明文流量允许(仅调试环境使用)。

  • 排查调试环境代理干扰

    • 检查VS Code的launch.json中是否设置了错误的代理配置,可临时添加"args": ["--no-proxy"]禁用代理调试。
    • 若使用Charles、Fiddler等抓包工具,需确保Android模拟器已安装对应的根证书且代理地址配置正确;也可暂时关闭抓包工具,验证异常是否消失。
    • 手动强制HttpClient不使用代理,测试是否解决问题:
      final client = HttpClient();
      client.findProxy = (_) => 'DIRECT'; // 强制直连,跳过代理
      
  • 清理构建缓存并重置环境
    执行以下命令清理Flutter和Android的构建缓存,避免旧配置干扰:

    flutter clean
    cd android && ./gradlew clean
    flutter pub get
    

    同时可尝试新建一个Android模拟器,或重置现有模拟器的网络设置,排除模拟器本身的网络配置问题。

  • 验证intl包兼容性
    虽然更新intl包是为了构建流水线,但需确认新版本intl是否与Flutter 3.13存在冲突:

    • 暂时注释掉intl相关的本地化初始化代码,运行项目看异常是否消失,定位是否为intl包引发的间接网络请求问题。
    • 尝试锁定intl包到兼容Flutter 3.13的稳定版本(比如intl: ^0.18.1),避免使用最新的预发布版本。
  • 排查Flutter 3.13的网络底层变更
    Flutter 3.13升级了Android Gradle插件至8.0+,可能对网络请求的底层实现有调整:

    • 检查android/build.gradle中的AGP版本是否与Flutter 3.13要求匹配(Flutter 3.13要求AGP 8.0.2+)。
    • 确认项目中是否使用了自定义网络框架(如dio),需更新到兼容Flutter 3.13的版本。
  • 定位异常触发的具体代码
    由于应用能正常运行但抛出未捕获异常,大概率是启动阶段的某个预请求(如本地化资源加载、配置拉取)失败:

    • 用try-catch包裹所有初始化阶段的网络请求,打印具体的调用栈,定位抛出异常的代码段。
    • 可在VS Code的调试面板中添加异常断点,捕获SocketException时暂停,查看上下文信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:55:31