较低版本的flutter在maven下载失败时会清空.gradle整个文件夹,把下载成功的库也一并清空,导致重新下载浪费大量时间并影响其他项目
我电脑中有三个flutter版本,分别为2.10.5、3.10.5、3.13.9,目前出现此问题的只有2.10.5,高版本flutter此问题已被修复
解决方案:
1.在flutter安装目录找到此文件~/flutter/packages/flutter_tools/lib/src/android/gradle_errors.dart
如果你用了fvm做flutter版本控制,那么需要到fvm的flutter安装目录里找gradle_errors.dart
2.在gradle_errors.dart文件中找到networkErrorHandler,并注释其中关于删除.gradle文件夹的代码,此段代码会在网络不好拉取maven失败时清空.gradle文件夹
3.注释完成后保存并关闭gradle_errors.dart,去~/flutter/bin/cache目录下删除这两个文件flutter_tools.stamp、flutter_tools.snapshot
4.删除完成后,执行flutter doctor命令,会打印Building flutter tool...,flutter_tool重新编译后会生成新的flutter_tools.stamp、flutter_tools.snapshot
5.完成上述步骤执行flutter clean并重新运行项目即可,gradle缓存不会再被清空
ps:如果flutter升级后的版本gradle_errors.dart中依然有删除.gradle文件夹的代码,把上述步骤再来一遍即可
附上阿里云maven镜像:
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }