[MacOS] FVM을 사용하여 여러 Flutter 버전 설치 및 관리

[MacOS] FVM을 사용하여 여러 Flutter 버전 설치 및 관리

2023-08-05 hit count image

하나의 MacOS 머신에서 FVM(Flutter Version Management)을 사용하여 여러 버전의 Flutter를 설치하고 관리하는 방법에 대해서 알아봅시다.

개요

여러 Flutter 프로젝트를 하나의 머신(PC)에서 개발하다보면, 각각의 프로젝트에서 사용하는 Flutter 버전에 따라 개발 환경을 구축해야할 경우가 있습니다.

이때, 매번 Flutter를 지우고 해당 프로젝트에 필요한 Flutter 버전을 설치할 수는 없습니다. 이번 블로그 포스트에서는 FVM(Flutter Version Management)를 사용하여 하나의 머신에서 다양한 Flutter 버전을 설치하고 관리하는 방법에 대해서 알아보도록 하겠습니다.

FVM 설치

다음 명령어를 사용하여 FVM을 설치합니다.

brew tap leoafarias/fvm
brew install fvm

.zshrc 파일

FVM을 사용하여 Flutter의 버전을 관리하기 위해서는 .zshrc 파일을 수정할 필요가 있습니다. ~/.zshrc 파일을 열고 다음과 같은 내용을 추가합니다.

export PATH="$PATH:$HOME/.pub-cache/bin"
export PATH="$PATH:$HOME/fvm/default/bin"
alias flutter="fvm flutter"

FVM을 사용하여 설치한 Flutterfvm flutter 명령어로 사용할 수 있습니다. 이를 간단하게 하기 위해 alias flutter="fvm flutter"를 추가하여 Flutter 명령어를 fvm 키워드 없이 사용할 수 잇도록 하였습니다.

Flutter 버전 리스트

다음 명령어를 실행하여 FVM으로 설치 가능한 Flutter 버전을 확인할 수 있습니다.

fvm releases

그럼 다음과 같이 설치 가능한 Flutter의 버전 리스트를 확인할 수 있습니다.

...
Jun 8 23   │ 3.12.0
Jun 14 23  │ 3.10.5
Jun 21 23  │ 3.12.0-1.1.pre
Jul 12 23  │ 3.13.0-0.1.pre
--------------------------------------
Jul 12 23  │ 3.10.6            stable
--------------------------------------
--------------------------------------
Jul 19 23  │ 3.13.0-0.2.pre    beta
--------------------------------------

여러 Flutter 버전 설치

이번 블로그 포스트에서는 Flutter의 3.10.62.10.4 버전을 설치해 보도록 하겠습니다. 다음 명령어를 실행하여 Flutter의 3.10.62.10.4 버전을 설치합니다.

fvm install 3.10.6
fvm install 2.10.4

FlutterFVM을 사용하지 않고 설치한 적이 있는 경우, FVM을 사용하지 않고 설치한 Flutter를 삭제하고 위에 명령어를 사용하여 Flutter를 설치합니다.

rm -rf ~/development/flutter

fvm list

설치가 완료되었다면, 다음 명령어를 실행하여 설치된 Flutter 버전을 확인합니다.

fvm list

그럼 다음과 같이 FVM을 사용하여 설치한 Flutter의 버전을 확인할 수 있습니다.

3.10.6
2.10.4

flutter version

다음 명령어를 실행하면 현재 사용중인 Flutter 버전을 확인할 수 있습니다.

flutter --version

그럼 다음과 같이 현재 사용중인 버전을 확인할 수 있습니다.

Flutter 2.10.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision c860cba910 (1 year, 4 months ago) • 2022-03-25 00:23:12 -0500
Engine • revision 57d3bac3dd
Tools • Dart 2.16.2 • DevTools 2.9.2

설치한 Flutter 버전 사용하기

이제 FVM로 설치한 Flutter 버전을 사용하는 방법에 대해서 알아봅시다. 다음 명령어를 실행하면 Flutter3.10.6을 전역적으로 사용할 수 있습니다.

fvm global 3.10.6

