从Flutter2升级到Flutter3

前言

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

升级 Flutter 版本

查看当前版本

flutter --version

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

flutter upgrade

然后查看你的版本，如果是3开头就可以了

flutter --version

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

compileSdkVersion 报错

修改android/app/build.gradle文件中compileSdkVersion为33(我的提示，具体改成多少看你编译时报错提示)

修改android/gradle/wrapper/gradle-wrapper.properties文件中distributionUrl为distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip

修改android/build.gradle文件中内容com.android.tools.build:gradle为classpath 'com.android.tools.build:gradle:7.1.2'

打开Android Studio的sdkManager更新

Warning: Mapping new ns xxx to old ns xxx

修改文件android/build.gradle

Copy
// 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配置

Copy
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

版本不匹配问题

Copy
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然后看新生成的文件，对应改一下