flutter版本升级时遇到的问题解决

flutter多版本切换

注:无需修改环境变量,也不用重启AndroidStudio

mac具体flutter版本切换操作步骤:

1、项目clean然后切换自己需要的分支

2、删除文件夹flutter目录文件(这里的flutter是原来的符号连接)

3、ln -s flutter3.7.7 flutter  (在指定目录下执行该命令会生成新的符号连接)

4、flutter doctor -v     (看看版本是否对应)

5、pub get  然后运行项目即可

 

使用符号连接进行切换,配置符号连接参考:如何在Mac上创建和使用符号链接(也称为符号链接)
参考链接:https://blog.csdn.net/qq_33220645/article/details/127012269

注:旧项目谨慎删除pubspec-lock文件

Flutter项目升级flutter

        一个项目代码全部是用flutter写的,在升级flutter之前,项目时可以正常运行的,升级以后惨了,跑不起来了了。解决方案如下:

1.  删除项目中.idea文件夹

2.  删除项目中的build文件夹

3.  删除项目中的pubspec-lock文件

4.  执行命令flutter clean

5.  执行命令flutter pub get

 原生项目集成flutter插件升级flutter

原生项目集成flutter这个解决起来要更麻烦些, 大体思路分成两步

第一步:让flutter插件所在的runner.workspace先成功运行,第二步:原生项目所在的workspace能够执行。

第一步需要进行的操作:

1,删除项目中.idea文件夹

2,删除项目中的build文件夹

3,删除项目中的pubspec-lock文件

4,flutter clean 执行下

5,flutter pub upgrade 执行下

6,检查podfile中,以及project中最低版本号是否是大于等于11.0

7,执行pod deintegrate

8,执行 pod install

9,运行一下runner.workspace如果能够成功运行则第一步已经成功了

第二步:

1,删除pods文件件

2,删除pod.lock文件

3,检查podfile中,以及project中最低版本号是否是大于等于11.0

4,执行pod deintegrate

5,执行 pod install

6,运行原生项目对应的workspace,如果可运行成功,flutter升级的问题就完美解决了。

Flutter工程代码管理 pubspec.yaml、.pubcache 与 pubspec.lock文件的使用注意事项

简单介绍总结下这三个文件的作用

pubspec.yaml: Dart包的配置文件,管理 Flutter 工程代码的依赖,比如第三方库、Dart 运行环境、Flutter SDK 版本都可以通过它来进行统一管理。所以,pubspec.yaml 与 iOS 中的 Podfile 在功能上是类似的。

.pubcache: 用于管理Pub的本地Package 存。使用`pub cache add`命令将新的 Package 添加至缓存。也可以使用`pub cache repair`命令将Package从缓存中清除并重新安装。

pubspec.lock: 自动创建 pubspec.lock 文件,pubspec.lock 文件的作用类似 iOS 的 Podfile.lock文件,用于记录当前状态下实际安装的各个直接依赖、间接依赖的包的具体来源和版本号。

 

pubspec.yaml的使用

打开工程,找到pubspec.yaml文件并打开,如图:

flutter版本升级时遇到的问题解决_第1张图片

以工程为例,依赖第三方库的设置方式为fluttertoast ^3.1.0^的意思为大于等于3.1.0小于4.0.0,若需要设置指定版本,最佳的设置方式为fluttertoast 3.1.0,即指定固定版本,无论使用pub get还是pub upgrade都不能让其版本变更。

##pub getpub upgrade的使用 pub get(类似iOS里的pod install) 和 pub upgrade (类似iOS里的pod update)之间的主要区别是:如果lock文件已经存在,pub get使用指定的依赖的版本或者.pubcache里的缓存版本。如果一个依赖项没有被指定,pub upgrade将获得满足所有版本约束的那个依赖项的最新版本。这是pub getpub upgrade之间的主要区别,pub upgrade它总是尝试获取所有依赖项的最新版本。一般来讲,不提倡使用pub upgrade命令,因为使用新版本的第三方库可能会带来不可预知的问题,譬如新版本API的变更、编译报错以及app发布后上线后崩溃率增加(也有可能减少)等。不得不使用pub upgrade的时候,确保只更改所需要更改的依赖库或者插件代码。

 pubspec.lock的使用

pubspec.lock在多人开发协作中有很重要的作用,譬如开发人员a使用了新的依赖库或者更新了插件代码后, pubspec.lock会变更相应的版本号或者commit号,将pubspec.lock上传后,开发人员b拉取新到新的pubspec.lock文件后,使用Pub get命令就会自动获取新的依赖库或者更新了插件代码。如果不上传pubspec.lock文件,开发人员b可能就会碰到依赖库版本不一致、编译报错的问题。

 开发中常见的问题

开发人员经常在开发过程中碰到使用pub get命令后没有拉取到最新代码的问题,所以不得不使用pub upgrade命令,如上文所述,不提倡使用pub upgrade命令。那怎样解决这个问题呢?之所以产生这个问题,是因为依据缓存优先的策略,有缓存则优先使用缓存,在pubspec.yaml和pubspec.lock没有改变的情况下,git工具会从缓存文件里寻找最近的代码导入到工程,并不会拉取依赖库或者插件最新代码。解决办法主要有以下两种: 1.在pubspec.yaml中使用commit号,pub get命令拉取到所需要的代码(若不想使用commit号,就想使用分支的话,可恢复pubspec.yaml文件)。此时pubspec.lock文件也有相应的变更,然后上传pubspec.lock文件。如下图所示:

flutter版本升级时遇到的问题解决_第2张图片

拉取代码后的pubspec.lock文件也会有相应变更,如图:

flutter版本升级时遇到的问题解决_第3张图片

2.找到.pubcache文件,再找到对应的依赖库文件,然后删除相应的依赖库或者插件。再使用pub get命令,因为没有缓存,git工具会拉取依赖库或者插件指定分支上的最新代码。提倡使用第一种方法,简单方便。

3.想缓存指定版本号的三方库,可以用dependency_overrides,让项目强制缓存指定版本号的三方库,当缓存到指定版本号的三方库后,在删除,如下例子:

dependency_overrides:
  firebase_core_platform_interface: 4.4.1

注:查找三方库在电脑中的位置

flutter版本升级时遇到的问题解决_第4张图片

你可能感兴趣的:(flutter,flutter)