升级macOS Sequoia15与Xcode16后Flutter iOS编译报错:unsupported option -G
解决Flutter在Xcode 16 + macOS Sequoia下iOS模拟器编译报错clang: error: unsupported option '-G'
问题根源
-G是旧版clang用于指定调试信息格式的编译参数,Xcode 16升级clang后,这个参数在x86_64架构的iOS模拟器目标下已被废弃。你的项目里肯定是某个第三方Pod或者Flutter插件的build配置硬编码了这个参数,导致编译失败。
解决方法
1. 通过Podfile移除无效参数
打开iOS目录下的Podfile,在末尾添加这段post_install钩子,遍历所有依赖的build配置,删除-G参数:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 清理OTHER_CFLAGS中的-G参数 if config.build_settings['OTHER_CFLAGS'] config.build_settings['OTHER_CFLAGS'] = config.build_settings['OTHER_CFLAGS'].reject { |flag| flag == '-G' } end # 清理OTHER_LDFLAGS中的-G参数 if config.build_settings['OTHER_LDFLAGS'] config.build_settings['OTHER_LDFLAGS'] = config.build_settings['OTHER_LDFLAGS'].reject { |flag| flag == '-G' } end end end end
保存后在iOS目录下执行pod install,重新生成依赖配置。
2. 升级Flutter到适配版本
Xcode 16和macOS Sequoia对Flutter版本有适配要求,确保使用最新稳定版:
flutter channel stable flutter upgrade flutter clean flutter pub get
3. 定位特定问题依赖
如果上述方法无效,直接搜索哪个Pod引入了-G参数:
grep -r "-G" ios/Pods/
找到对应Pod后,优先升级到修复该问题的新版本;若没有新版本,可在post_install钩子中单独针对该Pod处理参数。
额外提醒
- 之前设置的
IPHONEOS_DEPLOYMENT_TARGET要和Podfile开头的platform :ios, '15.0'保持一致,避免版本冲突。 - 操作完成后,清理Xcode缓存(按下
Cmd+Shift+K)再重新编译项目。
内容的提问来源于stack exchange,提问作者Spencer
相关产品推荐
相关产品推荐

