AGP 8.x集成Flutter模块遇Gradle错误,求解决方案
AGP 8.x集成Flutter子模块报错的原因分析与解决经验
错误原因分析
- Gradle API变更导致兼容性问题:AGP 8.4要求搭配Gradle 8.0+版本,旧版Flutter自动生成的
include_flutter.groovy脚本中,错误地在org.gradle.invocation.DefaultGradle实例上调用include(:flutter)方法。而Gradle 8.x中,include方法属于Project对象的API,而非顶层Gradle实例,因此触发方法找不到的错误。 - Flutter版本未适配AGP 8.x:若使用的Flutter版本低于3.10.0,官方尚未针对AGP 8.x/Gradle 8.x做适配,自动生成的.android目录下辅助脚本会存在API调用不兼容问题。
解决步骤与成功集成经验
- 优先升级Flutter到适配版本:执行
flutter upgrade将Flutter升级至3.10.0及以上版本,该版本开始官方正式支持AGP 8.x,升级后自动生成的include_flutter.groovy脚本会适配Gradle 8.x的API规范,无需手动修改。 - 手动修复脚本(无法升级Flutter时):若暂时无法升级Flutter,直接修改
flutter_module/.android/include_flutter.groovy第4行代码:将原来的gradle.include(":flutter")(或类似直接调用Gradle实例的写法)改为project.include(":flutter"),确保调用的是Project对象的include方法。 - 匹配Gradle wrapper版本:检查主项目的
gradle/wrapper/gradle-wrapper.properties,确保distributionUrl指向与AGP 8.4兼容的Gradle版本,示例:distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip - 验证settings.gradle配置:确保主项目的
settings.gradle(或settings.gradle.kts)中正确引入Flutter模块,示例写法:
注意AGP 8.x中避免使用Gradle已废弃的配置API,保持配置语法符合Gradle 8.x规范。setBinding(new Binding([gradle: this])) evaluate(new File( settingsDir.parentFile, 'flutter_module/.android/include_flutter.groovy' )) - 重新同步项目:修改完成后,执行Android Studio的
File -> Sync Project with Gradle Files,等待同步完成后验证错误是否解决。
内容的提问来源于stack exchange,提问作者Jim E-H
相关产品推荐
相关产品推荐

