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

Android 15 Flutter图片上传偶现SocketException连接超时求助

针对Android 15上Flutter上传图片偶现Connection Timed Out的解决方案

可能的原因与排查方向

1. Android 15后台网络限制

Android 15新增了更严格的后台网络访问管控,若上传操作在App退到后台后执行,系统可能主动切断网络连接。可尝试:

  • 若需后台上传,申请POST_NOTIFICATIONS权限并启动前台服务,将上传任务绑定到前台服务中,规避系统限制。
  • 在AndroidManifest.xml中添加网络状态权限,辅助判断网络可用性:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. 调整Http包超时配置

http:v1.2.2默认连接超时较短,在Android 15环境下易触发超时。手动延长超时时间:

final client = HttpClient()
  ..connectionTimeout = const Duration(seconds: 30);
final httpClient = IOClient(client);

try {
  final response = await httpClient.post(
    Uri.parse('https://xxx/v1/enrollment/upload-img'),
    body: // 图片数据
  );
} finally {
  httpClient.close();
}

3. 排查IPv6兼容性问题

部分网络环境下,Android 15会优先使用IPv6,若服务器对IPv6支持不足会导致超时。可强制使用IPv4测试:

final client = HttpClient()
  ..connectionTimeout = const Duration(seconds: 30);

// 直接指定服务器IPv4地址发起请求
final response = await client.postUrl(Uri.parse('http://[服务器IPv4]/v1/enrollment/upload-img'));
// 后续写入图片数据、发送请求逻辑

4. 图片分块上传优化

若图片体积过大,单次上传易超时,尝试分块上传:

  • 将图片分割为多个小文件块,分批发送到服务器
  • 确认服务器支持分块上传的接口逻辑

5. 升级依赖版本

Flutter 3.19.5版本较早,可能存在Android 15适配漏洞。尝试升级Flutter到最新稳定版(如3.24.x)或http包到最新版(如1.2.3+),验证是否修复相关兼容性问题。

6. 系统层面网络调试

  • 用Android Studio的Network Profiler捕获上传请求,查看连接建立过程是否有异常
  • 开启开发者选项中的“不保留活动”,测试是否与Activity生命周期导致的网络断开有关
  • 切换网络环境(WiFi/移动数据),确认是否为特定网络下的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:22:40