Flutter 2.5.0打包APK报错ClassNotFoundException该如何解决
使用Flutter 2.5.0版本,执行以下构建命令打包APK:flutter build apk --split-per-abi --no-sound-null-safety --no-tree-shake-icons --no-shrink -v
抛出如下错误:
Caused by: java.lang.ClassNotFoundException: com.android.tools.lint.client.api.Vendor
[ ] at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:328)
[ ] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
[ ] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
该报错核心是Flutter 2.5.0默认适配的Android Gradle Plugin(AGP)版本和当前项目使用的AGP版本不兼容,高版本AGP移除了旧版Lint组件中com.android.tools.lint.client.api.Vendor相关API,导致类加载失败。
方案一:禁用Lint检查(最快解决)
无需调整Gradle版本,直接关闭编译阶段的Lint检查即可,适配旧版Flutter项目推荐用这个方案:
- 打开项目安卓根目录下的配置文件
android/build.gradle - 在
android代码块中添加如下配置:
android { // 你原有项目的其他配置保持不变,新增下方lint配置 lintOptions { checkReleaseBuilds false abortOnError false } }
- 保存后重新执行构建命令即可。
方案二:调整AGP和Gradle版本适配
如果你需要保留Lint检查功能,将AGP和Gradle版本降级到Flutter 2.5.0兼容的版本即可:
- 打开
android/build.gradle,修改AGP依赖版本为4.1.0:
dependencies { classpath 'com.android.tools.build:gradle:4.1.0' // 其他原有依赖保持不变 }
- 打开
android/gradle/wrapper/gradle-wrapper.properties,修改Gradle分发版本为6.5:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
- 保存配置后重新同步项目,再执行构建命令即可。
补充操作
如果修改配置后依然报错,先执行缓存清理操作再构建:
- 执行
flutter clean清理项目编译缓存 - 执行
flutter pub get重新拉取项目依赖 - 重新运行APK构建命令
内容的提问来源于stack exchange,提问作者Bilal Rabbi

