flutter: 彻底解决Wrong full snapshot version问题

本文介绍了flutter脚本运行时因缓存快照过期或无效产生错误的解决办法。不建议删除目录,可将几个stamp文件内容改成一致。若添加log打印不出,删除相关文件,脚本会自行生成并重建snapshot。还提及让更改实时生效的方法,便于定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

${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文件.

所以一般情况下删除flutter_tools.stamp即可解决问题

另外如果想让${FLUTTER_ROOT}/packages/flutter_tools/lib里更改的内容实时生效, 将${FLUTTER_ROOT}/bin/flutter中引用的$SNAPSHOT_PATH改成$SCRIPT_PATH就可以实时查看dart脚本怎样同步工程, 怎样诊断环境等等所有事情:
1695557-20190622180913983-107393823.png

这意味着一旦脚本运行出现难懂的错误,我们就可以很容易的定位问题了!

转载于:https://www.cnblogs.com/lindeer/p/11069838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值