Flutter构建iOS/IPA失败:arm64架构不支持'-G'选项求助
Flutter构建iOS/IPA时BoringSSL-GRPC的'-G'标志错误解决方案
问题描述
执行flutter build ios或flutter build ipa部署至App Store时,触发以下错误:
Error (Xcode): unsupported option '-G' for target 'arm64-apple-ios16.0'
Encountered error while building for device.
经排查问题根源为BoringSSL-GRPC依赖的'-G'编译标志导致ARM64架构构建异常,已尝试修改Podfile过滤标志、校验Firebase/Xcode/Apple ID兼容性等操作,均未解决问题。
可行解决方案
1. 修正Podfile的post_install脚本
之前的脚本可能未精准作用于BoringSSL-GRPC目标,替换为以下写法:
post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'BoringSSL-GRPC' target.build_configurations.each do |config| # 移除所有以'-G'开头的编译标志 config.build_settings['OTHER_CFLAGS'] = Array(config.build_settings['OTHER_CFLAGS']).reject { |flag| flag.start_with?('-G') } config.build_settings['OTHER_CXXFLAGS'] = Array(config.build_settings['OTHER_CXXFLAGS']).reject { |flag| flag.start_with?('-G') } # 禁用索引存储避免额外编译冲突 config.build_settings['COMPILER_INDEX_STORE_ENABLE'] = 'NO' end end # 通用构建配置 flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0' config.build_settings['ENABLE_BITCODE'] = 'NO' end end end
执行以下命令清理并重建依赖:
pod deintegrate && pod install
之后再尝试构建。
2. 锁定GRPC依赖版本
BoringSSL-GRPC是GRPC的子依赖,新版本可能引入了该问题,在pubspec.yaml中锁定稳定版本:
dependencies: grpc: ^3.2.4 # 选用已知无此问题的版本
执行flutter pub get更新依赖后,重新执行Pod安装和构建。
3. 清理全链路缓存
- Flutter缓存:
flutter clean && flutter pub get - Xcode缓存:打开Xcode,点击
Product > Clean Build Folder,再删除~/Library/Developer/Xcode/DerivedData目录下所有内容 - Pods缓存:
pod cache clean --all
4. 切换Xcode默认编译器
若以上方法无效,尝试切换为系统默认clang编译器:
- 打开Xcode,进入项目Build Settings
- 搜索
CC和CXX,分别设置为/usr/bin/clang和/usr/bin/clang++
内容的提问来源于stack exchange,提问作者Stuka Labs
相关产品推荐
相关产品推荐

