Android Java Gradle 迁移指南
摘要
#如果您最近将 Android Studio 升级到 Flamingo 版本,并且运行或构建了现有的 Android 应用程序,您可能会遇到类似于以下错误
此错误的终端输出类似于以下内容
sh
FAILURE: Build failed with an exception.
* Where:
Build file '…/example/android/build.gradle'
* What went wrong:
Could not compile build file '…/example/android/build.gradle'.
> startup failed:
General error during conversion: Unsupported class file major version 61
java.lang.IllegalArgumentException: Unsupported class file major version 61
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:189)
at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:170)
[…
…
… 209 more lines of Groovy and Gradle stack trace …
…
…]
at java.base/java.lang.Thread.run(Thread.java:833)
发生此错误的原因是 Android Studio Flamingo 将其捆绑的 Java SDK 从 11 更新到 17。Flutter 使用与 Android Studio 捆绑的 Java 版本构建 Android 应用程序。当使用 Java 17 时,Gradle 版本 低于 7.3 无法运行。
您可以通过使用以下方法之一将 Gradle 项目升级到兼容版本(包括 7.3 到 7.6.1)来修复此错误。
方案 #1:使用 Android Studio 进行引导修复
#按照以下步骤在 Android Studio Flamingo 中升级 Gradle 版本
在 Android Studio 中,打开
android
文件夹。这将显示以下对话框更新到 7.3 到 7.6.1(含)之间的 Gradle 版本。
按照引导工作流程更新 Gradle。
方案 #2:命令行手动修复
#从 Flutter 项目的顶部执行以下操作。
转到项目的 Android 目录。
cd android
将 Gradle 更新到首选版本。选择 7.3 到 7.6.1(含)之间的版本。
./gradlew wrapper --gradle-version=7.6.1
备注
#需要注意的一些事项
- 对每个受影响的 Android 应用程序重复此步骤。
- 那些没有通过 Android studio 下载 Java 和 Android SDK 的用户也可能会遇到此问题。如果您已手动将 Java SDK 升级到版本 17 但尚未升级 Gradle,则也可能遇到此问题。修复方法相同:将 Gradle 升级到 7.3 到 7.6.1 之间的版本。
- 您的开发机器可能包含多个 Java SDK 副本
- Android Studio 应用程序包含一个 Java 版本,Flutter 默认使用该版本。
- 如果您未安装 Android Studio,则 Flutter 将依赖于 shell 脚本的
JAVA_HOME
环境变量中定义的版本。 - 如果未定义
JAVA_HOME
,则 Flutter 会在您的路径中查找任何java
可执行文件。一旦问题 122609解决,flutter doctor -v
命令将报告使用哪个版本的 Java。
- 如果您将 Gradle 升级到高于 7.6.1 的版本,您可能会(尽管不太可能)遇到由于 Gradle 的更改而导致的问题,例如已弃用的 Gradle 类,或 Android 文件结构的更改,例如将 ApplicationId 与 PackageName 分开。如果发生这种情况,请降级到 7.3 到 7.6.1(含)之间的 Gradle 版本。
- 升级到 Flutter 3.10 无法解决此问题。
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面最后更新于 2024-11-11。 查看源代码 或 报告问题.