升级Android Studio到Meerkat 2024.3.1后Flutter Android构建失败:无法解析:device_info_plus:androidJdkImage配置
升级Android Studio到Meerkat 2024.3.1后Flutter Android构建失败:无法解析:device_info_plus:androidJdkImage配置
问题描述
我在Mac M1设备上将Android Studio升级到Meerkat | 2024.3.1后,Flutter的Android构建一直失败,尝试了一些类似问题的解决方案但都没效果,希望能得到帮助。
构建错误日志
* 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/Anathakrishnan/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/Anathakrishnan/.gradle/caches/transforms-3/6f0bd095c761fdd5884ad99e9bd1f2e7/transformed/output/temp/jmod --add-modules java.base --output /Users/Anathakrishnan/.gradle/caches/transforms-3/6f0bd095c761fdd5884ad99e9bd1f2e7/transformed/output/jdkImage --disable-plugin system-modules}
环境信息
- 当前使用JDK 17
- Flutter Doctor输出:
• Flutter version 3.27.0 on channel stable at /Users/Anathakrishnan/flutter • Upstream repository https://github.com/flutter/flutter.git • Framework revision 8495dee1fd (3 months ago), 2024-12-10 14:23:39 -0800 • Engine revision 83bacfc525 • Dart version 3.6.0 • DevTools version 2.40.2 [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1) • Android SDK at /Users/Anathakrishnan/Library/Android/sdk • Platform android-35, build-tools 33.0.1 • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29) • All Android licenses accepted. [✓] Xcode - develop for iOS and macOS (Xcode 16.1) • Xcode at /Applications/Xcode.app/Contents/Developer • Build 16B40 • CocoaPods version 1.16.2 [✓] Chrome - develop for the web • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome [✓] Android Studio (version 2024.3) • Android Studio at /Applications/Android Studio.app/Contents • Flutter plugin can be installed from: https://plugins.jetbrains.com/plugin/9212-flutter • Dart plugin can be installed from: https://plugins.jetbrains.com/plugin/6351-dart • Java version OpenJDK Runtime Environment (build 21.0.5+-12932927-b750.29) [✓] VS Code (version 1.67.2) • VS Code at /Users/Anathakrishnan/Downloads/Visual Studio Code.app/Contents • Flutter extension version 3.60.0 [✓] Connected device (5 available) • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64 • Android 13 (API 33) (emulator) • iPhone 16 Pro (mobile) • 44D2DB7A-DBA0-4039-A2BB-12AAC41C8A66 • ios • com.apple.CoreSimulator.SimRuntime.iOS-18-1 (simulator) • macOS (desktop) • macos • darwin-arm64 • macOS 15.1 24B83 darwin-arm64 • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin • macOS 15.1 24B83 darwin-arm64 • Chrome (web) • chrome • web-javascript • Google Chrome 134.0.6998.89 [✓] Network resources • All expected network resources are available. • No issues found!
已尝试的操作
我已经执行了dart fix命令,但问题依然存在,dart fix的提示如下:
┌─ Flutter Fix ────────────────────────────────────────────────────────────────────────────────────┐ │ [!] This is likely due to a known bug in Android Gradle Plugin (AGP) versions less than 8.2.1, │ │ when │ │ 1. setting a value for SourceCompatibility and │ │ 2. using Java 21 or above. │ │ To fix this error, please upgrade your AGP version to at least 8.2.1. The version of AGP that │ │ your project uses is likely defined in: │ │ /Users/Anathakrishnan/StudioProjects/G6/g6-mobile/android/settings.gradle, │ │ in the 'plugins' closure (by the number following "com.android.application"). │ │ Alternatively, if your project was created with an older version of the templates, it is likely │ │ in the buildscript.dependencies closure of the top-level build.gradle: │ │ /Users/Anathakrishnan/StudioProjects/G6/g6-mobile/android/build.gradle, │ │ as the number following "com.android.tools.build:gradle:". │ │ │ │ For more information, see: │ │ https://issuetracker.google.com/issues/294137077 │ │ https://github.com/flutter/flutter/issues/156304 │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘ Error: Gradle task assembleDebug failed with exit code 1
针对性解决方案
根据错误日志和dart fix的提示,核心问题确实是Android Gradle Plugin(AGP)版本过低,与新的Android Studio、JDK版本不兼容,下面是一步步的解决步骤:
1. 升级AGP到8.2.1及以上
这是最关键的一步,AGP 8.2.1修复了Java 21/JDK 17环境下的jdkImage转换bug,具体操作:
- 打开项目中
android/settings.gradle文件,找到plugins闭包中的com.android.application,将版本号修改为8.2.1或更高(比如当前稳定版8.3.0):plugins { id "com.android.application" version "8.2.1" apply false id "org.jetbrains.kotlin.android" version "1.9.20" apply false id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false } - 同时要保证Gradle版本与AGP匹配:AGP 8.2.1需要Gradle 7.6.2及以上,AGP 8.3.0需要Gradle 8.2及以上。修改
android/gradle/wrapper/gradle-wrapper.properties中的distributionUrl:
对应AGP8.2.1的Gradle版本:
对应AGP8.3.0的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-all.zipdistributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
2. 统一项目的Java版本配置
你当前使用JDK17,需要确保项目编译配置与之一致:
- 打开
android/app/build.gradle,在android闭包中添加/修改以下配置:android { // 其他原有配置... compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' // 如果项目使用Kotlin,必须添加此配置 } }
3. 更新device_info_plus依赖到最新稳定版
旧版本的插件可能与新AGP、JDK不兼容,打开项目根目录的pubspec.yaml,将device_info_plus的版本更新为pub.dev上的最新稳定版(比如^10.1.0),然后执行:
flutter pub upgrade device_info_plus
4. 彻底清理缓存并重新构建
完成以上修改后,清理旧缓存避免干扰:
# 清理Flutter项目缓存 flutter clean # 进入Android目录清理Gradle缓存 cd android && ./gradlew cleanBuildCache # 返回根目录重新获取依赖 cd .. && flutter pub get # 尝试重新构建项目 flutter run
5. 确认Android Studio的JDK配置
如果问题仍未解决,检查Android Studio的JDK设置:
- 打开Android Studio,点击
File > Project Structure > SDK Location - 确认
JDK Location选择你安装的JDK17,或直接使用Android Studio自带的Embedded JDK(AGP8.2+支持JDK21,也可直接使用)
备注:内容来源于stack exchange,提问作者ibsdev
相关产品推荐
相关产品推荐

