Mac使用fvm管理;使用Sidekick管理多个工程flutter版本。

2,124 阅读2分钟

首先,这是在没有网络问题的前提下。

查看当前所有的flutter 稳定版 stable,查看flutter和dart的对应版本

flutter.cn/docs/develo…

image.png

flutter项目查看当前依赖三方库的版本和可升级版本

flutter pub outdated

image.png


一、安装和卸载

卸载

  • brew uninstall fvm
  • brew untap leoafarias/fvm

安装

  • brew tap leoafarias/fvm
  • brew install fvm

安装的时候,如果失败,网络问题很大概率。这个哈哈哈哈,自行解决。

多换几个点。

当我们安装成功,这个路径应该存在的,/Users/你的用户名/fvm ,能看到有一个fvm的文件夹。此时,/Users/你的用户名/fvm/versions 路径下就是存放你的各种flutter sdk 版本。

如果是第一次使用fvm,流程大概就是:

  • 1、安装fvm

  • 2、配置下环境变量

  • 3、install 几个flutter的版本

  • 4、指定一个全局的flutter版本

  • 5、配置下vscode或者android studio

  • 6、验证使用fvm 切换flutter版本,实现给指定工程配置指定flutter版本

查看fvm的版本 (验证是否安装成功)

fvm --version

fvm --version
2.4.1

注意,这是fvm的版本,不是flutter版本。

配置环境变量

编辑~/.bash_profile
如果是zsh,编辑~/.zshrc

比如在.zshrc里添加


# flutter sdk
export FVM_HOME="$HOME/fvm"
$FVM_HOME/default/bin:$PATH"


# dart sdk
export PATH=${PATH}:~/fvm/default/bin/cache/dart-sdk/bin
export PATH=${PATH}:~/.pub-cache/bin

保存.zshrc 的修改,然后 source ~/.zshrc 一下使其生效。

在本机终端操作完,重启一下android studio。或者android studio终端也执行一下source。

查看当前fvm安装的flutter版本

fvm list

fvm list

No SDKs have been installed yet. Flutter. SDKs installed outside of fvm 
will not be displayed.

这么提示是因为还没有安装,安装一个就好了

如果你有安装多个,看到会是类似这样

image.png

安装几个flutetr版本,然后指定一个全局的flutter版本。

要指定全局的,才在fvm文件目录下产生一个 default 的文件夹。

使用 fvm install 安装指定 flutter 版本

比如

fvm install 3.0.0

fvm install 3.0.0
Flutter "3.0.0" is not installed.

Installing version: 3.0.0...

安装好之后,用户/.fvm 目录下,就会有flutter的版本。

image.png

本身是没有 default 这个文件夹,这个文件夹是在你执行了 fvm global 3.0.0 才有的。按道理,设置flutter user x.x.x 估计也有。

如果install安装失败,也可以手动安装flutter版本到fvm

比如通过fvm install x.x.x 失败,也可以手动下载安装。

flutter.cn/docs/develo…

先下载你要版本,比如到这个目录下

/Users/你的用户名/.fvm/versions

新一个文件,名字为你的flutter版本号,比如3.10.6

然后把这个下载3.10.6的解压放在刚才新建的3.10.6文件下

然后通过 fvm list 验证一下

三、使用一下

在vs code 使用

说明,我们指定全局3.x的flutter的版本,然后创建一个项目,接着切换到一个2.x的项目。(比如新建的项目范围是sdk: '>=2.19.6 <3.0.0',我们可以切换到2.10.5,在范围之外,用来验证是否切换成功)

一开始需要指定一下flutter sdk的位置,(fvm)

image.png

image.png

点击 locate sdk ,选择fvm选的default下的bin文件夹。

image.png

然后即可创建项目。

使用fvm切换版本

在刚进入项目,没有任何fvm命令之前,项目里面是不存在.fvm 这个文件夹的。

但是当我们使用比如 fvm use 2.10.5,会发现多了一个.fvm 文件夹

当我们切换flutter版本之后,记得及时 command+shift+p,执行Developer:Reload Window一下

image.png

然后 pubspec.yaml 文件拉取下,记得记得记得

image.png

却换2.10.5

reload窗口之后,可能发现不能切换(运行不报错),我们需要在添加一份配json文件

在项目根目录下新建一个 .vscode 的文件夹。然后建一个settings.json文件。

.vscode/settings.json里面编写如下

"dart.flutterSdkPath": ".fvm/flutter_sdk", 很重要,不能忘!

{
  "dart.flutterSdkPath": ".fvm/flutter_sdk",
  // Remove .fvm files from search
  "search.exclude": {
    "**/.fvm": true
  },
  // Remove from file watching
  "files.watcherExclude": {
    "**/.fvm": true
  }
}

然后 pubspec.yaml 文件拉取下.

发现报错了,代表切换2.10.5 成功,

image.png

2.10.5对应的dart版本是 2.16.2,所以报错

image.png

题外话

不能通过 flutter --version 来验证是否切换成功,这个不准。

在Androud studio使用fvm

如果是使用android stuio来切换版本。

查看当前flutter项目使用的flutter和dart版本

flutter --version

1、fvm use 版本号 切换 2、在设置项,对应图上地方修改,下拉修改flutter版本,然后记得 保存 一下

比如你想选2.10.5版本,那就指定到2.10.5版本 image.png

3、到 .idea/workspace.xml添加内容

image.png

<!--  fvm结合使用,作用是不到项目下的.fvm 选择sdk-->
  <component name="VcsManagerConfiguration">
    <ignored-roots>
      <path value="$PROJECT_DIR$/.fvm/flutter_sdk" />
    </ignored-roots>
  </component>

发现也报错了。切换成功

image.png

至此,fvm的安装,以及在vs code和android studio的切换版本,完成。

(不要通过 flutter --version 验证,这个不准确的)


fvm删除指定版本的flutter

fvm remove 2.0.0

fvm remove 2.2.0
Removing 2.2.0...
2.2.0 removed.

Sidekick 应用 管理不同程序的flutter版本

下载地址:github.com/fluttertool…

安装下载,映入眼帘的是你当前所有的flutter版本

image.png

这玩意。还能切换成中文。

这个就不具体说了。

怎么管理多个项目的,指定不同的flutter版本呢?

image.png

image.png

image.png

你以为这就结束了?

快捷切换,快捷测试

image.png

大秀一场

flutter pub get 走一个

3.10.6下 image.png

2.10.5下

image.png

哇哦。

五、一些其他flutter命令

查看flutter的状态,查看环境配置是否有问题

flutter doctor 

清除缓存

futter clean 清除缓存

查看flutter 状态的详细信息

flutter doctor -v

打包安卓包

flutter build apk 打包安卓包

打包苹果ipa

flutter build ios 打包苹果ipa

运行项目 默认--debug

flutter run

运行线上测试包

flutter run --profile

运行线上包

flutter run --release

查看flutter 的所有分支

flutter channel

切换到具体的分支

flutter channel stable

后记

Git 忽略 `fvm/flutter_sdk

.fvm/flutter_sdk