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

React Native 0.71自定义iOS构建配置编译失败求助

问题:React Native自定义Xcode构建配置编译失败(cp目标目录不存在)

环境信息

  • React Native 0.71.3
  • Intel芯片Mac(macOS 13.2.1)
  • 启用新架构(通过RCT_NEW_ARCH_ENABLED=1 pod install安装Pods)
  • 自定义Xcode构建配置:Debug Altitude、Debug Staging、Debug Prod等

问题描述

默认Debug配置可正常编译,但通过Xcode复制Debug创建的自定义配置(如Debug Altitude)编译失败,报错cp命令目标目录不存在。重命名默认Debug配置也会触发相同错误。已尝试清理DerivedData、删除构建目录、重装node_modules和Pods等操作,均无效。

解决方案

步骤1:修改Podfile的post_install钩子,修复硬编码路径

在Podfile的post_install块中添加补丁代码,替换FBReactNativeSpec构建脚本里的硬编码配置名称:

post_install do |installer|
  react_native_post_install(
    installer,
    :mac_catalyst_enabled => false
  )
  __apply_Xcode_12_5_M1_post_install_workaround(installer)

  # 新增:修复自定义配置的codegen路径问题
  installer.pods_project.targets.each do |target|
    if target.name == 'FBReactNativeSpec'
      target.build_phases.each do |phase|
        if phase.is_a?(Xcodeproj::Project::Object::PBXShellScriptBuildPhase) && phase.name.include?('Generate Specs')
          # 将硬编码的Debug/Release替换为Xcode内置的CONFIGURATION变量
          phase.shell_script = phase.shell_script.gsub(/build\/(Debug|Release)/, "build/${CONFIGURATION}")
          phase.shell_script = phase.shell_script.gsub(/(Debug|Release)-iphoneos/, "${CONFIGURATION}-iphoneos")
        end
      end
    end
  end
end

步骤2:确认Podfile的配置映射正确

确保Podfile中已正确将自定义配置关联到debug/release类型(你的现有配置已正确,无需修改):

project 'FormulaireQPZ', {
  'Debug Altitude' => :debug,
  'Debug Staging' => :debug,
  'Debug Prod' => :debug,
  'Release Altitude' => :release,
  'Release Staging' => :release,
  'Release Prod' => :release
}

步骤3:彻底清理并重新构建

执行以下命令完成清理和重建:

# 清理Xcode DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData

# 删除iOS构建目录和Pods相关文件
rm -rf ios/build ios/Pods ios/Podfile.lock

# 重装node依赖
yarn install

# 重新安装Pods(启用新架构)
RCT_NEW_ARCH_ENABLED=1 pod install

打开Xcode后,先执行Clean Build Folder(Cmd+Shift+K),再选择自定义配置重新编译。

问题根源

React Native 0.71.x版本的FBReactNativeSpec构建脚本中,硬编码了Debug和Release作为构建产物目录的一部分,未使用Xcode的${CONFIGURATION}环境变量适配自定义配置名称。当使用自定义Debug类配置时,脚本会尝试拷贝到不存在的build/Debug目录,导致cp命令报错。

内容的提问来源于stack exchange,提问作者La Gregance

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:25:30