您现在的位置是:首页 >学无止境 >Flutter2.x升级3.x版本遇到的问题及解决方案网站首页学无止境
Flutter2.x升级3.x版本遇到的问题及解决方案
项目原本使用的Flutter版本为2.5.3,现在要升级到3.0.5版本,结果升级完后项目直接编译不通过,报了一堆的错误,如果你也是这种情况,可以按我接下来讲的操作试一试,反正我就是这么解决问题的。
目录
1、升级Gradle版本
首先查看项目的Gradle版本是不是大于7.4,如果不是,请使用大于这个版本的Gradle,并且将Gradle插件的版本升级到7.1.2以上。
因为在Flutter官网的Flutter3更新详解中提到
1.1、添加 allowInsecureProtocol属性
Gradle升完级,如果你的项目中有用到第三方仓库地址的,那么需要将Http类型的仓库的Url地址改为Https,否则会报下面的错误,不知道从哪个版本开始,Gradle不支持Http协议的仓库地址。
如果仓库地址改不了Https的可以使用 allowInsecureProtocol 属性
maven {
allowInsecureProtocol true
url 'http://172.17.0.172:8081/repository/maven-releases/' }
2、升级Kotlin版本
如果你的项目使用了Kotlin,那么Kotlin的Gradle插件版本也需要一并升级,升级版本需要对应你的Gradle版本,下面的图是Kotlin官网对于Kotlin Gradle插件版本的要求。
最简单的是直接升级到最新版本,当然你也可以看编译报错信息里提示需要的版本,比如我的报错信息提示需要1.7.10的版本,我就升到了1.7.10,因为项目没有用到Kotlin Gradle插件的最新API,所以1.7.10就够用了,不需要最新的完全支持版本。
我不升级到最新版还有一个重要的原因,那就是我将Kotlin Gradle插件升级到1.8.0时发现,kotlin-android-extensions这个插件没了,不再支持了!之前还只是警告这个插件已经被废弃,这下直接干没了。
我最爱的Kotlin功能就这么没了!!!我需要将以前所有用到kotlin-android-extensions插件的页面都替换成view-binding的方式实现。。。太狗了
郭霖老师对于kotlin-android-extensions插件被废弃这事也深感愤恨,甚至专门写了一篇文章?
kotlin-android-extensions插件也被废弃了?扶我起来 - 掘金
3、升级Room版本
如果你的项目使用到了Room数据,并且你的Kotlin版本在1.7以上,那么恭喜你,这个Room大概也得升级。。。
先检查一下你的Room版本,看看是不是低于2.4.3,如果低于这个版本,那么请将Room升级到这个版本或者更高,因为低于2.4.3版本的Room无法识别Kotlin1.7中的挂起函数,根本编译不过去(删除suspend关键字的不算)。
Room官网地址:
https://developer.android.com/jetpack/androidx/releases/room?hl=zh-cn#version_243_3
ok,修改到此,应该是没啥大问题了,如果你的项目还是编译不过去或者运行不起来,大概还是配置的问题,看看是不是还有其他第三方库或者插件要升级的,如果有遇到什么其他坑的,欢迎评论区留言,让更多人避避坑~