flutter: 完全解决Wrong full snapshot version问题

环境: flutter-sdk(v1.5.4-hotfix.1@stable)android

运行flutter脚本的时候有时会碰见Wrong full snapshot version, expected '…' found '…'的错误, 其实这时候是由于在${FLUTTER_ROOT}/bin/cache里缓存的快照过时或者无效了致使的.ios

网上有把${FLUTTER_ROOT}/bin/cache目录删除了的, 有用git clean -xfd命令解决的, 其实仍是删除了${FLUTTER_ROOT}/bin/cache目录, 这样的作法不太好, fluter脚本会从新下载dartSDK等一系列工具,整个过程会持续很长时间.git

${FLUTTER_ROOT}/bin/cache有8个标识用的时间戳 bin/cache/android-sdk.stamp
bin/cache/flutter_sdk.stamp
bin/cache/flutter_version_check.stamp
bin/cache/ios-sdk.stamp bin/cache/engine-dart-sdk.stamp
bin/cache/flutter_tools.stamp
bin/cache/gradle_wrapper.stamp
bin/cache/material_fonts.stamp 其中android-sdk.stamp,flutter_sdk.stamp,os-sdk.stamp,engine-dart-sdk.stamp通常内容一致, 是${FLUTTER_ROOT}/bin/internal/engine.version中的字串, 相对来讲sdk中的内容咱们通常不会变动, 若是这几个stamp文件内空不同改为一致便可.缓存

最容易出问题的实际上是flutter_tools.stamp, 咱们有时在${FLUTTER_ROOT}/packages/flutter_tools/lib 中的文件添加了一些log, 结果运行时内容打印不出来, 这时只要删除flutter_tools.stamp便可, flutter脚本(${FLUTTER_ROOT}/bin/flutter)会自行生成stamp并重建snapshot(${FLUTTER_ROOT}/bin/cache/flutter_tools.snapshot), 而dart最终运行的是snapshot文件.app

因此通常状况下删除flutter_tools.stamp便可解决问题工具

另外若是想让${FLUTTER_ROOT}/packages/flutter_tools/lib里更改的内容实时生效, 将${FLUTTER_ROOT}/bin/flutter中引用的$SNAPSHOT_PATH改为$SCRIPT_PATH就能够实时查看dart脚本怎样同步工程, 怎样诊断环境等等全部事情:post

这意味着 一旦脚本运行出现难懂的错误,咱们就能够很容易的定位问题了!
相关文章
相关标签/搜索