Flutter iOS调试构建报错:框架模块引入非模块化头文件
解决Flutter iOS调试时Firebase Storage的非模块化头文件错误
错误信息
词法或预处理问题(Xcode):框架模块'firebase_storage.FLTTaskStateChannelStreamHandler'中引入非模块化头文件
'/Users/User1/FlutterProjects/flutter_project/ios/Pods/Headers/Public/Firebase/Firebase.h'
/Users/User1/.pub-cache/hosted/pub.dev/firebase_storage-11.7.7/ios/Classes/FLTTaskStateChannelStreamHandler.h:12:8
环境信息
- Xcode 16
- iOS模拟器:17.5、18.0
Flutter 3.24.2 • channel stable • https://github.com/flutter/flutter.git Framework • revision 4cf269e36d(2周前)• 2024-09-03 14:30:00 -0700 Engine • revision a6bd3f1de1 Tools • Dart 3.5.2 • DevTools 2.37.2
解决步骤
1. 升级Firebase Storage依赖
firebase_storage 11.7.7版本与Xcode 16存在兼容性问题,升级到最新稳定版:
- 修改项目根目录的
pubspec.yaml,将firebase_storage版本更新为pub.dev上的最新稳定版(如^12.0.0) - 执行命令:
flutter pub get cd ios pod update firebase_storage
2. 允许非模块化头文件引入
在Xcode中调整firebase_storage target的构建设置:
- 打开ios目录下的
Runner.xcworkspace - 左侧导航栏找到
Pods项目,展开后选择firebase_storagetarget - 切换到
Build Settings标签,搜索Allow Non-modular Includes in Framework Modules - 将该选项的值设置为
YES
3. 清理项目缓存
彻底清理缓存后重新构建:
flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios pod install
4. 检查Podfile配置
确保ios/Podfile中使用静态链接框架,添加或确认以下配置:
use_frameworks! :linkage => :static
同时保证所有Firebase相关依赖版本统一,避免版本冲突。
内容的提问来源于stack exchange,提问作者yolo
相关产品推荐
相关产品推荐

