Flutter 2.2项目适配Android 13(targetSdk33)遇构建错误求助
你的怀疑完全正确,Flutter 2.2版本(2021年发布)本身未适配Android 13(targetSdkVersion 33),这是导致两类构建错误的核心原因,以下是具体分析和解决办法:
错误原因分析
1. Gradle版本低于7时的错误
Could not open proj generic class cache for build file 'path/to/app/android/app/build.gradle'... Unsupported class file major version 62
这个错误是因为Java 17的class文件版本号为62,而Gradle 6.x及以下版本不支持Java 17。但适配Android 13通常需要使用更高版本的Java环境,旧版Gradle无法兼容,从而触发该错误。
2. Gradle版本高于7时的错误
In plugin 'com.android.build.gradle.api.AndroidBasePlugin' type 'com.android.build.gradle.tasks.RenderscriptCompile' method 'useAndroidX()' should not be annotated with: @Input...
Flutter 2.2内置的Android Gradle插件(AGP)版本较低(通常为4.x系列),高版本Gradle(7.x+)对插件的注解规范有更严格的要求,旧版AGP的代码不符合新规范,因此抛出该注解错误。
解决办法
方案1:升级Flutter版本(推荐)
Flutter 3.3及以上版本开始正式支持Android 13,升级后官方会同步更新配套的Gradle、AGP版本,彻底解决兼容性问题:
- 执行命令升级:
flutter upgrade - 升级后按照Flutter的提示处理依赖冲突,确保所有第三方插件也适配新版本Flutter。
方案2:手动适配(不推荐,存在潜在风险)
若暂时无法升级Flutter,可尝试手动调整Gradle、AGP和Java版本来适配:
- 修改
android/build.gradle中的构建脚本:buildscript { ext.kotlin_version = '1.6.10' // 升级Kotlin版本适配AGP 7.x repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.0.4' // 适配targetSdk 33的最低AGP版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } - 修改
android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip - 确保使用Java 11环境(AGP 7.x要求Java 11),避免使用Java 17引发版本冲突。
注意:手动适配可能会触发更多隐藏的兼容性问题(比如Flutter框架API与Android 13行为不兼容),仅作为临时过渡方案。
内容的提问来源于stack exchange,提问作者Rafał Klebba

