美文网首页
flutter项目从2.0升级到3.0编译运行报错踩坑

flutter项目从2.0升级到3.0编译运行报错踩坑

作者: YannChee | 来源:发表于2022-06-14 18:47 被阅读0次

    上个月官方推出了fluter3.0,直接支持MacOS的M1芯片,我就升级到了最新flutter版本.但是项目基本都是flutter2.0的环境,升级flutter后,打开项目几乎全红色的报错,好几百个报错
    报错看似很多,其实编译器都有智能提醒,跟着提示,一步步处理,其实问题都不大
    先把项目依赖的第三方库都更新到最新版本;接着手动解决报错;
    比较坑爹的是fluter3.0把flutter2.0标记的过期的属性直接干掉了,导致编译器无法智能提示错误修复,只能查看源码,手动改了,所以flutter2.0日常开发中标记过期的属性方法不要继续使用了,及时的换成最新的,否则SDK升级时很难受.

    花了几个小时时间把旧版本项目报错全部解决后,

    运行安卓真机,又出现了编译运行报错,简单记录下踩坑过程:


    不过命令行给出了提示 Your project requires a higher compileSdkVersion.
    需要修改Android工程下的android/app/build.gradle文件配置



    把compileSdkVersion 的值由 30 改成 31


    然后重新编译运行,此时报错变了,提示Your project requires a newer version of the Kotlin Gradle plugin; 需要修改android/build.gradle文件里ext.kotlin_version的值为最新版本


    image.png

    Kotlin官网查询,支持多平台的Kotlin最新版本是1.7.0

    ext.kotlin_version 由1.3.50 改成 1.7.0


    重新运行项目,报错变成了Kotlin的 gradle插件版本 跟flutter sdk的gradle版本不匹配,当前的gradle版本低了

    所以解决办法是: 要么是升级gradle版本,要么降低kotlin版本

    网上有人给出的解决办法是:

    在android\gradle\wrapper\gradle-wrapper.properties 找到 distributionUrl=https://services.gradle.org/distributions/gradle-5.6.2-all.zip,版本号改大。例如目前最新是 7.2

    但是我不赞成这个办法,因为flutter SDK内置了gradle环境,;而且从安卓项目build.gradle文件可以看到

    apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
    

    它是从flutter SDK路径 packages/flutter_tools/gradle/flutter.gradle 下获取的gradle版本文件;如果手动修改成别的版本将来可能存在未知的问题

    由于flutter SDK是最新的,同时Kotlin也是在不断更新迭代的,所以我猜测是Kotlin 版本太高导致,所以我决定稍微降低一点Kotlin版本

    在Kotlin官网查询版本号,除了1.7.0外,最新版本是1.6.20


    把Kotlin 版本号改成1.6.20


    重新编译运行,成功!


    其它问题:
    在最一步运行时候,如果你同时用VSCode和Android Studio 同时打开和运行过项目,编译运行可能会报错 Cannot lock Java compile cache as it has already been locked by this process. 提到javaCompile.lock之类的等
    解决办法是 javaCompile.lock删掉,然后打开macOS 的活动监视器,关闭所有java进程后,重新运行项目即可

    相关文章

      网友评论

          本文标题:flutter项目从2.0升级到3.0编译运行报错踩坑

          本文链接:https://www.haomeiwen.com/subject/repzmrtx.html