React Native项目升级API到35时出现expo-modules-core Gradle脚本编译错误(Unresolved reference: extensions)
React Native项目升级API到35时出现expo-modules-core Gradle脚本编译错误(Unresolved reference: extensions)
嘿,我之前在升级RN项目API版本时也踩过类似的兼容性坑,你的问题本质是多套依赖版本不匹配堆出来的连锁问题,咱们一步步拆解解决:
核心问题定位
先扒一扒你配置里的两个致命矛盾点:
- Expo和React Native版本完全不兼容:expo 51.0.0 要求React Native 0.74.0及以上,但你用的是RN 0.72.6,这会直接导致Gradle脚本、原生模块的语法和依赖冲突,也是当前编译错误的主要根源。
- 重复依赖相机库:你同时装了
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版本的场景:
降级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回退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") }
- 修改
添加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' } } }清理缓存重新构建
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的场景:
升级React Native到0.74.0
用官方升级工具自动同步配置:npx react-native upgrade 0.74.0按照工具提示手动解决文件冲突,同步
android/build.gradle和android/app/build.gradle的配置。清理冲突依赖
卸载重复的相机库:npm uninstall react-native-camera同步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") }
- 修改
修复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
相关产品推荐
相关产品推荐

