前言
花了一天的时间, 把有梦记的架构从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
// 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
然后看新生成的文件, 对应改一下