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上,找到了应该比较靠谱的两个解决方法
- Download latest version flutter sdk and setup. 更新Flutter SDK 最新的版本并设置
- 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分支的最新版本了。

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


终端运行 flutter run,新项目和旧项目都能正常的在真机和模拟器上运行了。折腾了一个下午终于搞定了,也说明这次补坑之旅可以告一段落了。
顺带一提
我的本地Flutter分支是 beta,如果你是stable或其他的分支,解决的方法也是同理的。
还有就是本次填坑的时候我没有使用梯子(梯子刚好坏了),所以说如果你没有梯子也不会有影响的,可能也就等待时间长一点点吧~
总结
如非必要或者做好要漫长填坑的准备,就不要点击更新Flutter SDK或者执行flutter upgrade,否则你永远猜不到接下来等待你的坑是什么。
我是刚刚接触Flutter的小白一个,不喜勿喷哈哈,也希望我的填坑分享对您有所帮助吧~
Flutter upgrade更新版本引发的无法启动调试APP的错误 target:kernel_snapshot failed”的更多相关文章
- 服务器安装ubuntu 14.04 server,开机启动屏幕不停滚动错误WRITE SAME failed. Manually zeroing
昨天给服务器上安装了一个Ubuntu-14.04-server系统,安装完成后系统可以正常启动,但屏幕上一直滚动着一个错误,sda1:WRITE SAME failed. Manually zeroi ...
- Tomcat启动报Error listenerStart错误 Context [] startup failed due to previous errors
本文转载自xpenxpen 今天启动Tomcat启动不了,报以下错: org.apache.catalina.core.StandardContext startInternal SEVERE: Er ...
- Flutter 1.17版本重磅发布
Flutter 1.17 是2020年的第一个稳定版本,此版本包括iOS平台Metal支持(性能更快),新的Material组件,新的Network跟踪工具等等! 对所有人来说,今年是充满挑战的一年. ...
- ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明
ROS(indigo) 安装和使用更新版本的Gazebo,本文以7为例. Gazebo7支持更多新的功能,如果使用下面命令安装ROS(indigo): ~$ sudo apt-get install ...
- 升级SilverLight为5.1.50907.0后,VS调试时报“无法启动调试--未安装 Silverlight Developer 运行时。请安装一个匹配版本”的处理办法
作者: zyl910 一.问题 今天需要调试一个SilverLight程序.运行时ie弹出了一个升级提示,于是手贱点了升级. 随后便悲剧了,VS调试时报"无法启动调试--未安装 Silver ...
- Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新
登陆时splash初始页调用接口检查app版本.如有更新,使用okGo的文件下载,保存到指定位置,调用Android安装apk. <!-- Android 8.0 (Android O)为了针对 ...
- Docker 更新版本
Docker 更新版本 原来版本 1.10 更新后的版本 19.03.1 更新 Docker 版本需要注意的问题: 注意系统是否支持新版本的储存驱动. 19.03.01 版本默认使用的储存驱动是 ov ...
- [转帖]Docker 更新版本 以及 data-root
Docker 更新版本 https://www.cnblogs.com/operationhome/archive/2019/08/11/11322150.html 园友说 docker 使用了 da ...
- 低JAVA版本,高兼容性启动
低JAVA版本,高兼容性启动 背景:部分操作系统java环境低版本,暂时无法更新最新版本,新系统需要使用较高版本Java环境 1.JAVA低版本不兼容当前应用 2.解压安装JAVA,无需配置环境变量 ...
随机推荐
- docker容器与系统时间同步最佳方法
前言:在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,此时需要同步它们的时间,让容器时间跟宿主机时间保持一致. 一.分析时间不一致的原因 宿主机采用了CST时区,CST应该是指(C ...
- promise对象里resolve和reject状态讲解及Promise.all()的使用
首先来说下同步异步与阻塞非阻塞的概念,同步异步与阻塞非阻塞并没有关系.同步异步主要是事情做完以后,如何进行处理.或者说关注的是一种消息通信机制. 同步的情况下,是由处理消息者自己去等待消息是否被触发: ...
- ES6常见面试题
1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMAScript6,即ES6,是ECMAScript ...
- 11.1 Go Http
11.0 Go Http http客户端 package main import ( "fmt" "net/http" "net/http/httpu ...
- django安装及其他模块导入
django安装 python项目第三方模块配置 pip3 list------查看当前pip安装的第三方模块
- xv6 操作系统的环境搭建
xv6 是 MIT 设计的一个教学型操纵系统.xv6 可在 Intel X86 框架上运行,为了方便,建议将 xv6 运行在 QEMU 虚拟机器上,本人的实验环境是 ubuntu 18.04 . 1. ...
- Web-Security-Learning
Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...
- h5 js判断是IOS系统还是android系统
function detect(){ var equipmentType = ""; var agent = navigator.userAgent.toLowerCase(); ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- LeetCode DFS搜索与回溯专题
DFS + 回溯专题 17. 电话号码的字母组合 迭代也可以实现搜索 循环改写dfs搜索的写法: 例如 C++写法 class Solution { public: vector<string& ...