You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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版本:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-all.zip
    
    对应AGP8.3.0的Gradle版本:
    distributionUrl=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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:13:12