Featured image of post 从Flutter2升级到Flutter3

从Flutter2升级到Flutter3

有梦记的升级

前言

花了一天的时间, 把有梦记的架构从Flutter2升级到Flutter3, 总结一下踩过的坑

升级 Flutter 版本

  • 查看当前版本

    • flutter --version
  • 首先就是升级你的Flutter版本, 这个操作很简单, 但是前提要可以翻墙

    • flutter upgrade
  • 然后查看你的版本, 如果是3开头就可以了

    • flutter --version
  • 接下来如果很幸运的话, 直接点击调试能运行的话, 你就不用接着往下看了

compileSdkVersion 报错

  • 修改android/app/build.gradle文件中compileSdkVersion33(我的提示,具体改成多少看你编译时报错提示)
  • 修改android/gradle/wrapper/gradle-wrapper.properties文件中distributionUrldistributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
  • 修改android/build.gradle文件中内容com.android.tools.build:gradleclasspath 'com.android.tools.build:gradle:7.1.2'
  • 打开Android StudiosdkManager更新

Warning: Mapping new ns xxx to old ns xxx

  • 修改文件android/build.gradle
// http://maven.aliyun.com/nexus/content/groups/public
// 修改为:
https://maven.aliyun.com/repository/public

Error: No named parameter with the name ‘maxLengthEnforced’.

  • 类似这种的报错, 都是升级了Flutter旧代码不兼容
  • 找到对应的包, 一个一个升级, 很多Sdk得去看文档, 很多签名方法都会变

No signature of method: .android() is applicable for argument types. Exception in build.gradle (app)

  • 删除android/app/build.gradle文件中的useProguard配置
android {
    buildTypes {

        release {
            signingConfig signingConfigs.release

            minifyEnabled true
            // 删除这一行
            // useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
}

w: Runtime JAR files in the classpath should have the same version. These files were found in the classpat

  • 版本不匹配问题
buildscript {
    // 修改这里的版本
    ext.kotlin_version = '1.7.10'
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://repo1.maven.org/maven2/' }
    }

    dependencies {
        // 修改这里的版本
        classpath 'com.android.tools.build:gradle:7.2.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
  • 具体改成什么版本, 可以自己flutter new app然后看新生成的文件, 对应改一下
本作品采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。