此票证包含一些提示,可帮助缓解最近的 Android 编译问题。

在尝试任何解决方案之前,请确保您的项目已迁移到新的 Android 项目结构:

您还可以在此处找到对不同 Android Gradle 插件 (AGP) 和 Gradle 版本的引用:

在 flutter/flutter 上也有一个讨论这个问题的主要问题:

导致问题的原因

大多数问题来自使用最新的 Android Studio (Ladybug 2024.2.1),该 Android Studio 附带了 Java SDK 21

例如:运行 :flutter doctor -v

 1[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
 2Android SDK at /home/miquel/Android/Sdk
 3Platform android-35, build-tools 35.0.0
 4ANDROID_HOME = /home/miquel/Android/Sdk
 5Java binary at:
 6      /home/miquel/.local/share/JetBrains/Toolbox/apps/android-studio/jbr/bin/ja
 7      va
 8Java version OpenJDK Runtime Environment (build 21.0.3+-12282718-b509.11)
 9All Android licenses accepted. 

最简单的解决方案是降级 Android Studio 并使用 Java 17,现在,让我们尝试使用最新的 Android Studio 版本来解决这个问题。

编译问题

使用 Flutter 并添加(或任何其他 Android 插件)新创建的项目时,你会看到的第一个编译问题是:3.24.3``connectivity_plus

 1FAILURE: Build failed with an exception.
 2
 3* What went wrong:
 4Execution failed for task ':connectivity_plus:compileReleaseJavaWithJavac'.
 5> Could not resolve all files for configuration ':connectivity_plus:androidJdkImage'.
 6   > 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}.
 7      > Execution failed for JdkImageTransform: /home/miquel/Android/Sdk/platforms/android-34/core-for-system-modules.jar.
 8         > Error while executing process /home/miquel/.local/share/JetBrains/Toolbox/apps/android-studio/jbr/bin/jlink with arguments {--module-path /home/miquel/.gradle/caches/transforms-3/4a46fc89ed5f9adfe3afebf74eb8bfeb/transformed/output/temp/jmod --add-modules java.base --output /home/miquel/.gradle/caches/transforms-3/4a46fc89ed5f9adfe3afebf74eb8bfeb/transformed/output/jdkImage --disable-plugin system-modules} 

检查项目依赖项

该项目附带以下 AGP:

 1id "com.android.application" version "8.1.0" apply false 

以及以下 gradle 包装器:

 1distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip 

检查插件要求

插件 README 列出了以下版本要求:

 1 Flutter >=3.7.0
 2    Dart >=3.2.0 <4.0.0
 3    iOS >=12.0
 4    MacOS >=10.14
 5    Android compileSDK 34
 6    Java 17
 7    Android Gradle Plugin >=8.3.0
 8    Gradle wrapper >=8.4 

升级依赖项

要应用这些内容,请更改以下内容:

打开和更改:android/app/build.gradle

 1    compileOptions {
 2      sourceCompatibility JavaVersion.VERSION_17
 3      targetCompatibility JavaVersion.VERSION_17
 4    }
 5
 6    kotlinOptions {
 7        jvmTarget = JavaVersion.VERSION_17
 8    }

打开和更改:android/gradle/wrapper/gradle-wrapper.properties

 1distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip 

打开和更改:android/settings.gradle

 1    id "com.android.application" version "8.3.1" apply false

所有这些都遵循插件 README 文件指定的最低版本要求。

现在,项目再次编译:

 1Running Gradle task 'assembleRelease'...                           13.4s
 2Built build/app/outputs/flutter-apk/app-release.apk (18.7MB) 

NDK 错误

您可能会在屏幕上看到以下错误:

 1Your project is configured with Android NDK 23.1.7779620, but the following plugin(s) depend on a different Android NDK version:
 2- connectivity_plus requires Android NDK 25.1.8937393
 3Fix this issue by using the highest Android NDK version (they are backward compatible).
 4Add the following to /home/miquel/tmp/connectivity_error_2/android/app/build.gradle:
 5
 6    android {
 7        ndkVersion = "25.1.8937393"
 8        ...
 9    } 

似乎您可以忽略此错误,因为项目仍在编译。

更改 Java SDK

您可以尝试使用命令设置 Jdk 路径。我还没有尝试过,但如果其他一切都失败了,您可以考虑这样做。flutter config --jdk-dir

  1. 下载并安装 JDK 17。
  2. 用于配置它。flutter config --jdk-dir
  3. 再次检查版本flutter doctor -v
个人笔记记录 2021 ~ 2025