環境: 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