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

React Native iOS应用在Azure Pipelines构建失败:char_traits弃用警告

解决React Native iOS Azure Pipelines构建因RCT-Folly char_traits弃用警告失败的问题

问题场景

使用Azure Pipelines构建React Native iOS应用时,构建流程因RCT-Folly库中char_traits相关的弃用警告触发失败。

错误日志

⚠️ /Users/runner/work/1/s/ios/Pods/Headers/Private/RCT-Folly/folly/Range.h:176:16: 'char_traits' is deprecated: char_traits for T not equal to char, wchar_t, char8_t, char16_t, or char32_t is non-standard and is provided for a temporary period. It will be removed in LLVM 18, so please migrate off of it. [-Wdeprecated-declarations] typedef std::char_traits<typename std::remove_const<value_type>::type>

BUILD FAILED

失败的构建命令:

CompileC /Users/runner/Library/Developer/Xcode/DerivedData/raurauAdmin-gztdyzcynucaikdocaqdcfvsvqqd/Build/Intermediates.noindex/Pods.build/Release-iphoneos/RCT-Folly.build/Objects-normal/arm64/json.o /Users/runner/work/1/s/ios/Pods/RCT-Folly/folly/json.cpp normal arm64 c++ com.apple.compilers.llvm.clang.1_0.compiler (in target 'RCT-Folly' from project 'Pods')

现有配置

Podfile 配置

platform :ios, '12.0'
pod 'Firebase', :modular_headers => true
# other pods...

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS'] = 'NO'
      end
    end
  end
end

Azure Pipelines CI 配置

trigger:
- main  # 主分支变更时触发流水线

variables:
  - group: 'New variable group 12-Sep'  # 关联共享变量组
  - name: System.Debug
    value: true  # 启用调试日志输出

jobs:
- job: Build_iOS
  displayName: 构建iOS应用
  pool:
    vmImage: macos-latest  # 使用最新macOS镜像

  steps:
  - checkout: self
    fetchDepth: 1  # 仅拉取最新提交以加速检出

  # 配置Node.js版本
  - task: NodeTool@0
    displayName: '设置Node.js环境'
    inputs:
      versionSpec: '18.x'  # 使用Node.js 18.x版本

  # Yarn安装依赖
  - task: Yarn@3
    displayName: '安装项目依赖'
    inputs:
      verbose: false

  # 清理Xcode衍生数据
  - task: Bash@3
    displayName: '清理Derived Data'
    inputs:
      targetType: 'inline'
      script: rm -rf ~/Library/Developer/Xcode/DerivedData/*

  # 安装CocoaPods依赖
  - task: CocoaPods@0
    displayName: '安装CocoaPods依赖'
    inputs:
      forceRepoUpdate: true
      cwd: ios  # 在ios目录执行

  # Xcode清理构建
  - script: |
      xcodebuild clean -workspace ios/raurauAdmin.xcworkspace -scheme raurauAdmin -configuration Release
    displayName: 'Xcode清理构建'

  # 构建iOS IPA包
  - task: Xcode@5
    displayName: '构建iOS IPA'
    inputs:
      configuration: Release
      sdk: iphoneos
      xcWorkspacePath: 'ios/raurauAdmin.xcworkspace'
      scheme: 'raurauAdmin'
      useXcpretty: true
      packageApp: true

# 备注:可添加归档、导出IPA或部署到TestFlight/App Store的额外步骤

解决方案

方案1:修改Podfile的post_install脚本,针对性忽略警告

原配置仅关闭了GCC的弃用函数警告,但当前使用的是Clang编译器,需补充Clang相关的警告关闭逻辑,或直接忽略特定的-Wdeprecated-declarations警告:

platform :ios, '12.0'
pod 'Firebase', :modular_headers => true
# other pods...

post_install do |installer|
  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS'] = 'NO'
        # 关闭Clang的弃用声明警告
        config.build_settings['CLANG_WARN_DEPRECATED_DECLARATIONS'] = 'NO'
        # 或精准忽略该特定警告
        config.build_settings['OTHER_CFLAGS'] ||= []
        config.build_settings['OTHER_CFLAGS'] << '-Wno-deprecated-declarations'
      end
    end
  end

  # 可选:仅针对RCT-Folly目标单独配置(如果全局配置无效)
  installer.pods_project.targets.each do |target|
    if target.name == 'RCT-Folly'
      target.build_configurations.each do |config|
        config.build_settings['CLANG_WARN_DEPRECATED_DECLARATIONS'] = 'NO'
      end
    end
  end
end

方案2:升级React Native版本

该问题源于RCT-Folly库未适配LLVM 18的新规则,React Native 0.72及以上版本已更新RCT-Folly至兼容版本,升级RN版本可从根源解决问题。

方案3:在Azure Pipelines的Xcode构建任务中添加编译参数

直接在Xcode构建任务中传递忽略警告的参数,修改CI配置中的Xcode@5任务:

- task: Xcode@5
  displayName: '构建iOS IPA'
  inputs:
    configuration: Release
    sdk: iphoneos
    xcWorkspacePath: 'ios/raurauAdmin.xcworkspace'
    scheme: 'raurauAdmin'
    useXcpretty: true
    packageApp: true
    arguments: 'OTHER_CFLAGS="-Wno-deprecated-declarations"'

内容的提问来源于stack exchange,提问作者Nauman Kyani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:35:07