^符号设计的本意是获取当前大版本下的最新版本插件,以此来获得最好的支持。但是最近在Jenkins上打包时发现存在插件小版本不兼容的问题,导致功能无法正常使用,且非常难定位到,浪费大量时间。
该问题只在第一次运行项目时才会遇到,本地开发环境由于已经缓存了一个正常版本,不会再获取最新的版本插件
问题出现的本质是:插件开发人员缺乏对插件的版本号管理,没有考虑同一版本兼容性问题,若存在不兼容情况时应该升级大版本号以此来提醒使用者选择更新
目前遇到问题的插件
- dio: 3.0.9 -> 3.0.10,导致后台接口请求参数错误
- get: 4.1.4 -> 4.3.8,直接代码报错,打包后部分路由无法跳转
建议
程序应该保证所有的变量可控,建议放弃^符号改为指定具体版本,避免插件更新导致环境出现问题
版本二
时间:2022年01月24日16:20:22
- flutter_screenutil自动升级版本导致页面异常问题
最近使用之前部署的Jenkins给App打包,发现新打包的App点击登录页面白屏的情况,有过之前插件自动升级的经验,这次快速排查了项目在服务器和本地第三方sdk的引用版本
使用命令flutter pub deps:
比较发现flutter_screenutil出现小版本自动升级情况,本地修改版本运行app确认是该插件导致的问题。
插件版本比较.png
检查插件项目Github,在issue发现已提出该问题,插件开发者推荐使用调整初始化方式解决该问题
issue.png
但这种情况对我们的项目是有非常大的潜在风险的。这里再次重申,Flutter插件的引入一定要采用指定版本的模式,避免由于插件小版本的自动升级导致项目运行异常的问题!
网友评论