You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo 48升级至49后Android编译出现JVM版本兼容错误

问题:Expo 49升级后Android构建出现JVM版本不一致错误

执行./gradlew build时触发如下错误:

Execution failed for task ':expo-modules-core$android-annotation:compileKotlin'.
> Inconsistent JVM-target compatibility detected for tasks 'compileJava' (11) and 'compileKotlin' (17).

当前配置信息

根build.gradle

buildscript {
    ext {
        buildToolsVersion = "33.0.0"
        minSdkVersion = 21
        compileSdkVersion = 33
        targetSdkVersion = 33
        ndkVersion = "23.1.7779620"
        kotlin_version = '1.8.0'
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath("com.facebook.react:react-native-gradle-plugin")
    }
}

app/build.gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip

原因分析

错误核心是Java编译目标版本(11)与Kotlin编译目标版本(17)不匹配。Expo 49依赖的expo-modules-core内部默认使用了更高的Kotlin JVM目标版本,而项目仅配置了Java的编译版本,未同步指定Kotlin的目标版本,导致子模块编译时出现版本冲突。

解决方案

1. 在app/build.gradle中同步Kotlin编译目标

在android块内的compileOptions下方添加kotlinOptions,确保与Java版本一致:

android {
    // ... 其他现有配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_11.toString()
    }
}

2. 全局配置Kotlin编译目标(覆盖所有子模块)

如果单模块配置无效,可在根build.gradle的allprojects块中添加全局配置,强制所有模块(包括expo-modules-core)使用统一的JVM目标版本:

allprojects {
    repositories {
        // ... 现有仓库配置
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = JavaVersion.VERSION_11.toString()
        }
    }
}

3. 明确指定Android Gradle插件版本

根build.gradle中com.android.tools.build:gradle未指定版本,React Native 0.72.x需要搭配Android Gradle Plugin 7.4.2或更高版本,补充版本号:

dependencies {
    classpath 'com.android.tools.build:gradle:7.4.2'
    // ... 其他依赖
}

4. 清理缓存后重新构建

执行以下命令清理Gradle缓存,避免旧配置残留:

./gradlew clean
rm -rf ~/.gradle/caches
./gradlew build

内容的提问来源于stack exchange,提问作者Pavel Glebov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 15:03:16