You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

降级Gradle适配Vision Camera后,React Native Android构建报“Plugin not found”错误

降级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.2
    • react-native-worklets-core ~0.4.0
    • react-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.gradlecom.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

火山引擎 最新活动