M1 Mac构建Flutter iOS项目报错'Flutter/Flutter.h'文件未找到
解决方案
第一步:全量清理项目缓存
- 执行项目清理命令:
flutter clean - 进入iOS目录:
cd ios - 删除旧Pod相关文件:
rm -rf Podfile.lock Pods Runner.xcworkspace - 清除Flutter全局Pub缓存:
flutter pub cache clean - 回到项目根目录重新拉取依赖:
flutter pub get
第二步:修正Podfile配置
打开ios/Podfile文件,做以下修改:
- 取消顶部platform注释,将iOS最低支持版本设置为12.0:
# 取消注释并修改为如下内容 platform :ios, '12.0'
- 替换末尾的
post_install代码块为以下内容,适配M1架构编译规则:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| # 排除模拟器不兼容的arm64、i386架构 config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' # 统一所有依赖的最低iOS版本为12.0 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' end end end
第三步:适配M1架构安装Pod依赖
M1芯片需要通过x86_64架构安装ffi依赖后再执行Pod安装,避免隐藏的架构兼容问题:
- 安装ffi依赖:
sudo arch -x86_64 gem install ffi - 执行Pod安装更新:
arch -x86_64 pod install --repo-update
第四步:修正Xcode构建设置
- 打开iOS项目时必须选择
Runner.xcworkspace文件,禁止打开Runner.xcodeproj - 选中左侧Runner项目,进入Build Settings页:
- 搜索
Excluded Architectures,Debug、Release模式下的模拟器SDK配置项均添加arm64 - 搜索
iOS Deployment Target,设置为12.0,和Podfile配置保持一致
- 搜索
- 清空Xcode构建缓存:按下快捷键
Command + Shift + Option + K确认清空所有缓存
第五步:重新构建项目
回到项目根目录执行flutter run -d ios,或直接在Xcode中点击运行按钮即可。
补充:如果依然报错,可先删除
ios/Runner/GeneratedPluginRegistrant.h和ios/Runner/GeneratedPluginRegistrant.m两个文件,重新执行flutter pub get会自动生成新版本的注册文件,解决旧缓存导致的头文件引用错误。
内容的提问来源于stack exchange,提问作者Bilal Rabbi
相关产品推荐
相关产品推荐