다음 명령어를 사용하면 현재 프로젝트에만 적용할 수 있습니다.

fvm use 3.10.6

이 명령어를 실행하면, 명령어가 실행된 프로젝트(폴더)에 .fvm 폴더가 생성되고 fvm_config.json 파일과 flutter_sdk 폴더가 생성됩니다.

.fvm 폴더

fvm use를 사용하면 지정한 버전의 Flutter SDK.fvm 폴더에 설치됩니다. 하지만 이 SDKGit으로 관리할 필요가 없으므로, .gitignore 파일을 열고 다음과 같이 수정합니다.

.fvm/flutter_sdk

fvm use를 사용하여 지정한 Flutter의 버전이 fvm_config.json 파일에 기록됩니다. .fvm/fvm_config.json 파일을 열면 다음과 같은 내용을 확인할 수 있습니다.

{
  "flutterSdkVersion": "3.10.6",
  "flavors": {}
}

다른 개발자와 프로젝트의 Flutter 버전을 공유할 필요가 있으므로, 해당 파일은 Git에 관리하도록 커밋합니다.

다른 개발 환경에 FVM이 설치되어 있고, Flutter 프로젝트에 .fvm/fvm_config.json 파일이 존재하는 경우, 다음 명령어를 실행하여 해당 Flutter 프로젝트에 필요한 Flutter SDK를 설치할 수 있습니다.

fvm install

Flutter 버전 삭제하기

머신에서 더이상 사용하지 않는 Flutter 버전이 있는 경우, 다음 명령어를 사용하여 해당 버전을 제거할 수 있습니다.

fvm remove 2.10.4

삭제후, 다음 명령어를 실행하여 머신에 설치된 Flutter 버전을 확인합니다.

fvm list

그럼 다음과 같이 2.10.4 버전이 잘 삭제된 것을 확인할 수 있습니다.

Cache Directory:  /Users/deku/fvm/versions

3.10.6 (global)

VSCode

VSCode를 사용하는 개발자라면, .vscode/settings.json 파일을 열고 다음과 같이 수정합니다.

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

이와 같이 수정하면, VSCodeFlutter 프로젝트를 열었을 때, FVM으로 설치한 Flutter SDK를 자동으로 사용할 수 있습니다.

문제 해결

fvm global로 Flutter 버전 변경시

fvm globalFlutter 버전을 변경할 때, 다음과 같은 에러 메시지가 발생하는 경우가 있습니다.

Flutter "stable" has been set as global
However your "flutter" path current points to:
.
to use global Flutter SDK through FVM you should change it to:
/Users/{user_name}/fvm/default/bin

이 에러는 PATH가 제대로 설정되지 않아 발생하는 문제입니다. 이를 해결하기 위해서는 .zshrc 파일을 열고 다음 내용이 추가되었는지 확인합니다.

export PATH="$PATH:$HOME/fvm/default/bin"

flutter doctor 실행시

flutter doctor(fvm flutter doctor)를 실행했을 때, 다음과 같은 경고(warning)가 표시될 때가 있습니다.

[!] Flutter (Channel stable, 3.10.6, on macOS 13.3.1 22E772610a darwin-x64, locale ja-JP)
    ! Warning: `dart` on your path resolves to /usr/local/Cellar/dart/2.18.0/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/deku/fvm/versions/3.10.6. Consider adding /Users/deku/fvm/versions/3.10.6/bin to the front of your path.

이는 이전에 설치된 Dart와 충돌로 인한 문제입니다. 이를 해결하기 위해서는 다음 명령어를 실행하여 이전에 설치한 Dart를 제거합니다.

brew uninstall dart

완료

이것으로 FVM을 사용하여 동일한 머신에 다양한 Flutter 버전을 사용하는 방법에 대해서 알아보았습니다. 만약, 여러분도 다양한 Flutter 버전의 개발 환경이 필요한 경우 FVM를 사용하여 버전 관리를 해보시길 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

스무디 한 잔 마시며 끝내는 React Native 책을 출판한지 벌써 2년이 다되었네요.
이번에도 좋은 기회가 있어서 스무디 한 잔 마시며 끝내는 리액트 + TDD 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts