MacBook端Android Studio报Unknown Kotlin JVM target:21错误求助
问题描述
在MacBook上使用最新版Android Studio(LadyBug)时,出现以下错误:
Could not determine the dependencies of task ':image_gallery_saver:compileDebugKotlin'.
Unknown Kotlin JVM target: 21
之前在Windows端遇到相同错误时,通过下载JDK 17并在android/gradle.properties中配置org.gradle.java.home = D:\jdk-17解决,但在Mac上配置export=JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home后,错误依然存在。
当前Android/app/build.gradle相关配置如下:
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" // I tried to change this } defaultConfig { applicationId ".." minSdkVersion 24 compileSdkVersion 34 targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName ndkVersion >> ndk { debugSymbolLevel 'FULL' } }
解决方法
1. 正确配置Mac上的JAVA_HOME
- 全局持久化配置:打开终端,编辑
~/.zshrc(使用bash则编辑~/.bash_profile),添加:
保存后执行export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATHsource ~/.zshrc使配置生效,输入echo $JAVA_HOME验证路径是否正确。 - 项目级配置:在项目的
android/gradle.properties中添加:
该配置会强制Gradle使用指定JDK,比终端临时配置更可靠。org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
2. 统一项目Kotlin JVM目标版本
错误提示的JVM target:21大概率是依赖(如image_gallery_saver)使用了更高目标版本,需在项目根目录的build.gradle(非app模块)中统一配置:
buildscript { ext.kotlin_version = '1.9.20' // 匹配Android Studio LadyBug兼容的Kotlin版本 repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:8.2.0" // 对应LadyBug的Gradle版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "17" // 改为与JDK17匹配的版本,不要用1.8 } } }
同时将app模块build.gradle中的kotlinOptions.jvmTarget也改为"17",保持全局一致。
3. 清理缓存并重新同步
- 执行
File > Invalidate Caches... > Invalidate and Restart重启Android Studio - 进入项目
android目录,终端执行./gradlew clean清理构建缓存后,重新同步项目
4. 检查依赖版本
尝试升级image_gallery_saver到最新版本,或在pubspec.yaml中指定与当前环境兼容的版本。
内容的提问来源于stack exchange,提问作者gilorip
相关产品推荐
相关产品推荐

