fvm은 Flutter Version Managemet의 약자로, flutter SDK 버전을 관리해주는 툴이다.
node.js를 사용해본적이 있다면, nvm이라는 컨셉이랑 친숙할 것이다.
fvm은 nvm의 flutter 버전이라고 생각하면 쉽다.
Flutter SDK의 버전을 변경하는 것은 쉬운 일이 아니다.
특히 개발하는 도중이나, 이미 출시된 앱이라면 더욱 어렵다.
프로젝트가 특정 Flutter SDK 버전에 dependency를 가지고 있을 수도 있고,
새로운 버전은 늘 예상하지 못한 에러를 가져올 수 있기 때문이다.
이렇듯 이미 검증되고 출시된 앱이라면, 굳이 Flutter SDK 버전을 변경해서 side effect를 걱정하고 싶어하지 않는다.
<Error icons created by Freepik - Flaticon>
그러나 flutter는 정식 출시 된지 5년도 채 되지 않았다. 많은 변화가 빠르게 이뤄지고 있고, 사용자도 점점 많아지면서 계속해서 새로운 버전이 나오고 있다.
또한 open source라는 장점이 있기 때문에, flutter 내에 문제가 발견되면 언제든 수정 될 수 있다.
즉, 출시 된 앱이라고 해서 버전 매니징에 손 놓고 있는 것은 좋지 않다.
이런 상황에서, 손쉽게 flutter 버전을 변경하고 다시 원복할 수 있는 툴이 fvm이다.
자세한 내용은 공식 홈페이지를 참조하는 것이 제일 좋다.
(fvm 공식 홈페이지 : https://fvm.app/)
일단 dart와 flutter는 기본적으로 설치 되어 있다는 전제로 설명하겠다.
homebrew를 사용중이라면
brew tap leoafarias/fvm
brew install fvm
아니라면 pub package를 이용해서도 설치 할 수 있다.
dart pub global activate fvm
설치 후에는 path 설정을 해줘야한다.
~/.zshrc ~/.bashrc 에서 다음과 같은 방식으로 추가해주면 된다.
export PATH="$PATH":"$HOME/.pub-cache/bin"
path 설정이후에는 source
를적용하거나, 터미널을 재시작해야 반영됨을 잊지 말자.
FVM을 사용해서 Flutter SDK 버전을 변경해보자.
먼저 flutter 프로젝트 디렉토리로 이동한 다음, 아래 명령어를 입력해 SDK 버전을 변경한다.
fvm use {원하는 Flutter SDK 버전}
예를 들어 3.0 버전을 사용하고 싶다고 가정해보자.
그럼 먼저 다음과 같이 명령을 입력해 사용하고자하는 버전으로 변경한다.
이때 이미 설치 되어 있는 버전이 아니라면 설치 여부를 물어보게 된다.
설치에 동의하면 설치가 된다.
하지만 위 명령어를 실행하면 다음과 같은 메세지와 함께 설치가 실패할 것이다.
"3.0" 이라는 버전을 찾을 수 없다는 말인데, 여기서 {원하는 Flutter SDK 버전}을 입력할때는 정확한 이름을 사용해야한다.
먼저 다음과 같은 명령어를 통해 실제 나와 있는 버전 이름들을 파악한다.
확인해보면, 3.0이 아닌 3.0.0 이라는 이름의 버전이 있는 걸 확인 할 수 있다.
다시 fvm use 3.0.0
을 입력하면 정상적으로 원하는 동작이 실행된다.
fvm list
를 활용하면, 현재 fvm을 통해 설치되어 있는 flutter 버전들을 확인 할 수 있다.
프로젝트에 들어가 보면 .fvm 파일이 있을 것이다.
(안 보인다면 숨겨진 파일 보기를 사용해야한다. Mac에서는 command+shift+. 이다.)
.fvm 파일 안에는 fvm_config.json이라는 설정 파일과 flutter_sdk 라는 가상본 (윈도우의 바로가기랑 유사) 파일이 있을 것이다.
이 가상본 파일은 ~/fvm/version에 있는 flutter 버전을 바라보고 있다.
현재는 아까 3.0.0 버전을 설치했기 때문에, 3.0.0 버전 폴더과 동일하다.
하지만, 여기서 fvm use 3.4.0-17.2.pre
명령어를 통해 버전을 변경한다면 해당 가상본도 다른 폴더를 바라보게 된다.
~/fvm/version 디렉토리로 가보면 해당 sdk 버전들이 있는 것을 확인 할 수 있다.
다음에 보면서 열심히 설치해 보겠습니다!