美文网首页flutter
Flutter 执行 --version 和 doctor 卡住

Flutter 执行 --version 和 doctor 卡住

作者: 挽风阁2019 | 来源:发表于2020-09-20 00:13 被阅读0次

    上一篇:Dart 执行 shell 命令:如何实现交互式操作?
    下一篇:macOS 无法打开“Xxx.app”,因为 Apple 无法检查其是否包含恶意软件

    Flutter 执行 --version 和 doctor 卡住,目前发现出现这种问题的原因有两种,如下:

    1. 第一种情况:同一个 Flutter SDK 有其他任务正在执行
      此时,终端提示 Waiting for another flutter command to release the startup lock...
    • 解决方法
      这种情况只需删除 Flutter SDK 目录下 bin/cache/lockfile 文件即可。
    1. 第二种情况:个别版本 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 无法检查其是否包含恶意软件

    相关文章

      网友评论

        本文标题:Flutter 执行 --version 和 doctor 卡住

        本文链接:https://www.haomeiwen.com/subject/wmtuyktx.html