Flutter iOS应用在Xcode 16.3上编译Firebase gRPC-Core时出错
Flutter iOS应用在Xcode 16.3上编译Firebase gRPC-Core时出错
最近我在开发一个基于Firebase的Flutter iOS项目,碰到了编译失败的问题,先跟大家说说我的环境配置:
- macOS版本:macOS Sequoia (15.x)
- Xcode版本:Xcode 16.3
- Flutter版本:3.x
- Firebase SDK版本:10.25.0(由firebase_core自动解析)
- gRPC-Core版本:1.62.5(由CocoaPods解析)
当我尝试为iOS模拟器构建应用时,编译直接失败,报错信息如下:
Parse Issue (Xcode): A template argument list is expected after a name prefixed by t
我整理的几个可行解决方法
这个错误大概率是因为Xcode 16.3对C++模板语法的检查更严格了,而旧版的gRPC-Core代码里有不符合新规则的地方,试试下面这些步骤:
升级gRPC-Core到兼容版本
在项目的ios/Podfile里手动指定更高版本的gRPC-Core(比如1.64.0及以上,这些版本修复了和Xcode 16.x的兼容问题):pod 'gRPC-Core', '>= 1.64.0'然后进入iOS目录执行
pod update gRPC-Core,之后再重新构建项目。彻底清理构建缓存
缓存有时候会搞出各种奇怪的问题,先清干净试试:- 在Xcode里按
Cmd+Shift+K清理构建文件夹,或者通过菜单Product > Clean Build Folder操作 - 回到项目根目录执行
flutter clean,接着flutter pub get - 再进入iOS目录执行
pod deintegrate,之后重新pod install
- 在Xcode里按
更新Firebase相关依赖
当前用的Firebase SDK 10.25.0可能和Xcode 16.3兼容性不够,试试升级到最新稳定版:flutter pub upgrade firebase_core # 这里替换成你项目里用到的所有Firebase库,比如firebase_auth、firebase_firestore等升级完成后重新执行
pod install。调整Xcode的C++编译设置
如果上面的方法都没效果,可以尝试放宽Xcode的语法检查规则:- 打开Xcode项目,选中你的应用target
- 进入
Build Settings,搜索C++ Language Dialect,修改为GNU++17或者GNU++14 - 再搜索
C++ Standard Library,改成libstdc++(注意这个可能会带来其他兼容性问题,建议优先尝试前面的方法)
备注:内容来源于stack exchange,提问作者Nolane
相关产品推荐
相关产品推荐

