Xcode 16更新后编译失败求助:firebase_messaging模块头文件报错
解决Xcode 16 + firebase_messaging 15.1.2 非模块化头文件报错问题
报错详情
Lexical or Preprocessor Issue (Xcode): Include of non-modular header inside framework module 'firebase_messaging.FLTFirebaseMessagingPlugin':
'/Users/mashaelsaud/Documents/mobile-app/ios/Pods/Headers/Public/Firebase/Firebase.h'
报错位置:/Users/mashaelsaud/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.2/ios/Classes/FLTFirebaseMessagingPlugin.h:11:8
这个问题是Xcode 16对模块化头文件的检查标准更严格,而旧版本firebase_messaging插件的写法不符合新规范导致的,直接影响模拟器和真机的构建。
可行解决方法
方法1:升级firebase_messaging到兼容版本(优先推荐)
- 打开项目根目录的
pubspec.yaml,找到firebase_messaging依赖项,将版本号更新为15.1.3及以上(官方后续版本已修复该兼容性问题) - 执行命令:
flutter pub get - 进入iOS目录,执行
pod install --repo-update,完成后重新构建项目
方法2:临时修改插件头文件(应急方案,升级版本更稳妥)
- 找到报错文件路径:
/Users/mashaelsaud/.pub-cache/hosted/pub.dev/firebase_messaging-15.1.2/ios/Classes/FLTFirebaseMessagingPlugin.h - 打开文件,将第11行的
#import <Firebase/Firebase.h>替换为具体的模块化头文件:#import <FirebaseMessaging/FirebaseMessaging.h> - 重新构建项目,注意后续执行
flutter pub get可能会覆盖该修改,建议尽早升级插件版本
方法3:调整Xcode项目设置
- 打开iOS项目的
.xcworkspace文件 - 在左侧项目导航栏找到
Pods->firebase_messaging->FLTFirebaseMessagingPlugin目标 - 进入
Build Settings页面,搜索Allow Non-modular Includes in Framework Modules,将其值改为YES - 清理项目(快捷键Cmd+Shift+K)后重新构建
内容的提问来源于stack exchange,提问作者Mashael Saud
相关产品推荐
相关产品推荐

