注:无需修改环境变量,也不用重启AndroidStudio
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
一个项目代码全部是用flutter写的,在升级flutter之前,项目时可以正常运行的,升级以后惨了,跑不起来了了。解决方案如下:
1. 删除项目中.idea文件夹
2. 删除项目中的build文件夹
3. 删除项目中的pubspec-lock文件
4. 执行命令flutter clean
5. 执行命令flutter pub get
原生项目集成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升级的问题就完美解决了。
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文件并打开,如图:
以工程为例,依赖第三方库的设置方式为fluttertoast ^3.1.0
,^
的意思为大于等于3.1.0小于4.0.0,若需要设置指定版本,最佳的设置方式为fluttertoast 3.1.0
,即指定固定版本,无论使用pub get
还是pub upgrade
都不能让其版本变更。
##pub get
和pub upgrade
的使用 pub get
(类似iOS里的pod install) 和 pub upgrade
(类似iOS里的pod update)之间的主要区别是:如果lock文件已经存在,pub get
使用指定的依赖的版本或者.pubcache
里的缓存版本。如果一个依赖项没有被指定,pub upgrade
将获得满足所有版本约束的那个依赖项的最新版本。这是pub get
和pub 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.yam
l和pubspec.lock
没有改变的情况下,git工具会从缓存文件里寻找最近的代码导入到工程,并不会拉取依赖库或者插件最新代码。解决办法主要有以下两种: 1.在pubspec.yaml
中使用commit号,pub get
命令拉取到所需要的代码(若不想使用commit号,就想使用分支的话,可恢复pubspec.yaml
文件)。此时pubspec.lock
文件也有相应的变更,然后上传pubspec.lock
文件。如下图所示:
拉取代码后的pubspec.lock
文件也会有相应变更,如图:
2.找到.pubcache
文件,再找到对应的依赖库文件,然后删除相应的依赖库或者插件。再使用pub get
命令,因为没有缓存,git工具会拉取依赖库或者插件指定分支上的最新代码。提倡使用第一种方法,简单方便。
3.想缓存指定版本号的三方库,可以用dependency_overrides,让项目强制缓存指定版本号的三方库,当缓存到指定版本号的三方库后,在删除,如下例子:
dependency_overrides:
firebase_core_platform_interface: 4.4.1
注:查找三方库在电脑中的位置