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

Unity集成Firebase构建Xcode时遇Undefined Symbols错误求助

Unity Firebase Firestore iOS打包链接错误:Undefined symbols _Firebase_Firestore_CSharp_USE_FIRESTORE_FUTURE_VOID_get

环境版本

  • Firebase 10.20.0
  • Unity 2022.3.20f1
  • Xcode 15.2
  • MacOS 14.3.1
  • iOS设备系统:16.4.1

问题详情

我开发了一个集成Firebase Firestore的简单Unity项目,在Unity编辑器内运行完全正常,也能成功导出Xcode工程,但用Xcode打包到iPhone时直接失败,报链接错误:

ld: Undefined symbols:
_Firebase_Firestore_CSharp_USE_FIRESTORE_FUTURE_VOID_get, referenced from:
_FirestoreCppPINVOKE_USE_FIRESTORE_FUTURE_VOID_get_m7B1C87EAC194B1820A555C55DD80D14E09D43D04 in libGameAssembly.a4
_FirestoreCpp__cctor_m01F392D9C6AE94A071E8F744E8129BB34E246734 in libGameAssembly.a4
clang: error: linker command failed with exit code 1 (use -v to see invocation)

另外还有个疑问:错误摘要里显示使用的是iOS 17.2 SDK,但我的设备系统是16.4.1,这两者不匹配是怎么回事?

已尝试的无效方案

  • 添加/移除Firebase Authentication依赖
  • 在UnityFramework的Build Settings中添加-Id64到Other Linker Flags
  • 降级Firebase到9.6.0版本
  • 执行pod deintegrate && pod cache clean --all后重新pod install
  • 删除/Pods文件夹后重新执行pod install
  • 删除Xcode的DerivedData缓存

这些操作都没解决问题,之前还出现过Arm64相关的错误,但现在无法复现,每次打包都会触发这个链接错误,急需解决办法。


解决建议

1. 修正Unity端的IL2CPP与架构配置

Firebase对IL2CPP后端的支持更稳定,先确认Unity的Player Settings配置:

  • 切换Scripting Backend为IL2CPP(iOS平台默认应该是这个,但检查一下)
  • 在Architecture选项中只勾选ARM64(不要选Universal或x86_64,针对真机打包)
  • 如果开启了Strip Engine Code,在Linker Striping的Additional Linker Flags里添加-u _Firebase_Firestore_CSharp_USE_FIRESTORE_FUTURE_VOID_get,强制链接器保留缺失的符号

2. 统一Xcode的部署目标与SDK版本

错误里显示iOS 17.2是因为Xcode 15.2默认自带的是最新SDK,这是正常的——Xcode用高版本SDK打包低版本系统的APP是允许的,只要把部署目标设对就行:

  • 在Xcode中选中Unity-iPhone主目标,进入General选项卡,把iOS Deployment Target改成16.4
  • 同步修改UnityFramework目标的Deployment Target,确保和主目标一致

3. 重新导入并解析Firebase依赖

可能是Unity导出的绑定文件损坏,重新走一遍依赖流程:

  • 删除Unity项目中Assets/Firebase整个文件夹,重新下载对应版本的Firebase Unity SDK(10.20.0支持Unity 2022.x)并导入
  • 导出Xcode工程前,执行Assets > Firebase > Resolve > Resolve Client Libraries,确保所有iOS依赖都正确解析

4. 修正Xcode的链接器配置

检查UnityFramework的Build Settings:

  • 找到Other Linker Flags,确保里面包含-ObjC(Firebase需要这个标志加载类别)
  • 之前加的-Id64大概率是笔误,改成-arch arm64或者直接移除,让Unity自动配置架构参数

5. 验证Firestore原生库是否正确引入

导出Xcode工程后,检查Pods/FirebaseFirestore目录下是否有libFirebaseFirestore.a等原生库文件,同时确认UnityFramework的Build Phases > Link Binary With Libraries中已经正确引用这些库。如果缺失,重新执行pod install时确保网络稳定,避免依赖下载失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:31:13