flutter项目环境升级二:从Flutter2.10.5升级到3.29.3

系统:windows
Android Studio:Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1
Flutter SDK: Flutter3.29.3
JDK: java 17
详细的AGP / Gradle / Kotlin / JDK版本兼容关系可以百度或者到官方文档查询,其他博主给的很详细。确认好想要的版本兼容

这位大哥有对照表

这位大哥有对照表

Flutter3.29.3环境更换

1.下载flutter sdk https://docs.flutter.dev/install/archive#windows
2.配置环境替换为flutter3.29.3
在这里插入图片描述
3.更改第三方库缓存路径(若C盘内存不够用可设置)
D盘新建文件flutter_pub_cache,
‘用户变量’或’系统变量‘中点击“新建”
环境变量:PUB_CACHE; 变量值:D:\flutter_pub_cache
在这里插入图片描述

打开终端窗口或在Android Studio Terminal窗口,运行:

flutter pub cache repair

或重新

flutter pub 
flutter get

切换成功后pub get后的插件会缓存到flutter_pub_cache目录下
在这里插入图片描述

4.更改.gradle文件目录(.gradle文件默认目录在c盘的Users目录下若C盘内存不够用可设置)
在D盘中新建文件夹.gradle
‘用户变量’或’系统变量‘中点击“新建”
环境变量:GRADLE_USER_HOME; 变量值:D:\android_config.gradle
在这里插入图片描述
重复flutter pub cache repairflutter pub 、flutter get

更改成功后编译相关文件会缓存在D:\android_config.gradle目录下

在这里插入图片描述在这里插入图片描述

pubspec.yaml中插件升级

  1. sdk版本切换
    在这里插入图片描述

  2. 运行命令 flutter pub outdated查看插件的当前版本、可升级版本、可解决版本及最新版本,对版本大概有个数
    在这里插入图片描述

  3. 运行命令:flutter pub upgrade,不要运行:flutter pub upgrade --major-versions它会升级到最新版本,可能破坏版本约束。

  4. 解决升级插件后的报错,替换新版本插件的调用方法,这里的报错需要一个个去解决。完成到这一步项目文件不报错了。

Gradle编译配置

flutter3.16以上,Flutter Gradle 插件的命令式应用已弃用

这位老哥给出了干净的gradle文件

  1. android/settings.gradle替换:
pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }()

    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

    repositories {
        maven { url 'https://maven.aliyun.com/repository/releases' }
        //    maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.ali
<think>我们正在处理一个关于将Flutter项目升级3.29.2版本的问题。根据提供的引用,特别是引用[3]中提到了从Flutter2.10.5升级3.29.3的经验,我们可以借鉴其步骤,但目标版本是3.29.2,所以类似。 步骤概述: 1. 确保Flutter环境安装正确,并且当前环境可以升级到指定版本。 2. 升级Flutter SDK到指定版本(3.29.2)。 3. 检查并更新项目中的依赖(插件)以确保兼容性。 4. 解决升级过程中可能出现的各种兼容性问题(如Android环境配置、插件之间的兼容性等)。 详细步骤: 1. **升级Flutter SDK到3.29.2** 首先,我们需要将本地的Flutter SDK升级3.29.2版本。可以通过以下命令: ```bash flutter channel stable # 确保在稳定通道(如果3.29.2在stable通道) flutter upgrade ``` 但是,`flutter upgrade`会升级到当前通道的最新版本,不一定是3.29.2。如果我们需要特定版本,可以切换到该版本对应的标签(tag): ```bash flutter version 3.29.2 ``` 注意:`flutter version`命令需要安装特定版本的SDK,如果本地没有,它会自动下载。 2. **检查Flutter环境** 运行`flutter doctor`,确保所有环境都配置正确(Android工具链、iOS工具链等)。修复所有问题。 3. **升级项目依赖** 在项目根目录下,运行: ```bash flutter pub upgrade ``` 这个命令会升级所有依赖到最新版本(根据pubspec.yaml的约束)。但是,我们可能需要手动调整一些依赖的版本以兼容Flutter 3.29.2。 4. **处理Android和iOS的构建配置** - **Android**: 检查`android/build.gradle`文件中的配置: - 确保Gradle插件版本和Gradle版本兼容。对于Flutter 3.29.2,通常需要AGP(Android Gradle Plugin)7.0以上,Gradle版本7.3以上。 - 在`android/gradle/wrapper/gradle-wrapper.properties`中,设置合适的Gradle版本,例如: ```gradle distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip ``` - 在`android/build.gradle`中,修改classpath: ```gradle classpath &#39;com.android.tools.build:gradle:7.3.0&#39; ``` 具体版本请参考官方文档或引用[3]中提到的版本对应关系。 - **iOS**: 如果升级后iOS构建失败,可能需要更新CocoaPods,并重新安装pod: ```bash sudo gem install cocoapods cd ios pod repo update pod install ``` 5. **解决依赖冲突** 根据引用[3],升级过程中可能会遇到插件与Flutter SDK不兼容、插件之间不兼容的问题。我们需要: - 运行项目,查看控制台报错。 - 根据报错信息,逐个解决。常见的做法是升级有问题的插件到兼容版本,或者暂时移除不兼容的插件直到找到解决方案。 6. **测试** 在升级完成后,进行全面的测试,确保应用在Android和iOS上运行正常。 注意:如果升级过程中遇到网络问题(如引用[2]中提到的依赖解析慢),可以配置国内镜像源(如阿里云)来加速。 引用[2]提供了修改Flutter项目中gradle构建脚本的镜像源的方法,我们可以参考: 修改`flutter.gradle`文件(位于Flutter SDK的packages/flutter_tools/gradle目录下)或者项目中的`android/build.gradle`文件,将仓库地址改为阿里云镜像。 在`android/build.gradle`中修改: ```gradle buildscript { repositories { // 使用阿里云镜像 maven { url &#39;https://maven.aliyun.com/repository/google&#39; } maven { url &#39;https://maven.aliyun.com/repository/jcenter&#39; } maven { url &#39;http://maven.aliyun.com/nexus/content/groups/public&#39; } } ... } ``` 但是,更推荐在项目的`build.gradle`中修改,因为修改SDK目录下的文件可能会在SDK升级后被覆盖。 另外,引用[1]提到了在遇到`pub upgrade`问题时,可以尝试切换通道并升级。但我们已经指定了版本,所以不需要切换通道,除非该版本不在stable通道。 如果我们的目标版本3.29.2在stable通道,那么使用`flutter channel stable`后,再使用`flutter version 3.29.2`即可。 如果遇到无法下载SDK的问题,可以考虑使用国内镜像(如Flutter社区镜像)设置环境变量。 总结步骤: 1. 升级Flutter SDK到3.29.2(使用`flutter version 3.29.2`)。 2. 运行`flutter doctor`修复环境问题。 3.项目目录下运行`flutter pub upgrade`升级依赖,如果遇到问题,手动调整pubspec.yaml中的依赖版本。 4. 更新Android和iOS的构建配置(Gradle、AGP、CocoaPods等)。 5. 解决可能出现的依赖冲突和构建错误(根据错误日志逐个解决)。 6. 测试应用。 注意:每个项目情况不同,可能需要处理特定的问题。引用[3]强调了版本兼容性和问题排查的重要性。 相关问题: 1. 如何回滚到之前的Flutter版本? 2. 升级Flutter后,如何解决插件不兼容的问题? 3.升级Flutter项目时,如何确保Android和iOS的构建配置正确?</think>要将Flutter项目升级到版本3.29.2,请按照以下系统化步骤操作,注意版本兼容性和常见问题的解决: ### 1. **升级Flutter SDK** ```bash # 切换到稳定通道(确保包含3.29.2flutter channel stable # 升级SDK到指定版本 flutter upgrade --force 3.29.2 # 验证版本 flutter --version ``` > 若下载缓慢,可配置国内镜像[^2]: > ```bash > export PUB_HOSTED_URL=https://pub.flutter-io.cn > export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn > ``` ### 2. **更新项目依赖** ```bash cd your_project_directory # 升级所有依赖 flutter pub upgrade --major-versions # 清除构建缓存 flutter clean ``` ### 3. **关键配置调整** #### **Android端** (`android/build.gradle`) ```gradle buildscript { ext { // 适配Flutter 3.29.2 kotlin_version = &#39;1.9.22&#39; // 最低要求1.9.0 agp_version = &#39;8.1.0&#39; // 兼容版本 } repositories { maven { url &#39;https://maven.aliyun.com/repository/google&#39; } // 国内加速[^2] } dependencies { classpath "com.android.tools.build:gradle:$agp_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` #### **iOS端** ```bash cd ios pod repo update # 更新CocoaPods仓库 pod install --repo-update ``` ### 4. **解决常见兼容性问题** - **插件冲突**:检查`pubspec.yaml`,确保所有插件支持Flutter 3.x: ```yaml dependencies: flutter_localizations: sdk: flutter # 显式指定兼容版本(示例) provider: ^6.1.1 # 最低支持3.29.2的版本 ``` - **Gradle版本**:在`android/gradle/wrapper/gradle-wrapper.properties`中设置: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip ``` - **Java/Kotlin版本**:确保Android Studio使用JDK 17+[^3] ### 5. **验证与测试** ```bash flutter doctor # 检查环境完整性 flutter run -d chrome # 测试Web端 flutter build apk --release # 构建Android包 ``` ### ⚠️ 关键注意事项 1. **版本兼容性**: 若插件报错,在[pub.dev](https://pub.dev)查询插件文档,确认其支持Flutter 3.29.2 2. **增量升级**: 大版本升级建议分阶段进行(如先升到3.10.x再至3.29.2)[^3] 3. **回滚方案**: 使用Git保存当前状态,升级失败时可回退: ```bash git add . git commit -m "Pre-upgrade snapshot" ``` > **典型错误处理**: > - `Resolving dependencies...`卡住:配置阿里云仓库[^2] > - `Java version mismatch`:升级Android Studio至2023.1+ > - `Plugin incompatible`:运行`flutter pub outdated`查看可升级版本 --- ### 相关问题 1. 如何检查现有Flutter项目3.29.2的兼容性? 2. 升级后iOS构建失败出现`Undefined symbol`错误如何解决? 3. Flutter 3.29.2相比3.0有哪些重大API变更需要适配? [^1]: 配置Flutter开发环境和解决升级问题 [^2]: 使用国内镜像加速依赖解析 [^3]: Flutter版本升级的兼容性处理方法
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值