You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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/.buildandroid/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
            // ...其他配置
        }
    }
    
  • compileSdkVersiontargetSdkVersion都改成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的构建问题~

火山引擎 最新活动