上一篇:Dart 执行 shell 命令:如何实现交互式操作?
下一篇:macOS 无法打开“Xxx.app”,因为 Apple 无法检查其是否包含恶意软件
Flutter 执行 --version 和 doctor 卡住,目前发现出现这种问题的原因有两种,如下:
-
第一种情况:同一个 Flutter SDK 有其他任务正在执行
此时,终端提示Waiting for another flutter command to release the startup lock...
-
解决方法:
这种情况只需删除 Flutter SDK 目录下bin/cache/lockfile
文件即可。
-
第二种情况:个别版本 SDK 执行时会去 github 更新 git 标签
通过flutter --version --verbose
命令可以查看详情,如果卡在git fetch https://github.com/flutter/flutter.git --tags
,那么就是这个原因导致的,对于国内很多网络来说访问 github 本身就比较慢,所以卡住,得等好久才能执行完成。
-
解决方法:
只有个别版本的 SDK 会执行该操作,原因不明,如果遇到这种问题,那么可以将 github 的 flutter 仓库地址修改为 gitee 的 flutter 仓库地址,方式如下:
编辑 Flutter SDK 目录下packages/flutter_tools/lib/src/version.dart
文件,找到_flutterGit
常量的定义,修改该常量的值,将 github 地址修改为 gitee 地址,修改如下:/// The flutter GitHub repository. //const String _flutterGit = 'https://github.com/flutter/flutter.git'; const String _flutterGit = 'https://gitee.com/mirrors/Flutter.git';
-
生成 flutter_tools 方式 1:
修改完成后,需要重新编译成 flutter_tools.snapshot 文件。
只需删除 bin 目录下的 cache 目录,重新执行 --version 以便 Flutter 重新生成该文件即可:$ rm -rf bin/cache $ ./bin/flutter --version --verbose
此时,Flutter 会自动更新 cache 目录,也就是重新下载 dart sdk,并重新 Build flutter tools,包括上面修改的 flutter_tools 包。通过上面命令,可以看到,再次更新 git tags 时,走的时 gitee 仓库:
git fetch https://gitee.com/mirrors/Flutter.git --tags
,卡住问题也就解决了。 -
生成 flutter_tools 方式 2(失败):
flutter_tools 是一个 package,那么是否可以直接编译成功 flutter_tools.snapshot 文件替换掉 bin/cache/ 下的对应文件呢?
执行如下命令进行测试(需要配置支持 dart2native 命令的 Dart SDK):$ dart2native packages/flutter_tools/lib/executable.dart -k aot -o bin/cache/flutter_tools.snapshot
通过执行上面命令,会编译成同名文件覆盖原文件,接着执行
flutter --version --verbose
命令,很不幸,报错了,报错原因暂时没有深入分析,目前是通过 方式 1 解决的。
上一篇:Dart 执行 shell 命令:如何实现交互式操作?
下一篇:macOS 无法打开“Xxx.app”,因为 Apple 无法检查其是否包含恶意软件
网友评论