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

React Native 0.69升级(Expo裸工程)CMake报错求助

React Native 0.69.7升级CMake构建问题解决方案(Expo裸工作流)

针对你在Expo裸工作流下从RN 0.68.5升级到0.69.7遇到的CMake构建错误、依赖变量缺失、prefab版本不匹配问题,结合你的特殊目录结构与M1环境,给出以下解决方案:

1. 修复CMakeLists.txt缺少project()命令问题

RN 0.69对第三方模块的CMake配置要求更严格,需确保所有涉及的CMakeLists.txt开头存在项目声明:

  • 遍历node_modules下所有带CMake配置的依赖模块,在其CMakeLists.txt最顶部添加:
    project(模块名称) # 替换为实际模块名,如project(RNReanimated)
    cmake_minimum_required(VERSION 3.13)
    
  • 重新安装并锁定expo-modules-core版本:
    yarn add expo-modules-core@0.11.10 --force
    

2. 解决FBJNI_LIB、FOLLY_LIB等变量未找到问题

该问题源于RN的CMake路径识别错误,结合你的特殊目录结构,手动指定依赖路径:

  • 打开UnnecessaryFolder/android/app/build.gradle,在externalNativeBuild的cmake配置中添加路径参数:
    externalNativeBuild {
        cmake {
            path "src/main/jni/CMakeLists.txt"
            arguments "-DFBJNI_LIB=${rootProject.projectDir}/../node_modules/react-native/ReactAndroid/build/fbjni/lib/${ANDROID_ABI}/libfbjni.so",
                      "-DFOLLY_LIB=${rootProject.projectDir}/../node_modules/react-native/ReactAndroid/build/folly/lib/${ANDROID_ABI}/libfolly_runtime.so",
                      "-DREACT_NATIVE_DIR=${rootProject.projectDir}/../node_modules/react-native"
        }
    }
    
  • 在app的CMakeLists.txt中引入RN的通用CMake配置:
    set(REACT_NATIVE_DIR ${CMAKE_SOURCE_DIR}/../../../node_modules/react-native)
    include(${REACT_NATIVE_DIR}/ReactAndroid/cmake-utils/ReactNative-common.cmake)
    
  • 清理构建缓存后重启构建:
    cd UnnecessaryFolder/android && ./gradlew clean
    

3. 解决prefab库无匹配版本问题

RN 0.69开始使用prefab管理原生依赖,需手动指定兼容版本:

  • 打开UnnecessaryFolder/android/build.gradle,在android块中添加prefab配置:
    android {
        ...
        buildFeatures {
            prefab true
        }
        prefab {
            fbjni {
                version "0.2.2"
                headers "${rootProject.projectDir}/../node_modules/react-native/ReactAndroid/src/main/jni/first-party/fbjni/include"
            }
            folly {
                version "2021.07.22.00"
                headers "${rootProject.projectDir}/../node_modules/react-native/ReactAndroid/src/main/jni/first-party/folly"
            }
        }
    }
    
  • 若仍有问题,删除依赖缓存后重新安装:
    rm -rf node_modules yarn.lock
    yarn install
    

4. 适配特殊目录结构的额外配置

由于android目录不在package.json同级,需手动指定RN根路径:

  • 编辑UnnecessaryFolder/android/settings.gradle:
    rootProject.name = '你的应用名称'
    include ':app'
    includeBuild('../node_modules/react-native/packages/react-native-gradle-plugin')
    apply from: "../node_modules/react-native/react.gradle"
    
  • 在UnnecessaryFolder/android/gradle.properties中添加:
    react.native.dir=../node_modules/react-native
    

5. M1 Mac Rosetta模式下的注意事项

  • 确保所有终端命令在Rosetta模式下运行(右键终端-显示简介-勾选「使用Rosetta打开」)
  • 清理Xcode派生数据:打开Xcode-偏好设置-位置-派生数据,删除当前项目的缓存目录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:07:04