Flutter iOS应用Xcode编译报错:Undefined symbol: _OBJC_CLASS_$_FIRHeartbeatInfo
解决Xcode编译Flutter iOS应用时的Undefined symbol: OBJC_CLASS$_FIRHeartbeatInfo错误
问题原因
你手动指定了FirebaseFirestore的8.15.0版本,但项目依赖的firebase_core: ^2.8.0对应更高版本的iOS Firebase SDK,两者依赖的Firebase Core版本不兼容,导致编译链接时找不到FIRHeartbeatInfo类(该类属于较新版本的Firebase Core)。
解决步骤
1. 修正Podfile配置
删除Podfile中手动添加的FirebaseFirestore指定行,让Flutter的Firebase插件自动管理依赖版本,避免版本冲突。修改后的Podfile如下:
target 'Runner' do use_frameworks! use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) end end
2. 清理并重新安装依赖
在项目根目录依次执行以下命令:
# 清理Flutter缓存 flutter clean # 进入iOS目录 cd ios # 删除旧的pod依赖文件 rm -rf Podfile.lock Pods # 更新pod仓库(可选,确保获取最新版本) pod repo update # 重新安装pod依赖 pod install
3. 验证Xcode项目设置
打开iOS目录下的Runner.xcworkspace,检查两项设置:
- 确认
Build Phases > Link Binary With Libraries中包含FirebaseCore.framework(正常情况下pod install会自动添加,若缺失可手动添加) - 检查
Build Settings > Other Linker Flags是否包含-ObjC(Flutter项目默认配置,若缺失需手动添加)
4. (可选)更新Firebase依赖到兼容版本
如果上述步骤无效,可尝试将所有Firebase插件更新到最新兼容版本,修改pubspec.yaml:
firebase_messaging: ^14.6.7 # 或最新兼容版本 firebase_core: ^2.15.0 # 或最新兼容版本 firebase_core_web: ^2.8.1 # 或最新兼容版本
执行flutter pub get后,重复步骤2的pod安装操作。
内容的提问来源于stack exchange,提问作者Anandh Krishnan
相关产品推荐
相关产品推荐

