React Native Android构建失败 配置RNFirst项目遇依赖问题
错误详情
FAILURE: Build failed with an exception.
问题原因: 配置根项目'RNFirst'时出现错误。
无法确定null的依赖关系。无法解析配置':classpath'的所有任务依赖项。
找不到com.android.tools.build:gradle:。被以下项目依赖:project :
无法解析com.facebook.react:react-native-gradle-plugin。被以下项目依赖:project :
未找到与项目:gradle-plugin匹配的变体。消费者配置为寻找运行时使用的库,兼容Java 8,打包为jar,依赖项外部声明,且属性'org.gradle.plugin.api-version'值为'8.0.1',但:
- 变体'apielements'的能力com.facebook.react:react-native-gradle-plugin:unspecified声明了一个库,打包为jar,依赖项外部声明:
- 不兼容,因为该组件声明为编译时使用,兼容Java 11,而消费者需要运行时使用、兼容Java 8的组件
- 其他兼容属性:未提及org.gradle.plugin.api-version(要求为'8.0.1')
- 变体'mainSourceElements'的能力com.facebook.react:react-native-gradle-plugin:unspecified声明了一个组件,依赖项外部声明:
- 不兼容,因为该组件属于'验证'类别,而消费者需要库
- 其他兼容属性:未提及目标Java版本(要求兼容Java 8)、未提及元素打包方式(要求为jar)、未提及org.gradle.plugin.api-version(要求为'8.0.1')、未提及使用场景(要求运行时)
- 变体'runtimeElements'的能力com.facebook.react:react-native-gradle-plugin:unspecified声明了一个运行时使用的库,打包为jar,依赖项外部声明:
- 不兼容,因为该组件兼容Java 11,而消费者需要兼容Java 8的组件
- 其他兼容属性:未提及org.gradle.plugin.api-version(要求为'8.0.1')
- 变体'testResultsElementsForTest'的能力com.facebook.react:react-native-gradle-plugin:unspecified:
- 不兼容,因为该组件属于'验证'类别,而消费者需要库
- 其他兼容属性:未提及依赖查找方式(要求依赖项外部声明)、未提及目标Java版本(要求兼容Java 8)、未提及元素打包方式(要求为jar)、未提及org.gradle.plugin.api-version(要求为'8.0.1')、未提及使用场景(要求运行时)
官方建议:
使用--stacktrace选项获取堆栈跟踪。使用--info或--debug选项获取更多日志输出。使用--scan选项获取完整分析信息。
修复方案
1. 补全gradle插件版本号
报错中找不到com.android.tools.build:gradle:表明gradle插件版本号未指定,需在项目根目录的build.gradle(或build.gradle.kts)文件中,为com.android.tools.build:gradle添加与React Native版本匹配的版本号:
buildscript { dependencies { // 替换为与你的RN版本兼容的gradle插件版本,如RN 0.71+对应7.4.2 classpath("com.android.tools.build:gradle:7.4.2") // 确保react-native-gradle-plugin版本与RN版本一致 classpath("com.facebook.react:react-native-gradle-plugin:0.71.8") } }
2. 升级Java版本至11
react-native-gradle-plugin要求Java 11环境,而当前项目使用Java 8,需修改配置统一版本:
- 在项目根目录的
gradle.properties中指定JDK 11路径:org.gradle.java.home=/path/to/your/jdk11 - 在
android/build.gradle中设置编译Java版本:android { compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } } - 确保本地已安装JDK 11,并正确配置
JAVA_HOME环境变量。
3. 匹配gradle wrapper版本
gradle插件版本需与gradle wrapper版本兼容,比如gradle插件7.4.2对应gradle wrapper 7.5版本,修改gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
4. 清理缓存并重新构建
执行以下命令清理gradle缓存,解决依赖缓存冲突:
./gradlew clean ./gradlew build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Spyraxz

