如何在不同的项目中使用相同设备上的两个flutter版本?

eivgtgni  于 2022-12-19  发布在  Flutter
关注(0)|答案(9)|浏览(253)

我有一个稳定的flutter通道SDK,位于c:\flutter。它在系统环境变量中设置为Flutter的默认路径。
在IntelliJ中为我们的客户创建新的Flutter项目时,我将使用此路径c:\flutter。
我还在c:\flutter_master下载了Flutter主通道,我需要在另一个项目中使用这个flutter SDK(主通道)。
我怎样才能在同一个设备上为不同的项目正确地使用两个flutter版本,而不用每次都使用系统环境变量?

ghg1uchk

ghg1uchk1#

首先,你需要下载所有你希望能够本地切换的flutter SDK,并为它创建别名。这允许你通过命令行或终端使用多个版本的SDK,就像你使用任何flutter命令一样。如果你想在IDE中使用这些不同版本的SDK,您需要将SDK路径添加到IDE的设置中。2您可以在下面找到添加vscode路径的步骤。3下面的答案将帮助您设置不同版本的SDK,无论您使用的是Windows、Linux还是Mac。

在Mac/Linux上创建别名

这就是我在M1 Mac上的做法
我在Documents文件夹中下载了不同版本的flutter SDK,该文件夹位于$HOME/Documents

为了通过终端访问合适版本的flutter,我们需要创建别名,可以将别名看作是通过终端访问SDK的快捷方式。
1.要创建别名,您需要在$HOME目录中创建.bash_aliases文件
你可以通过终端运行

nano ~/.bash_aliases

将这些别名与相应的路径粘贴到文件中。

alias flutterd='~/Documents/flutter_dev/bin/flutter'
alias flutterm='~/Documents/flutter_master/bin/flutter'
alias flutterb='~/Documents/flutter_beta/bin/flutter'

请注意,您可以根据需要命名别名。
我用过这个名字

  • flutterd指向Flutter_偏差
  • flutterm指向Flutter_主控制器
  • flutterb指向Flutter_beta

这意味着当您在终端中键入flutterd时,它将使用位于~/Documents/flutter_dev/bin/flutter和的SDK,分别用于其余别名。
(Hit ctrl + x并回车保存并退出)
1.最后,您需要将其添加到shell文件中

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

基本上就是rc文件
$HOME/.bashrc(如果使用的是bash)
$HOME/.zshrc文件(如果使用zsh)
如果你不确定,那么在你的终端输入echo $SHELL告诉你你使用的是哪个shell。这个文件和你第一次安装flutter sdk时添加的路径是一样的。如果这个文件不存在,你可以创建它。
1.运行source $HOME/.<rc file>以刷新当前终端窗口。
现在,您可以通过在终端flutterm, flutterd等中键入别名进行验证,它将从相应的sdk响应。
您可以通过运行<alias name> doctor -v来验证这一点
例如,验证flutterd是否指向dev运行flutterd doctor -v
下面是我运行该命令时的输出

在Windows上创建别名

在Windows上,flutter SDK存储在C:/flutter_sdk

然后创建Alias文件夹,并创建与每个flutter SDK对应的批处理文件,每个批处理文件包含flutter SDK的路径

例如,flutterd.bat包含到dev sdk的路径

@echo off
C:\flutter_sdk\dev\bin\flutter %*

明智地命名您的批处理文件,因为您将从命令行使用它们。例如,我有一个名为flutterb.bat的批处理文件指向beta通道,因此要访问beta SDK,我将在命令行中使用flutterb,而不是flutter
最后,我们需要将alias文件夹添加到环境变量中,以便在整个Windows中可以访问它。
转到环境变量=〉用户变量=〉路径=〉编辑=〉新建

现在,您可以通过打开命令提示符并输入flutterb doctor来验证是否一切正常,它应该显示SDK指向beta

向VScode添加多个SDK版本

现在,要在vscode中访问SDK的适当版本,您需要在设置中添加这些SDK路径。

  • 在Vscode设置(代码-〉首选项-〉设置)中搜索sdk path
  • 在Flutter SDK路径下添加所有路径

  • 现在,当你打开一个flutter项目时,你可以通过点击底部的flutter版本来选择你想要的版本

  • 它会提示您选择要使用的SDK

请注意,如果您正在从vscode更改版本,您还应该从pubspec.yaml中右上角的图标运行flutter pub get,以便源代码根据所选的sdk进行更新。您可以通过查看源代码的类定义来确认这一点。

mwngjboj

mwngjboj2#

如果您使用VSCode,则可以为每个工作区指定Flutter SDK。您需要:
1.将flutter repo克隆到新文件夹:

mkdir ~/flutter_dev
cd ~/flutter_dev
git clone https://github.com/flutter/flutter.git .

1.使用以下内容创建.vscode/settings.json

{
  "dart.flutterSdkPath": "/Users/youruser/flutter_dev"
}

1.重新启动VSCode,就可以开始了。
更多信息请参见Dart Code - Quickly Switching Between SDK Versions

k3bvogb1

k3bvogb13#

根据Flutter回购协议 iqbalmineraltown 的这个问题有答案:
您可能希望根据需要下载多个版本,因为每个Flutter SDK版本都与特定的Dart SDK紧密耦合。
您可以为每个项目设置Flutter版本,如果您使用VS代码,iqbalmineraltown 会突出显示一种方法:
如果您使用的是VSCode,您可以将flutter SDK的多个版本下载到不同的路径中,并使用Dart&Flutter Plugin在它们之间快速切换您可以通过为每个工作区提供默认SDK路径来为每个项目设置默认SDK。因此,当您打开项目时,VSCode将使用您为该项目指定的版本。

inkz8wg9

inkz8wg94#

如果您使用的是Android Studio,您可以从菜单文件=〉设置=〉语言和框架=〉Flutter为每个项目设置不同版本的Flutter:

要从命令行运行flutter/dart以获得多个flutter版本,您可以按照本文https://medium.com/@sarbagyastha/using-two-or-more-different-versions-of-flutter-in-single-machine-484293c2a7ff

vbopmzt1

vbopmzt15#

现在你可以使用“FVM”,它是Flutter版本管理,一个简单的CLI来管理每个项目的Flutter SDK版本。
1您可以通过以下命令使用它

pub global activate fvm

2之后,你可以安装任何版本,你想要像

fvm install stable

fvm install 'flutter version'

它将安装在

/Users/'username'/fvm/versions/

3切换版本:

fvm use 'flutter version'

有关详细信息,请访问FVM.app

sg24os4d

sg24os4d6#

您可以简单地重命名文件夹,而不必每次都使用系统环境变量。
1.假设您在flutter文件夹下下载了Flutter 2.0.5,在flutter_2.2.2文件夹下下载了2.2.2,将flutter添加到环境路径中,如C:\src\flutter。
1.无论何时需要2.2.2版本,请将flutter_2.2.2重命名为flutter并将flutter重命名为flutter_2.0.5.

oug3syen

oug3syen7#

我建议在here上使用本教程,我对Mac做了一些更改:

适用于基于UNIX/Mac的操作系统用户

编辑$HOME/.bashrc(对我来说,它是$HOME/.bash_profile在Mac上)文件,并添加此行(如果它不存在)。

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

1.创建和编辑$HOME/.bash_aliases,并根据需要添加别名。

alias flutter2='~/development/sdks/flutter2/bin/flutter'
alias flutter='~/development/sdks/flutter/bin/flutter'

使用同样的技术,我把flutter2flutter1分开安装,因为在一些项目中我需要两个版本,而在旧的项目中需要版本1。
现在打开VSCode中的特定项目,然后打开command palette (on Mac command was Command + Shift + P)并搜索flutter sdk。x1c 0d1x
现在选择Auto-Detect,这将在项目.vscode/settings.json的根目录下创建一个新文件。

打开这个文件,放置你想要使用的flutter版本的路径,如下所示:

{
  "dart.flutterSdkPath": "/Users/imran/flutter2"
}

请记住运行flutter2 --doctor,以解决任何问题

在设置flutter2时,我遇到了一个问题,这里是I am getting error "cmdline-tools component is missing" after installing Flutter and Android Studio... I added the Android SDK. How can I solve them?

h43kikqp

h43kikqp8#

您可以使用FVM来管理flutter https://fvm.app的版本

moiiocjp

moiiocjp9#

安装几个版本的SDK并调整项目特定的IDE SDK设置似乎是合理的,但我更喜欢命令行工具,当你调用flutter命令时,它总是调用路径上的一个。
这篇文章中的别名解决方案mentioned对我来说是比较可取的,但是在使用它的时候,我经常忘记用别名调用(比如flutterb),导致调用错误的flutter版本,在不小心这样做之后,我通常也需要做一个flutter clean
受aliassolution的启发,我在项目的根文件夹中添加了一个flutter.bat文件,它包含以下行

@echo off
C:\SDK\flutter1\bin\flutter %*

正如你可能猜到的,这个位置属于这个项目使用的特定flutter安装,它不是路径上的版本,但是因为我从项目的根文件夹调用所有的flutter命令,我的终端会话首先看到这个flutter,它使用这个版本,而不是路径上的全局版本,你可以通过第一次调用flutter doctor来确认这一点。

  • -请注意,这是为了对每个项目使用常量版本,而不是在同一个项目上尝试多个版本。对于这种用例,您可以将其与别名解决方案结合使用。*
  • -另请注意,这是Windows解决方案。*

相关问题