Unity集成Firebase后Xcode归档出现arm64符号未定义错误求助
Unity Firebase iOS归档链接错误问题
环境信息
- Unity版本:2020.3.36f1
- 集成Firebase模块:认证(Auth)、分析(Analytics)、数据库(Realtime Database)
- Xcode版本:13.4.1
问题现象
Unity端构建完全正常,无任何报错,但将Xcode项目归档时出现链接错误,具体日志如下:
ld: warning: arm64 function not 4-byte aligned: _unwind_tester from /Users/michael/Desktop/Reserve1/Libraries/libiPhone-lib.a(unwind_test_arm64.o) Undefined symbols for architecture arm64: "_OBJC_CLASS_$_FIRApp", referenced from: objc-class-ref in libFirebaseCppApp.a(app_ios.mm.o) "_OBJC_CLASS_$_FIRTransactionResult", referenced from: objc-class-ref in libFirebaseCppDatabase.a(database_reference_ios.mm.o) "_OBJC_CLASS_$_FIRTransactionResult", referenced from: objc-class-ref in libFirebaseCppDatabase.a(database_reference_ios.mm.o) "_OBJC_CLASS_$_FIRDatabase", referenced from: objc-class-ref in libFirebaseCppDatabase.a(database_ios.mm.o) "_OBJC_CLASS_$_FIRGameCenterAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRGoogleAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRPhoneAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRPhoneAuthCredential", referenced from: objc-class-ref in libFirebaseCppAuth.a(user_ios.mm.o) "_OBJC_CLASS_$_FIROptions", referenced from: objc-class-ref in libFirebaseCppApp.a(app_ios.mm.o) "_OBJC_CLASS_$_FIROAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRConfiguration", referenced from: objc-class-ref in libFirebaseCppApp.a(app_ios.mm.o) "_OBJC_CLASS_$_FIRFacebookAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRDatabaseReference", referenced from: objc-class-ref in libFirebaseCppDatabase.a(database_reference_ios.mm.o) "_OBJC_CLASS_$_FIREmailAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRGitHubAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRTwitterAuthProvider", referenced from: objc-class-ref in libFirebaseCppAuth.a(credential_ios.mm.o) "_OBJC_CLASS_$_FIRAuth", referenced from: objc-class-ref in libFirebaseCppAuth.a(auth_ios.mm.o) "_FIRAuthErrorUserInfoUpdatedCredentialKey", referenced from: firebase::auth::SignInResultCallback(FIRAuthDataResult*, NSError*, firebase::SafeFutureHandle<firebase::auth::SignInResult>, firebase::auth::AuthData*) in libFirebaseCppAuth.a(auth_ios.mm.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
已尝试的解决方案
- 卸载并重新安装CocoaPods
- 修改iOS Resolver的各项设置
- 在Unity和Xcode中重新安装Firebase SDK
- 多次编辑Podfile尝试不同配置
- 遵循网络上相关教程的操作步骤
解决方案建议
1. 重新安装CocoaPods依赖
打开Xcode项目所在目录,执行以下命令彻底重置依赖:
pod deintegrate pod clean pod install --repo-update
完成后务必打开项目对应的.xcworkspace文件(注意不是.xcodeproj)进行归档操作。
2. 验证Firebase SDK版本兼容性
确保使用的Firebase SDK版本与Unity 2020.3.36f1完全匹配。Unity 2020.x版本建议搭配Firebase SDK 9.x或10.x系列,避免使用过高版本导致底层链接不兼容。
3. 调整Xcode架构与链接设置
- 进入Xcode项目的Build Settings
- 将Architectures设置为
Standard Architectures (arm64) - 确保Release模式下Build Active Architecture Only设置为
NO - 检查Other Linker Flags是否包含
-ObjC(Firebase依赖该标志加载Objective-C类)
4. 修正Unity的iOS Resolver配置
- 在Unity中打开
Assets > External Dependency Manager > iOS Resolver > Settings - 勾选
Auto-Update Pods和Use CocoaPods选项 - 取消勾选
Disable Pods Deployment Target,保证Pod部署目标与项目一致 - 重新构建Xcode项目,让Resolver自动处理依赖关联
5. 手动引入Firebase iOS框架
如果CocoaPods仍未正确引入框架,可手动下载对应版本的Firebase iOS SDK,将以下框架拖入Xcode项目的Frameworks, Libraries, and Embedded Content中,并设置为Embed & Sign:
- FirebaseCore.framework
- FirebaseAuth.framework
- FirebaseDatabase.framework
- FirebaseAnalytics.framework
6. 清理缓存后重新构建
- 在Unity中执行
Assets > Clear Cache - 删除Xcode的
DerivedData目录(路径可通过Xcode > Preferences > Locations查看) - 重新构建Unity项目并归档Xcode工程
内容的提问来源于stack exchange,提问作者Michael Bailey
相关产品推荐
相关产品推荐

