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

RN 0.74.5升级0.76.6后iOS仍用Paper而非Fabric的调试求助

iOS端React Native新架构(Fabric)未启用的调试方案与升级经验

问题背景

将App从RN 0.74.5升级至0.76.6后,Android端新架构(Fabric)正常启用,但iOS端执行RCT_NEW_ARCH_ENABLED=1 bundle exec pod install后仍运行在Paper渲染器,大量原生模块加载失败。通过以下代码确认架构状态:

const uiManager = global?.nativeFabricUIManager ? 'Fabric' : 'Paper'
console.log(`Using ${uiManager} on ${isIOS() ? 'ios' : 'android'}`)

iOS日志输出:

LOG Running "MySadApp" with {"rootTag":1,"initialProps":{}}
Using Paper on ios

Android日志输出:

(NOBRIDGE) LOG Running "MySadApp" with {"rootTag":21,"initialProps":{},"fabric":true}
Using Fabric on android

环境信息:

System:
  OS: macOS 14.3
  CPU: (12) arm64 Apple M2 Pro
  Memory: 2.25 GB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.18.0
    path: ~/.asdf/installs/nodejs/18.18.0/bin/node
  Yarn: Not Found
  npm:
    version: 9.8.1
    path: ~/.asdf/plugins/nodejs/shims/npm
  Watchman:
    version: 2024.12.02.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/my_name/.asdf/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK:
    API Levels:
      - "28"
      - "31"
      - "33"
      - "34"
      - "35"
    Build Tools:
      - 30.0.3
      - 31.0.0
      - 33.0.0
      - 33.0.1
      - 33.0.2
      - 34.0.0
      - 34.0.0
      - 34.0.0
      - 34.0.0
      - 35.0.0
      - 35.0.0
    System Images:
      - android-33 | Google APIs ARM 64 v8a
      - android-33 | Google Play ARM 64 v8a
      - android-34 | Google APIs ARM 64 v8a
    Android NDK: Not Found
IDEs:
  Android Studio: 2024.2 AI-242.23726.103.2422.12816248
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.13
    path: /opt/homebrew/opt/openjdk@17/bin/javac
  Ruby:
    version: 2.7.6
    path: /Users/my_name/.asdf/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.1.3
    wanted: ^15.0.0
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.76.6
    wanted: ^0.76.0
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

调试步骤(iOS端)

1. 彻底清理缓存并重新构建

  • 删除iOS目录下的Pods文件夹、Podfile.lock文件
  • 执行rm -rf ~/Library/Caches/CocoaPods清理CocoaPods全局缓存
  • 执行xcodebuild clean -workspace MySadApp.xcworkspace -scheme MySadApp清理Xcode项目缓存
  • 切换到iOS目录,重新执行RCT_NEW_ARCH_ENABLED=1 bundle exec pod install
  • 打开Xcode,执行Product -> Clean Build Folder,再重新编译运行

2. 验证Xcode项目配置

  • 打开Xcode项目,进入Build Settings,搜索ENABLE_FABRIC和ENABLE_NEW_ARCHITECTURE,确认两者值均为YES
  • 检查Other C Flags和Other C++ Flags,确认包含-DFABRIC_ENABLED=1、-DENABLE_NEW_ARCHITECTURE=1编译宏
  • 查看Info.plist,确保没有添加禁用Fabric的配置项

3. 检查Podfile与依赖兼容性

  • 检查Podfile,确认没有手动设置$RCT_NEW_ARCH_ENABLED = false的代码
  • 逐一排查第三方模块:
    • 公开模块查看README或仓库,确认是否支持新架构
    • 私有模块检查是否实现了TurboModule和Fabric Component的适配代码
  • 暂时移除不兼容模块,验证新架构是否能正常启用

4. 分析Xcode编译日志

  • 编译时打开Xcode的Report Navigator,搜索Fabric、TurboModule关键词,定位编译错误或警告
  • 检查是否有模块未生成对应的xxxSpec桥接文件(新架构依赖自动生成的Spec文件)

5. 验证JS端配置

  • 检查metro.config.js,确认没有禁用新架构的配置
  • 执行npx react-native config,查看输出中iOS的newArchEnabled字段是否为true

新架构升级经验

  • 分步验证:先完成RN版本升级,确保Paper架构下iOS/Android都正常运行后,再开启新架构
  • 依赖前置排查:升级前整理所有第三方模块,优先替换或移除不兼容新架构的模块
  • 缓存清理要彻底:新架构切换时,缓存残留是高频问题,必须清理CocoaPods、Xcode、Metro的所有缓存
  • 日志重点关注:Android的NOBRIDGE标记和fabric:true是新架构启用的明确信号;iOS端无类似标记时,优先排查原生侧编译配置
  • 私有模块适配要点:公司私有模块需实现TurboModule的替代导出接口,以及Fabric组件的ComponentDescriptor注册逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:04:51