新Mac上Flutter项目Gradle构建失败:JdkImageTransform报错及SDK XML问题
Flutter新Mac环境下Gradle构建失败解决方案
问题场景
在新Mac(ARM64架构)上运行Flutter应用时遭遇Gradle构建失败,同一项目在旧电脑可正常运行。已尝试更换Java版本、验证Gradle兼容性等操作,问题仍未解决。
完整错误信息
Running Gradle task 'assembleDebug'... Warning: This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':device_info_plus:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':device_info_plus: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: /Users/novostack/Library/Android/sdk/platforms/android-34/core-for-system-modules.jar. > Error while executing process /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/jlink with arguments {--module-path /Users/novostack/.gradle/caches/transforms-3/3be12b51fb10ef20077e84b3313a7db4/transformed/output/temp/jmod --add-modules java.base --output /Users/novostack/.gradle/caches/transforms-3/3be12b51fb10ef20077e84b3313a7db4/transformed/output/jdkImage --disable-plugin system-modules} * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 28s Error: Gradle task assembleDebug failed with exit code 1
环境配置
- 设备:MacBook (macOS 15.0 24A335, ARM64)
- Flutter:3.24.5
- Dart:2.19.1
- Android Studio:2024.2.1 Patch 1
- Java:21.0.5 LTS(Oracle HotSpot)
- Gradle:8.4
已尝试的解决步骤
- 执行
flutter clean - 重新安装Android SDK工具
- 切换Java 17/21版本
- 验证Gradle与Java兼容性
- 接受Android SDK必要许可证
- 移除
device_info_plus依赖后,其他包仍报错
问题分析与解决方案
问题根源
该问题与SDK XML版本不匹配及组件版本兼容性均有关:
- SDK XML版本警告:Android Studio与命令行SDK工具版本不一致,导致旧工具无法识别新版本(v4)的SDK XML配置文件。
jdkImageTransform错误:系统安装的Java与Android Studio内置JBR(JetBrains Runtime)存在差异,或Android Gradle Plugin(AGP)版本与Flutter、Gradle版本不匹配,导致Jlink工具处理系统模块时失败。
解决步骤
强制Gradle使用Android Studio内置JDK
在项目的android/gradle.properties文件中添加以下配置,避免系统JDK与内置JBR的兼容性问题:org.gradle.java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home统一Android Gradle Plugin(AGP)版本
打开项目的android/build.gradle文件,将AGP版本更新为与Android Studio 2024.2.1匹配的稳定版:buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.3.2' // 其他依赖... } }确保
gradle/wrapper/gradle-wrapper.properties中的Gradle版本为8.4(与AGP 8.3.x兼容):distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip修复SDK XML版本不匹配问题
打开Android Studio的「SDK Manager」:- 切换到「SDK Tools」标签,勾选「Show Package Details」
- 卸载所有旧版本的「Android SDK Command-line Tools」,仅保留最新版本(与Android Studio 2024.2.1适配)
- 检查「SDK Platforms」中Android 34的安装完整性,若有损坏则重新安装
清理缓存并重建项目
执行以下命令彻底清理缓存并重新构建:flutter clean rm -rf ~/.gradle/caches cd android && ./gradlew clean build --refresh-dependencies cd .. && flutter run
兼容性验证
Flutter 3.24.5支持的组件版本范围:
- AGP:7.4 ~ 8.3
- Gradle:7.5 ~ 8.4
- Java:17 / 21
当前环境版本均在兼容范围内,只需确保AGP与Gradle版本匹配即可。
内容的提问来源于stack exchange,提问作者Shadab Saif
相关产品推荐
相关产品推荐

