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

Expo应用真机崩溃但模拟器正常运行问题求助

可能的原因及排查方向
  • Firebase配置与权限不匹配
    内部分发的包可能没配置好生产环境的Firebase参数:检查GoogleService-Info.plist是否绑定了正确的真机Bundle ID;确认Firestore安全规则是否限制了真机请求——比如模拟器用调试权限放行,真机触发了严格的规则拦截。同时核对Firebase控制台的项目配置,确保Bundle ID完全匹配。

  • Expo内部分发的原生依赖未正确打包
    react-native-firebase的Firestore模块在EAS构建过程中可能缺失原生代码。尝试重新执行eas build,确保构建日志中没有跳过Firebase相关依赖的安装;另外检查app.json的plugins节点是否正确引入Firestore插件:

    {
      "plugins": [
        "@react-native-firebase/firestore"
      ]
    }
    
  • iOS 17+隐私权限缺失
    iPhone 15 Pro搭载的iOS 17及以上系统对权限要求更严格。在app.json的ios.infoPlist中添加必要的权限声明,比如网络访问描述:

    "ios": {
      "infoPlist": {
        "NSNetworkUsageDescription": "应用需要访问网络获取数据"
      }
    }
    

    若使用了非HTTPS调试地址,还需配置NSAppTransportSecurity例外。

  • Firestore数据解析未处理异常
    真机环境下返回的数据可能存在字段类型不匹配、null值未处理等情况,导致解析崩溃。在Firestore请求代码中添加try-catch捕获错误并打印日志:

    try {
      const snapshot = await firestore().collection('target-collection').get();
      // 数据处理逻辑
    } catch (error) {
      console.error('Firestore数据获取失败:', error);
    }
    

    用Expo日志工具或iOS原生日志查看真机的具体崩溃栈信息。

  • 大数据量导致内存溢出
    若一次性从Firestore获取大量数据,真机的内存限制可能触发崩溃。尝试添加分页逻辑(比如limit(20))或按需加载,避免一次性拉取全量文档。

  • 版本兼容性问题
    检查react-native-firebase版本与当前Expo SDK版本是否兼容。部分旧版本的react-native-firebase可能和适配iOS 17的Expo SDK存在冲突,尝试升级到对应Expo版本的稳定版react-native-firebase。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 09:32:38