降级Gradle适配Vision Camera后,React Native Android构建报“Plugin not found”错误
嗨,我最近在给React Native项目加条码扫描功能的时候,简直踩了个遍的坑,好不容易把版本不兼容、新架构、Gradle版本这些问题搞定,结果卡在了最后一个配置错误上——就是这个com.facebook.react.settings插件找不到的问题,折腾了好久终于解决了,下面把我的经历和解决方法分享给大家。
我的踩坑历程(帮你快速定位是否和你情况一致)
先给大家梳理下我是怎么走到这一步的,方便你对照:
- 一开始选了
vision-camera-code-scanner,结果发现仓库归档只读了,直接pass - 换成
vision-camera-v3-barcode-scanner,结果一堆版本不兼容,于是把项目统一调整到这些版本:- React Native 0.73.6
react-native-vision-camera~3.9.2react-native-worklets-core~0.4.0react-native-reanimated~3.6.2- 还在
android/gradle.properties开了VisionCamera_enableCodeScanner=true
- 接着碰到新架构的C++编译错误,把
newArchEnabled=false加上就好了 - 然后又遇到Gradle的
Unresolved reference: serviceOf错误,查了是Gradle版本太高,于是把Gradle从8.14.1降级到8.3,结果就出现了现在的插件找不到的问题
问题本质
这个错误的核心很简单:降级到Gradle 8.3后,Gradle对插件的引用规则更严格了——所有从插件仓库拉取的插件必须明确指定版本号,而原来的settings.gradle里com.facebook.react.settings没有加版本,所以Gradle找不到它。
一步一步解决
针对React Native 0.73.6 + Gradle 8.3的组合,按下面的步骤改就对了:
1. 给settings.gradle里的插件加上版本号
打开android/settings.gradle,找到开头的pluginManagement块,原来的代码大概是这样的:
pluginManagement { plugins { id 'com.facebook.react.settings' id 'com.facebook.react.rootproject' // 其他插件... } }
你需要给这两个React Native的插件加上版本号,版本号必须和你的React Native版本一致(也就是0.73.6),修改后变成:
pluginManagement { plugins { id 'com.facebook.react.settings' version '0.73.6' id 'com.facebook.react.rootproject' version '0.73.6' // 如果这里还有其他插件(比如kotlin的插件)没加版本,也一并补上对应的版本号 } }
2. 检查build.gradle的classpath依赖
打开android/build.gradle,确保dependencies里的react-native-gradle-plugin版本和RN版本一致,同时Gradle插件版本要和你用的Gradle wrapper版本匹配:
buildscript { ext { // 你的其他配置... } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:8.3.0") // 必须和gradle-wrapper里的8.3对应 classpath("com.facebook.react:react-native-gradle-plugin:0.73.6") // 和RN版本一致 classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.20") // 你的kotlin版本,保持原来的就行 } }
3. 清理缓存重新构建
改完之后,先清理下缓存避免旧配置干扰:
cd android ./gradlew clean
然后重新同步Gradle,在Android Studio里点Sync按钮,或者直接运行构建命令:
./gradlew assembleDebug
额外要检查的点
- 确认
android/gradle/wrapper/gradle-wrapper.properties里的distributionUrl确实是Gradle 8.3:distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip - 再核对下
android/gradle.properties里的配置:VisionCamera_enableCodeScanner=true newArchEnabled=false
这样应该就能解决这个插件找不到的错误了,我就是这么搞定的,希望能帮到你!
内容来源于stack exchange




