You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS模拟器编译失败:Xcode模板参数列表解析错误

Flutter iOS模拟器编译失败:gRPC-Core模板语法解析错误

编译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 clean
  • flutter pub get
  • pod deintegrate && pod install
  • 更新Flutter和CocoaPods
  • 查阅gRPC官方GitHub仓库相关问题
  • 切换至物理设备及其他模拟器尝试构建

解决方法

  1. 升级gRPC相关依赖
    该错误源于Xcode 16.3的Clang编译器对C++模板语法的严格检查,旧版gRPC-Core存在语法兼容问题。在pubspec.yaml中确保grpc、grpc-web等依赖使用最新稳定版,或在Podfile中指定兼容的gRPC版本:

    pod 'gRPC-Core', '~> 1.64.0' # 推荐使用1.64.0及以上版本
    
  2. 调整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
    
  3. 临时修改gRPC源码
    定位到报错的basic_seq.h文件第102行,修正模板语法:将缺失模板参数的template关键字补充完整上下文参数(例如将template::value_type调整为符合C++标准的写法)。此为临时方案,后续升级依赖后需移除修改。

  4. 降级Xcode版本
    若暂时无法升级依赖,可将Xcode降级至16.2或更早版本,避开编译器的严格语法校验逻辑。

内容的提问来源于stack exchange,提问作者Prasanna Kumaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:23:17