Flutter项目Android模块构建报错:SourceDirectories相关方法问题求助
兄弟,我之前踩过类似的Gradle API不兼容的坑,结合你已经尝试的操作,给你梳理几个大概率的问题方向:
Flutter版本与AGP版本不兼容
你把Android Gradle Plugin(AGP)升级到了8.2.2,但如果你的Flutter版本比较旧(比如低于3.16稳定版),就会出现API调用不匹配的问题。AGP 8.x对Sources相关的API做了重构,旧版Flutter的Android插件还在调用已经被修改的getByName方法。你可以先执行flutter --version查看当前版本,要么把AGP降级到Flutter官方推荐的对应版本,要么升级Flutter到兼容AGP 8.x的稳定版。第三方依赖/插件未适配AGP 8.x
如果你的项目里引入了第三方Android原生SDK、自定义Gradle插件或者其他原生依赖,它们可能还没适配AGP 8.x的新API规范,内部仍在调用废弃的Sources.getByName方法。你可以尝试临时禁用非必要的第三方插件/依赖,逐个排查找出冲突的那个,然后去查看它的更新日志,有没有适配AGP 8.x的版本可用。Gradle配置或缓存的残留冲突
有时候本地缓存或者配置文件的残留会导致奇怪的兼容性问题,你可以试试这些操作:- 删除Android模块目录下的
.gradle和build文件夹 - 执行
flutter clean命令清理Flutter缓存,再运行flutter pub get重新拉取依赖 - 检查
android/gradle/wrapper/gradle-wrapper.properties中的Gradle版本,AGP 8.2.x对应的Gradle版本需要是8.3及以上,别搞混了版本对应关系
- 删除Android模块目录下的
Java/Kotlin版本配置细节遗漏
虽然你升级到了Java 17,但要确保Android模块的build.gradle里已经正确配置了版本参数,避免隐性的版本冲突:android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } }另外,要保证项目中所有模块的Kotlin版本统一,别出现部分模块用旧版本、部分用1.9.20的情况。
备注:内容来源于stack exchange,提问作者Mikias Mulugeta

