当年陈刀仔用20块赢到3700万,我卢本伟用20万赢到500万不是问题。
陈刀仔的励志故事历历在目,我们从flutter的战场新兵到超凡入圣也不是问题哈~今天我谈谈调试需要注意的事项。
调试
Hot Reload 热重置
热重载是指:在不中断App正常运行的情况下,动态注入修改后的代码片段,及时的把修改呈现在屏幕上。
这个技术在很多前端技术里都有,android上有intantRun,避免每次小的改动都要重新编译,具体怎么用呢?
Performing hot reload...
Reloaded 1 of 448 libraries in 2,777ms.
为什么不能使用Hot Reload
非debug模式是不能使用hotReload的,工程默认是debug模式,debug模式下会执行设置的断言,
运行可能会不太流畅,但不影响实际性能。
Hot Reload成功了但我的改动没有生效?
Hot Reload并非所有改动都会生效,是由于其编译原理决定的。简单的说,Hot Reload只是把改动前后做了一下对比差分,
形成了增量操作,并不会全部重新编译。说人话就是:flutter布局相关的改变可以使用Hot Reload,其它的改变很多都无效。
重启app,之前HotReload的变化都丢失了
Hot Reload因为没有执行全部的编译,重启app就丢失了,需要重新运行编译
模拟器/真机调试忽然报错
IOS报错
Launching lib/main.dart on iPhone 11 Pro Max in debug mode...
Running Xcode build...
Xcode build done. 15.7s
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
只要是你确信自己的代码没啥问题,那一定是ios搞错了。
- 方法一: Terminal,进入到flutter工程目录,执行 xattr -rc . 注意命令后面的空格点哦
cd myapp
xattr -rc .
- 方法二(推荐): Terminal,进入flutter工程目录,万能的clean
cd myapp
flutter clean
原理就是flutter编译产物混乱了,clean一下,重新生成编译产物。
Android报错
找不到资源
android项目的clean方法:
- 方法一: Terminal,进入到android工程目录,执行 ./gradlew clean
cd myapp
cd android
./gralew clean
- 方法二(推荐): Terminal,进入flutter工程目录,万能的clean
cd myapp
flutter clean
原理就是flutter编译产物混乱了,clean一下,重新生成编译产物。
总结一下,如果flutter程序编译没问题,两个平台报错,通常是热更新导致的问题,最好的办法就是先执行flutter clean , 重新编译。如果还有问题,再具体问题分析解决。
IOS真机调试
IOS 13.3真机调试flutter白屏
ios 13.3真机调试都有问题,不是flutter的问题。把手机系统升级到13.4就好了。
XCode不支持这个ios版本,建议更新XCode
XCode安装包巨大,而且更新性能不稳定,想要适应新的ios版本真机,下载ios版本兼容包就行啦: github.com/filsv/iPhon…
执行flutter命令卡住,重启ide无效
pubspec.yaml文件 pub get不下来卡住,其它flutter命令提示
Waiting for another flutter command to release the startup lock...
简而言之:flutter执行一条命令的时候会加一个文件锁,执行第二条命令的时候如果获取不到这个锁,就会报这个错。 解决办法就是手动"解锁": 打开flutter的安装目录,找到这个文件lockfile
/路径/flutter/bin/cache/lockfile
把这个文件删了就行了,下次执行flutter指令还会自动创建的,不影响使用。
断点
Flutter支持断点调试
点这个有Flutter图标的按钮,“Flutter Attach”, 就可以给当前flutter app添加上断点监听,断点使用方式和android/ios执行断点一致。
Flutter断点经常使用者莫名失效,如果遇到了尝试重启app,重新添加断点
Assert断言
断言可以帮助我们在debug模式判断传参、运行环境是否符合要求,而正是环境不会编译进去,源码大量使用了断言。
后记
兵马未动,粮草先行。
以上我讲了一些自己调试遇到的问题,Flutter中文网调试Flutter应用关于如何调试flutter应用讲得更加系统,希望大家有时间一定要好好看一下。
如何调试搞清楚了,下一章准备聊聊dart,欢迎关注点赞~