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

Unity集成Firebase SDK8.8.0运行Firestore代码触发崩溃卡死问题

问题现象
  • Unity编辑器运行Firestore写入代码时直接崩溃
  • 部署到iPhone设备运行时,应用触发该段代码后冻结无响应
  • 出现问题时使用的Firebase SDK版本为8.8.0
运行报错信息

ERROR: FIRESTORE INTERNAL ASSERTION FAILED: z:\build\work\006fabbe3c788f8159e582ced9f367dd4f3a\google3\third_party\firebase\ios\Releases\FirebaseFirestore\core\src\local\leveldb_transaction.cc(76) void _cdecl firebase::firestore::local::LevelDbTransaction::Iterator::Seek(const class std::basic_string<char,struct std::char_traits,class std::allocator > &): leveldb iterator reported an error: Corruption: corrupted compressed block contents (expected db_iter->status().ok())

触发问题的代码
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
DocumentReference docRef = db.Collection("posts").Document("656");
Dictionary<string, object> uuu = new Dictionary<string, object>
{
    { "text", "hello" }
};
docRef.SetAsync(uuu);
问题原因

报错核心是Firestore本地持久化依赖的LevelDB缓存文件损坏。8.8.0版本的Firebase SDK未对缓存损坏场景做容错处理,读取到损坏的压缩块时会直接触发内部断言失败:

  • 编辑器端崩溃是因为编辑器环境下留存的本地Firestore缓存文件损坏
  • iOS端应用冻结是因为应用沙盒内持久化存储的Firestore缓存损坏,SDK读取损坏缓存时触发断言,直接阻塞主线程
    上述触发问题的写入代码本身不存在逻辑错误。
解决方案
  • 临时修复(立刻恢复运行):清除本地损坏的Firestore缓存
    • Unity编辑器端:关闭Unity编辑器,删除项目目录下Library/PersistentDefault/firestore文件夹后重启编辑器即可
    • iPhone设备端:卸载应用后重新安装,即可清空沙盒内损坏的缓存文件
  • 永久修复:将Firebase Unity SDK升级到8.10.0及以上版本,官方在后续版本中修复了该问题,新增了缓存损坏自动重建逻辑,遇到同类缓存损坏场景不会再触发崩溃或冻结。
  • 编码优化:调用SetAsync这类异步Firestore接口时建议增加异常捕获逻辑,避免异步任务报错未处理引发额外问题,参考写法:
_ = docRef.SetAsync(uuu).ContinueWith(task =>
{
    if (task.IsFaulted)
    {
        UnityEngine.Debug.LogError($"Firestore写入失败: {task.Exception}");
    }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:39:49