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

這意味着 一旦腳本運行出現難懂的錯誤,咱們就能夠很容易的定位問題了!
相關文章
相關標籤/搜索