Java17+新版Flutter环境下Ladybug中Gradle构建AGP兼容性错误
错误信息
执行任务':shared_preferences_android:compileDebugJavaWithJavac'失败。
无法解析配置':shared_preferences_android:androidJdkImage'的所有文件。
无法转换core-for-system-modules.jar以匹配属性{artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}。执行JdkImageTransform时失败:C:\Users\scs\AppData\Local\Android\sdk\platforms\android-34\core-for-system-modules.jar。
执行进程C:\Program Files\Android\Android Studio\jbr\bin\jlink.exe时出错,参数为{--module-path C:\Users\scs.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\temp\jmod --add-modules java.base --output C:\Users\scs.gradle\caches\transforms-3\4a46fc89ed5f9adfe3afebf74eb8bfeb\transformed\output\jdkImage --disable-plugin system-modules}
解决方案
1. 匹配AGP与Gradle版本
Java 17要求Android Gradle插件(AGP)版本至少为7.4.0,需同步对应Gradle版本:
- 打开项目根目录下的
android/build.gradle,修改AGP版本:
buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 或更高兼容版本 } }
- 修改
android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip // AGP7.4对应Gradle7.5+
2. 明确指定Java编译版本
在android/app/build.gradle的android代码块中添加配置,强制使用Java 17编译:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } // 项目使用Kotlin时添加以下配置 kotlinOptions { jvmTarget = '17' } }
3. 清理Gradle缓存并重建
- 执行Flutter清理命令:
flutter clean
- 删除本地Gradle缓存目录(如
C:\Users\scs\.gradle\caches) - 重新获取依赖并构建:
flutter pub get flutter run
4. 检查SDK与JDK完整性
- 确认Android SDK的
android-34平台包完整:打开Android Studio的SDK Manager,检查Android 13 (Tiramisu)下的SDK Platform是否安装完好,必要时重新下载。 - 指定兼容JDK路径:推荐使用Android Studio自带的JBR,在项目
local.properties中明确配置:
jdk.dir=C:\\Program Files\\Android\\Android Studio\\jbr sdk.dir=C:\\Users\\scs\\AppData\\Local\\Android\\sdk
5. 升级Flutter插件版本
旧版本shared_preferences_android可能不兼容新AGP与Java 17,执行升级命令:
flutter pub upgrade shared_preferences
内容的提问来源于stack exchange,提问作者Taimoor Shah

