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

Flutter iOS模拟器中Firebase Firestore SDK连接本地模拟器超时,但Web/HTTP测试正常的问题求助

Flutter iOS模拟器中Firebase Firestore SDK连接本地模拟器超时,但Web/HTTP测试正常的问题求助

我现在遇到一个非常棘手的问题:Flutter iOS模拟器里用Firebase Firestore SDK连接本地Firestore模拟器时一直报TimeoutException,但其他所有连通性测试都正常,感觉问题非常特定和孤立。

测试结果对比

成功的连通性测试

  • Flutter Web构建(flutter run -d chrome)能完美连接本地Firestore模拟器,操作完全正常
  • macOS终端用curl调用Firestore REST API毫无问题,比如执行:
    curl -X POST "http://localhost:8080/v1/projects/your-project-id/..."
    
  • iOS模拟器内的App用简单的HttpClient发起GET请求到模拟器的host:port,能正常返回200状态码

失败的场景

  • 只有iOS模拟器中通过FirebaseFirestore.instance...调用Firebase SDK进行连接时,会持续抛出TimeoutException

这说明问题不在模拟器本身、网络环境或者基础配置上,而是出在Flutter iOS构建与Firebase SDK的gRPC通信交互环节。

环境信息

  • Flutter版本:Flutter 3.32.1 • stable通道 • 框架修订b25305a883(9天前),引擎修订1425e5e9ec,Dart 3.8.1,DevTools 2.45.1
  • Firebase依赖版本:
    • Firebase Core: ^3.13.1
    • Cloud Firestore: ^5.6.8
    • Firebase Auth: ^5.5.4
  • macOS版本:macOS 15 Beta (Darwin 24.5.0)
  • Xcode版本:16.3 (16E140)

已尝试的解决方法(精简记录)

1. 网络配置调整

  • 在main.dart中试过将模拟器地址设为localhost、127.0.0.1以及本机局域网IP(192.168.0.196)
  • 修改firebase.json将Firestore模拟器绑定到0.0.0.0和特定IP,当前配置为0.0.0.0

2. Firestore连接代码调整

  • 试过两种配置方式:FirebaseFirestore.instance.useFirestoreEmulator(...) 和 显式设置Settings对象,当前使用的代码为:
    // 在main()中Firebase.initializeApp()之后
    FirebaseFirestore.instance.settings = Settings(
      host: '192.168.0.196:8080',
      sslEnabled: false,
      persistenceEnabled: false,
    );
    await FirebaseAuth.instance.useAuthEmulator('192.168.0.196', 9099);
    

3. iOS项目配置

  • 在Info-Debug.plist中添加了NSAppTransportSecurity配置,允许本地网络请求:
    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsLocalNetworking</key>
      <true/>
    </dict>
    

4. 系统与项目清理

  • 确认macOS防火墙已关闭
  • 用lsof -i :8080找到并杀死了占用端口的僵尸模拟器进程,解决后curl和Web构建才能正常连接
  • 执行过flutter clean、rm -rf ios/Pods ios/Podfile.lock和flutter pub get,确保完全干净的构建环境

核心疑问

既然Web构建能正常连接、curl命令可用、iOS App里的基础HttpClient也能通信,为什么只有iOS模拟器中Firebase SDK的gRPC通信会超时?

是不是存在隐藏的iOS构建设置、模拟器上gRPC的特定限制(尤其是在Beta版macOS/Xcode环境下),或者是这些依赖版本组合的已知问题?

任何帮助或者新的调试思路都对我非常重要,感激不尽!


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:09:52