M1芯片Mac迁移Flutter项目后GoogleMapsBase、Flutter.h缺失报错
M1芯片Mac运行Flutter iOS项目
Flutter/Flutter.h缺失问题解决方案 - 第一步:清理全链路缓存
先完全退出Xcode,依次执行以下命令清理缓存和旧构建产物:
回到项目根目录执行:rm -rf ~/Library/Developer/Xcode/DerivedDataflutter clean rm -rf ios/Pods ios/Podfile.lock - 第二步:修正Podfile架构配置
绝大多数该报错都是之前为了兼容谷歌地图,错误配置了全局排除arm64架构的规则,导致Flutter.framework的arm64版本被拦截。打开ios/Podfile,在末尾的post_install块补充以下逻辑,仅给谷歌地图相关依赖单独配置排除规则:post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
# 仅对谷歌地图相关依赖排除模拟器arm64架构,不要全局配置
if target.name == 'google_maps_flutter' || target.name.include?('GoogleMaps')
target.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
end
end
end
end
注意:不要在Xcode的Runner全局Build Settings里手动添加EXCLUDED_ARCHS=arm64的规则,也不要在Podfile最上层加全局架构排除配置 - 第三步:重新安装依赖
用开启了Rosetta转译的终端进入项目ios目录,执行:pod install --repo-update - 第四步:重新生成Flutter iOS构建产物
回到项目根目录执行:
完成后打开Xcode执行一次构建,确认没有报错后再用VSCode启动调试即可。flutter build ios --debug --no-codesign
内容的提问来源于stack exchange,提问作者Stelios Papamichail
相关产品推荐
相关产品推荐

