项目原本使用的Flutter版本为2.5.3,现在要升级到3.0.5版本,结果升级完后项目直接编译不通过,报了一堆的错误,如果你也是这种情况,可以按我接下来讲的操作试一试,反正我就是这么解决问题的。

先讲一下我的运行环境:

电脑系统:macOS 13.2.1

Android Studio版本:Chipmunk | 2021.2.1 Patch 1

JDK版本:11
 

目录

1、升级Gradle版本

1.1、添加 allowInsecureProtocol属性

2、升级Kotlin版本

3、升级Room版本

4、排除Kotlin部分依赖


1、升级Gradle版本


首先查看项目的Gradle版本是不是大于7.4,如果不是,请使用大于这个版本的Gradle,并且将Gradle插件的版本升级到7.1.2以上。

因为在Flutter官网的Flutter3更新详解中提到

flutter pytorch版本 flutter升级2.0_flutter

1.1、添加 allowInsecureProtocol属性

Gradle升完级,如果你的项目中有用到第三方仓库地址的,那么需要将Http类型的仓库的Url地址改为Https,否则会报下面的错误,不知道从哪个版本开始,Gradle不支持Http协议的仓库地址。

flutter pytorch版本 flutter升级2.0_flutter_02

如果仓库地址改不了Https的可以使用 allowInsecureProtocol 属性 

maven {
            allowInsecureProtocol true
            url 'http://172.17.0.172:8081/repository/maven-releases/' }

2、升级Kotlin版本


如果你的项目使用了Kotlin,那么Kotlin的Gradle插件版本也需要一并升级,升级版本需要对应你的Gradle版本,下面的图是Kotlin官网对于Kotlin Gradle插件版本的要求。

flutter pytorch版本 flutter升级2.0_flutter3_03

最简单的是直接升级到最新版本,当然你也可以看编译报错信息里提示需要的版本,比如我的报错信息提示需要1.7.10的版本,我就升到了1.7.10,因为项目没有用到Kotlin Gradle插件的最新API,所以1.7.10就够用了,不需要最新的完全支持版本。

我不升级到最新版还有一个重要的原因,那就是我将Kotlin Gradle插件升级到1.8.0时发现,kotlin-android-extensions这个插件没了,不再支持了!之前还只是警告这个插件已经被废弃,这下直接干没了。

flutter pytorch版本 flutter升级2.0_flutter升级_04

 点我查看官网说明

我最爱的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

flutter pytorch版本 flutter升级2.0_flutter pytorch版本_05

4、排除Kotlin部分依赖


如果你的项目报了 org.jetbrains.kotlin:kotlin-stdlib-jdk8 或者org.jetbrains.kotlin:kotlin-stdlib-jdk7这俩依赖的错误,但是你的项目并没有引用这依赖,那么在你的app/build.gradle中需要添加以下代码将这两个依赖排除

configurations.implementation {
    exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
    exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk7'
}

ok,修改到此,应该是没啥大问题了,如果你的项目还是编译不过去或者运行不起来,大概还是配置的问题,看看是不是还有其他第三方库或者插件要升级的,如果有遇到什么其他坑的,欢迎评论区留言,让更多人避避坑~