Flutter iOS模拟器编译失败:Xcode模板参数列表解析错误
编译Flutter iOS应用到iPhone 16 Plus模拟器时触发编译失败,具体报错如下:
ERROR:
Failed to build iOS app
Parse Issue (Xcode): A template argument list is expected after a name prefixed by the template keyword
File: /Users/a2251/abc/app2/ios/Pods/gRPC-Core/src/core/lib/promise/detail/basic_seq.h:102:37
Could not build the application for the simulator.
Error launching application on iPhone 16 Plus.
环境信息
- Flutter: 3.29.3 (stable)
- Dart: 3.7.2
- Xcode: 16.3
- macOS: 15.4.1
- DevTools: 2.42.3
- 模拟器: iPhone 16 Plus
- iOS Deployment Target: 13.0
Podfile关键配置
platform :ios, '13.0' use_frameworks! post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'BoringSSL-GRPC' target.source_build_phase.files.each do |file| if file.settings && file.settings['COMPILER_FLAGS'] flags = file.settings['COMPILER_FLAGS'].split flags.reject! { |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' } file.settings['COMPILER_FLAGS'] = flags.join(' ') end end end flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17' config.build_settings['CLANG_CXX_LIBRARY'] = 'libc++' end end end
已尝试操作
flutter cleanflutter pub getpod deintegrate && pod install- 更新Flutter和CocoaPods
- 查阅gRPC官方GitHub仓库相关问题
- 切换至物理设备及其他模拟器尝试构建
解决方法
升级gRPC相关依赖
该错误源于Xcode 16.3的Clang编译器对C++模板语法的严格检查,旧版gRPC-Core存在语法兼容问题。在pubspec.yaml中确保grpc、grpc-web等依赖使用最新稳定版,或在Podfile中指定兼容的gRPC版本:pod 'gRPC-Core', '~> 1.64.0' # 推荐使用1.64.0及以上版本调整C++语言标准
在Podfile的post_install块中,为所有gRPC相关目标强制设置C++20标准(新版本gRPC已适配该标准):post_install do |installer| installer.pods_project.targets.each do |target| # 保留原有配置代码... if target.name.start_with?('gRPC-') target.build_configurations.each do |config| config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++20' end end # 保留原有配置代码... end end临时修改gRPC源码
定位到报错的basic_seq.h文件第102行,修正模板语法:将缺失模板参数的template关键字补充完整上下文参数(例如将template::value_type调整为符合C++标准的写法)。此为临时方案,后续升级依赖后需移除修改。降级Xcode版本
若暂时无法升级依赖,可将Xcode降级至16.2或更早版本,避开编译器的严格语法校验逻辑。
内容的提问来源于stack exchange,提问作者Prasanna Kumaran

