AppCenter构建React Native 0.73.5项目时无法解析react-native-gradle-plugin
React Native 0.73.5 AppCenter构建失败:无法解析react-native-gradle-plugin及Java版本兼容问题
核心解决方案
1. 明确指定react-native-gradle-plugin版本
RN 0.73.5对应的gradle插件版本与RN版本完全一致,直接在项目级build.gradle的classpath中指定版本,避免环境自动拉取不匹配的版本:
修改项目级build.gradle的dependencies块:
dependencies { classpath("com.android.tools.build:gradle:7.3.1") // 指定与RN版本一致的插件版本 classpath("com.facebook.react:react-native-gradle-plugin:0.73.5") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0") }
2. 强制构建环境使用Java 11
RN 0.73+的gradle插件要求Java 11,需在gradle配置中明确指定版本,同时同步AppCenter构建环境:
项目级build.gradle添加全局配置
在buildscript块外添加:
allprojects { repositories { google() mavenCentral() } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "11" } } }
app级build.gradle添加编译选项
在android块内补充:
compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" }
同时完善react块配置(按需启用Hermes):
react { hermesEnabled = true // 可根据需求设置为false }
3. AppCenter构建环境适配
在AppCenter的Android构建配置中,将Java版本设置为11。如果无可视化配置项,可在项目根目录创建appcenter-post-clone.sh脚本:
#!/usr/bin/env bash export JAVA_HOME=$ANDROID_HOME/openjdk11 export PATH=$JAVA_HOME/bin:$PATH
修改后的完整配置文件
项目级build.gradle
buildscript { ext { buildToolsVersion = "34.0.0" minSdkVersion = 21 compileSdkVersion = 34 targetSdkVersion = 34 ndkVersion = "25.1.8937393" kotlinVersion = "1.8.0" } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:7.3.1") classpath("com.facebook.react:react-native-gradle-plugin:0.73.5") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0") } } allprojects { repositories { google() mavenCentral() } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "11" } } } apply plugin: "com.facebook.react.rootproject"
app级build.gradle
apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" react { hermesEnabled = true // 根据需求调整 } def enableProguardInReleaseBuilds = false def jscFlavor = 'org.webkit:android-jsc:+' android { ndkVersion rootProject.ext.ndkVersion buildToolsVersion rootProject.ext.buildToolsVersion compileSdkVersion rootProject.ext.compileSdkVersion namespace "com.spimarch2024" defaultConfig { applicationId "com.spimarch2024" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" } compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { debug { signingConfig signingConfigs.debug } release { signingConfig signingConfigs.debug minifyEnabled enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" } } } dependencies { implementation("com.facebook.react:react-android") implementation("com.facebook.react:flipper-integration") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
问题原因说明
- 未指定插件版本:RN 0.73+依赖本地插件的同时,classpath需明确对应版本,否则AppCenter环境无法正确解析插件
- Java版本不兼容:RN 0.73+的gradle插件基于Java 11开发,AppCenter默认Java 8环境会导致版本冲突
- 编译选项未同步:未在gradle配置中明确Java版本时,AppCenter会使用默认版本构建,与本地环境不一致
内容的提问来源于stack exchange,提问作者user3431310
相关产品推荐
相关产品推荐

