Flutter构建Android App Bundle时出现invalid source release:17错误
问题解决指导
问题分析
构建Flutter项目的Android App Bundle时,第三方依赖package_info_plus编译Release版本报错invalid source release: 17,核心原因是Java版本环境不匹配:
- 项目
app/build.gradle配置了Java 1.8,但package_info_plus可能需要Java 17编译 - 本地JDK环境混乱,
JAVA_HOME指向Java 1.8,但系统默认JDK是20,导致构建工具无法找到合适的JDK版本处理Java 17的编译请求
解决方案
1. 统一项目Java版本配置为17
修改项目根目录下的android/build.gradle,添加全局编译配置,确保所有模块(包括第三方依赖)使用Java 17:
buildscript { ext { agpVersion = "8.1.4" kotlinVersion = "1.9.20" } repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:$agpVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" } } allprojects { repositories { google() mavenCentral() } tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } }
同时修改android/app/build.gradle中的编译配置为17:
android { compileSdkVersion 34 ndkVersion "25.2.9519653" compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } }
2. 修正JAVA_HOME环境变量
在终端执行以下命令,将JAVA_HOME指向本地的OpenJDK 17:
# 临时生效(当前终端会话) export JAVA_HOME=/Users/user/Library/Java/JavaVirtualMachines/openjdk-17.0.2/Contents/Home # 永久生效(zsh环境,bash环境请修改~/.bash_profile) echo 'export JAVA_HOME=/Users/user/Library/Java/JavaVirtualMachines/openjdk-17.0.2/Contents/Home' >> ~/.zshrc source ~/.zshrc
验证配置是否生效:
echo $JAVA_HOME java -version
输出应显示Java 17版本信息。
3. 配置Android Studio的JDK
打开Android Studio,依次进入File > Project Structure > SDK Location,在JDK location选择本地的OpenJDK 17路径:/Users/user/Library/Java/JavaVirtualMachines/openjdk-17.0.2/Contents/Home
4. 清理并重新构建
执行以下命令清理缓存并重新构建:
flutter clean flutter pub get cd android ./gradlew clean bundleRelease
内容的提问来源于stack exchange,提问作者Gladiator
相关产品推荐
相关产品推荐

