空安全出来挺久了,由于业务需求较紧,一直没时间去升级空安全,最近花了几天去升级,发现其实升级也挺简单的,不要恐惧,没有想象中的多BUG。
flutter版本从1.22.4升到3.0.5;
compileSdkVersion从19升到33(支持安卓12、13);
jdk版本从1.8升到11;
gradle版本从3.5升到7.5;
顺便把AS版本、kotlin版本、以及三四十个依赖插件通通升级到了最近版本。
跨度大范围广,也算是一次综合型的基础升级,遇到的问题比较杂,但总体也算顺利,这里把一些步骤和问题回忆记录一下,希望能帮到大家。
【主要步骤】
- 备份代码、记录环境和工具的版本信息——目的是万一升级不成功还能回来
- 检查可升级插件——目的是确保大部分插件都可升级,这样你的代码才能升级上去
运行 dart pub outdated --mode=null-safety
会看到有哪些库已支持空安全,如果现在还不支持空安全的,那么这个库多半是弃用了,寻找新的库吧。
tips:可以去官方插件库
搜索你弃用的那个库名,一般来说后面会有plus、v2 、new 之类的别的库,可能就是原来那个库的空安全版本。例如这个
- 升级插件——先解决插件问题,再升级代码
当你确认大部分库都可以升级了,只有个别库被弃用,那么你就可以放心大胆的执行升级第三方库
运行
dart pub upgrade --null-safety
去尝试升级插件。
如果过程中遇到问题,运行
dart pub update --null-safety --dry-run
去检查插件升级失败原因,挨个解决即可。
-
代码升级——当第三方插件升级完成之后,开始升级自己的代码
运行 dart migrate 可以直接移植你的代码,帮你自动填充很多的?和!
如果遇到问题,说明还有库没升级到空安全,没关系,运行 dart migrate --skip-import-check 直接升级,升级完再回来解决即可。 -
JDK版本升级
这个是因为升级到最新版本后,很多第三方库用了最新jdk编译