• Flutter upgrade更新版本引发的无法启动调试APP的错误 target:kernel_snapshot failed”


    前言

    我的主机上的Flutter 本地的分支是在 beta,因为去年想尝鲜Flutter Web,所以一直没切回来stable分支。

    早上打开VSCode,右下角弹出了Flutter upgrade的选项,无意中看见自己的flutter 版本居然还在 1.12.13 ,手贱冲动开始了Flutter 版本更新,然后弹出waiting lock的提示,没管它继续让它下载,然后过了一会提示flutter upgrade失败了。

    接着启动项目调试,发现就失败了,报错的信息有几百行,都是某些函数底部有红波浪线提示报错了,最后的原因为:

    Cause:Target kernel_snapshot failed: Exception: Errors during snapshot creation: null...
    

    但是运行 flutter doctor命令却是一切正常的,都是打勾勾的。于是开始漫长查询报错解决:

    在StackOverflow和Flutter官方的issue上,找到了应该比较靠谱的两个解决方法

    1. Download latest version flutter sdk and setup. 更新Flutter SDK 最新的版本并设置
    2. Fix it by creating a new project and copying the code from the old one.创建一个新项目

    因为我是因为更新版本才导致的出错,所以我打算先选择第二个方法,创建一个新项目试试看,

    尝试一:创建新项目

    创建后,运行 flutter doctor,一切正常,然后运行启动调试 flutter run ,报错了和旧项目一样的报错信息。

    说明这个方法行不通,我的问题不跟新旧项目配置有关。

    尝试二:切换分支到stable

    使用flutter channel stable 失败,显示:Your local changes to the following files would be overwritte。

    然后列出了很多修改过的文件与远程库分支不相同。

    尝试三:flutter 当前分支执行pull,与远程同步(更新到最新版本) 成功解决!

    定位到我的主机上存放flutter的根目录 C:flutter 下

    执行git pull,出现了

    git error:fatal: unable to access 'https://github.com/flutter/flutter.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054。
    

    新的问题,先解决这个ErrorCode:10054问题的方案:

    执行 git config --global http.sslVerify false

    然后因为我的本地beta分支的文件已经落后远程官方库的beta分支接近2000次的commit了,所以我打算直接让远程的文件直接覆盖掉我的本地文件

    执行命令:git reset --hard ,回退到上一个commit的版本,也就是打算消除本地与远程的差异。

    执行命令:git pull origin beta,然鹅又出现错误了:

    error: The following untracked working tree files would be overwritten by merge:后面接着一大堆文件和列表balabala
    

    行吧,又得解决新的问题,

    解决Error:The following untracked working tree files would be overwritten by merge的方案:

    执行命令 git clean -d -fx会判断删除本地与远程不相同的文件,当有无法删除的文件不断会询问你 y or n,我遇到的 dart.exe 无法删除就一直问我 y / n ? ,最后选择了 n ,命令就继续执行下去了,接着程序自动remove了很多很多文件。

    然后我又又又再次执行 git pull,经过漫长等待,这次成功了,下面是成功时候的截图,将本地分支(我的是beta),更新到与flutter Github上beta分支的最新版本了。

    image-20200607195409600

    接着重启VSCode,运行Flutter Doctor,会重新进行依赖和下载Flutter Doctor所需要的tools,经过一段时间的等待后,Flutter Doctor显示的结果依旧正常,不过Flutter SDK的版本已经从最初的1.12.13 更新为1.18.0了

    image-20200607195750680

    image-20200607195806184

    终端运行 flutter run,新项目和旧项目都能正常的在真机和模拟器上运行了。折腾了一个下午终于搞定了,也说明这次补坑之旅可以告一段落了。

    顺带一提

    我的本地Flutter分支是 beta,如果你是stable或其他的分支,解决的方法也是同理的。

    还有就是本次填坑的时候我没有使用梯子(梯子刚好坏了),所以说如果你没有梯子也不会有影响的,可能也就等待时间长一点点吧~

    总结

    如非必要或者做好要漫长填坑的准备,就不要点击更新Flutter SDK或者执行flutter upgrade,否则你永远猜不到接下来等待你的坑是什么。

    我是刚刚接触Flutter的小白一个,不喜勿喷哈哈,也希望我的填坑分享对您有所帮助吧~

  • 相关阅读:
    在ubuntu下关闭笔记本触摸板
    (转载)实用小命令 windows下查看端口占用情况
    (转载)JBoss 4.2.3下部署EJB 3.0碰到的local和remote问题
    Windows下通过xmanager远程桌面控制Linux(转)
    SQL Server 事务日志的问题
    回归
    用友软件工程IT应用研究院
    关于Oracle数据库的死锁(转书摘)
    关于企业级Web2.0的一点想法
    关注Java的开源项目(中文版)
  • 原文地址:https://www.cnblogs.com/DMingO/p/13061988.html
Copyright © 2020-2023  润新知