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

React Native项目升级API到35时出现expo-modules-core Gradle脚本编译错误(Unresolved reference: extensions)

React Native项目升级API到35时出现expo-modules-core Gradle脚本编译错误(Unresolved reference: extensions)

嘿,我之前在升级RN项目API版本时也踩过类似的兼容性坑,你的问题本质是多套依赖版本不匹配堆出来的连锁问题,咱们一步步拆解解决:

核心问题定位

先扒一扒你配置里的两个致命矛盾点:

  1. Expo和React Native版本完全不兼容:expo 51.0.0 要求React Native 0.74.0及以上,但你用的是RN 0.72.6,这会直接导致Gradle脚本、原生模块的语法和依赖冲突,也是当前编译错误的主要根源。
  2. 重复依赖相机库:你同时装了react-native-camera和expo-camera,这俩功能重叠且会触发依赖冲突,必须二选一。

另外补充个知识点:RN 0.72.x原生只支持最高compileSdkVersion 33,要升级到API 35,要么通过兼容配置适配现有RN版本,要么升级RN到0.74+(原生支持API 35)。


方案一:保留现有RN 0.72.6,适配API 35并修复错误

适合不想大动RN版本的场景:

  1. 降级Expo依赖到兼容版本
    编辑package.json,把所有Expo相关依赖替换为和RN 0.72.x匹配的expo 49版本:

    "dependencies": {
      // 其他非Expo依赖保持不变,只替换以下内容
      "expo": "^49.0.0",
      "expo-barcode-scanner": "^12.5.0",
      "expo-camera": "^13.4.0",
      "expo-crypto": "^12.4.1",
      "expo-device": "^5.4.0",
      "expo-modules-core": "^1.5.12",
      "expo-secure-store": "^12.3.1"
    }
    

    然后卸载冲突的相机库:

    npm uninstall react-native-camera
    
  2. 回退Gradle到RN 0.72.x兼容版本

    • 修改gradle/wrapper/gradle-wrapper.properties:
      distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
      
    • 修改android/build.gradle的Android Gradle Plugin版本:
      dependencies {
        classpath("com.android.tools.build:gradle:7.4.2") // 和gradle 7.5匹配
        classpath("com.facebook.react:react-native-gradle-plugin")
      }
      
  3. 添加API 35兼容配置
    在android/app/build.gradle里新增强制依赖兼容的配置:

    android {
      compileSdkVersion 35
      targetSdkVersion 35
      // 新增以下内容解决API 35的依赖冲突
      configurations.all {
        resolutionStrategy {
          force 'com.android.support:support-v4:28.0.0'
          force 'com.android.support:appcompat-v7:28.0.0'
        }
      }
    }
    
  4. 清理缓存重新构建

    rm -rf node_modules && rm package-lock.json
    npm install
    cd android && ./gradlew clean
    cd .. && npx react-native run-android
    

方案二:升级RN到0.74.x,原生支持API 35(推荐长期方案)

彻底解决版本兼容问题,适合愿意升级RN的场景:

  1. 升级React Native到0.74.0
    用官方升级工具自动同步配置:

    npx react-native upgrade 0.74.0
    

    按照工具提示手动解决文件冲突,同步android/build.gradle和android/app/build.gradle的配置。

  2. 清理冲突依赖
    卸载重复的相机库:

    npm uninstall react-native-camera
    
  3. 同步Gradle配置到RN 0.74.x要求

    • 修改gradle/wrapper/gradle-wrapper.properties:
      distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
      
    • 修改android/build.gradle的AGP版本:
      dependencies {
        classpath("com.android.tools.build:gradle:8.2.0")
        classpath("com.facebook.react:react-native-gradle-plugin")
      }
      
  4. 修复expo-modules-core的Gradle脚本错误(如果仍出现)
    用patch-package给库打补丁(避免直接修改node_modules):

    • 编辑node_modules/expo-modules-core/expo-module-gradle-plugin/build.gradle.kts第18行:
      把?.extensions改成?.extensions as? org.gradle.api.plugins.ExtraPropertiesExtension
    • 生成补丁文件:
      npx patch-package expo-modules-core
      

    之后每次安装依赖,补丁会自动应用。


最后必做检查

  • 调整Kotlin版本:RN 0.74.x推荐用Kotlin 1.9.20(不要用2.0.0,太新导致插件不兼容),在android/build.gradle里添加:
    buildscript {
      ext {
        kotlinVersion = "1.9.20"
      }
      dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        // 其他依赖保持不变
      }
    }
    
  • 升级第三方依赖:比如react-native-geolocation-service、react-native-permissions等,要确保版本支持RN 0.74.x和API 35。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:03:03