Flutter项目在Android Studio运行正常,VS Code执行flutter run时出现assembleDebug配置错误
Flutter项目在Android Studio运行正常,VS Code执行flutter run时出现assembleDebug配置错误
问题现象
我把Flutter项目从Android Studio迁移到VS Code后,执行flutter run时触发assembleDebug构建错误,核心报错是Gradle执行JdkImageTransform时调用jlink.exe失败,具体日志片段如下:
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':app:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: C:\Users\asus\AppData\Local\Android\sdk\platforms\android-34\core-for-system-modules.jar. > Error while executing process D:\PkgsAll\Android Studio3\jbr\bin\jlink.exe with arguments {--module-path C:\Users\asus\.gradle\caches\transforms-3\00bbcb0a8e5e7db2e6b01a54c9879d3e\transformed\output\temp\jmod --add-modules java.base --output C:\Users\asus\.gradle\caches\transforms-3\00bbcb0a8e5e7db2e6b01a54c9879d3e\transformed\output\jdkImage --disable-plugin system-modules}
而相同项目在Android Studio中能正常构建运行,期望的成功输出类似:
Running Gradle task 'assembleDebug'... 77.6s √ Built build\app\outputs\flutter-apk\app-debug.apk Installing build\app\outputs\flutter-apk\app-debug.apk... 11.3s Syncing files to device sdk gphone64 x86 64... 379ms
问题根源
这个错误本质是VS Code与Android Studio使用了不一致的Java运行环境:Android Studio默认用自带的JetBrains Runtime(JBR),而VS Code可能自动关联了系统安装的JDK或其他版本的Java,导致Gradle在构建Android 34目标版本时,jlink工具执行生成JDK镜像的逻辑出现兼容问题。
亲测有效的解决办法
按优先级从高到低尝试:
1. 强制Gradle使用Android Studio的JBR
直接在项目指定Gradle使用的Java Home,确保和Android Studio一致:
- 打开项目根目录下的
android/gradle.properties文件 - 添加以下配置(注意Windows路径用双反斜杠转义):
org.gradle.java.home=D:\\PkgsAll\\Android Studio3\\jbr - 保存后执行
flutter clean清理旧构建缓存,再重新运行flutter run
2. 彻底清理Gradle缓存与构建文件
缓存损坏也是这类构建错误的常见原因:
- 在项目根目录执行命令清理Flutter构建文件:
flutter clean - 手动删除Android模块的缓存文件夹:
android/.build、android/app/.build - 再删除用户目录下的全局Gradle缓存:
C:\Users\asus\.gradle\caches(删除后后续构建会自动重新生成,无需担心) - 最后重新执行
flutter run
3. 临时降级Android SDK编译版本(应急方案)
如果上面的方法都没效果,可以先绕开Android 34的兼容问题:
- 打开
android/app/build.gradle文件,找到编译版本配置:android { compileSdkVersion 34 defaultConfig { targetSdkVersion 34 // ...其他配置 } } - 把
compileSdkVersion和targetSdkVersion都改成33 - 等待VS Code同步Gradle配置(右下角会有提示),再执行
flutter run
4. 验证Android SDK Platform 34的完整性
有可能是Android 34的SDK文件损坏导致的:
- 打开VS Code的Android SDK Manager(点击左侧活动栏的Android图标进入)
- 找到
Android 34对应的SDK Platform,先点击卸载,再重新安装 - 安装完成后再尝试构建项目
总结
我当时是用第一种方法解决的,因为VS Code默认用了系统JDK,和AS的JBR版本不兼容。如果你按步骤试下来,应该能解决这个跨IDE的构建问题~




