Flutter旧项目升级Gradle后构建失败,Jar.destinationDir方法报错
解决Flutter旧项目升级Gradle后
packLibsflutterBuildDebug任务创建失败问题 这个错误的核心原因是旧版Flutter的flutter.gradle脚本使用了Gradle已废弃/变更的API:高版本Gradle中,Jar任务的destinationDir属性已被替换为destinationDirectory(类型为Property<File>),旧脚本直接传递File对象给destinationDir()方法导致签名不匹配。
解决方案1:修改Flutter官方gradle脚本(快速临时修复)
- 打开报错的脚本文件:
C:\Users\Admin\Downloads\flutter_windows_3.7.11-stable\old_version_2.5\flutter\packages\flutter_tools\gradle\flutter.gradle - 定位到第763行,找到类似以下的代码:
jar.destinationDir = file(...) - 将其替换为Gradle新版本兼容的写法:
jar.destinationDirectory.set(file(...)) - 保存文件后,重新执行构建命令:
flutter run或./gradlew assembleDebug
解决方案2:匹配Flutter与Gradle的兼容版本(长期稳定方案)
旧版Flutter(如2.5.x)和高版本Gradle存在兼容性断层,建议:
- 若坚持使用Flutter 2.5.x,将Gradle版本回退到兼容范围(建议Gradle 7.0.x,对应Android Gradle Plugin 4.2.x)
- 若要保留高版本Gradle,同步升级Flutter SDK到对应兼容版本(如Flutter 3.7.x对应Gradle 7.4+、AGP 7.2+),避免修改官方脚本的潜在风险
解决方案3:排查依赖兼容性
部分停止维护的依赖可能未适配高版本Gradle,可:
- 回退最近升级的可疑依赖到旧版本,验证是否解决问题
- 寻找停止维护依赖的替代库,替换后重新构建
内容的提问来源于stack exchange,提问作者Nitin Singh
相关产品推荐
相关产品推荐

