본문 바로가기
CODE/Flutter

[Flutter] Flutter도 이제 버전 관리하자 FVM (Window)

by Nuridal_class 2024. 11. 14.
728x90
728x90

대부분 Docker로 프로젝트를 관리하다 보니 사용할 일이 없었지만

사이드 프로젝트로 어플 하나만 하는데 굳이 Docker까지? 라는 생각이 들어 

버전 관리는 어떻게 하나 찾아보는데 검색하니 FVM이 있기에 이번이 기회에 포스팅을 해야겠다 결심했습니다.

 

 FVM이란?

Flutter Version Management 의 약자로 말 그대로 Flutter의 SDK 버전을 관리해 주는 Tool이라고 보면 됩니다.
그럼 어떻게 사용하는지 바로 알아보겠습니다.

 

FVM 사용방법 

Project > testapp 이란 폴더를 만들고 testapp 폴더안에서 FVM을 사용한다고 가정하겠습니다.

🚨선행 사항 부분 부터 말씀드리겠습니다.
Flutter: 최신버전 설치
Git: 최신버전 설치
Java: 11 설치
따라 하실 분들도 먼저 위에 설치들을 해주세요.

 

 1. 환경변수 작업

먼저 testapp 폴더 안에서 아래의 명령어를 수행해줍니다.
dart pub global activate fvm
그러면 아래와 같이 3.2.1 버전으로 설치가 되는 것을 볼 수 있습니다.
PS C:\Users\nuridal\Project\testapp> dart pub global activate fvm
Package fvm is currently active at version 3.2.1.
Downloading packages... . (1.2s)
> args 2.6.0 (was 2.5.0)
> async 2.12.0 (was 2.11.0)
> characters 1.3.1 (was 1.3.0)
  cli_completion 0.5.0 (0.5.1 available)
> clock 1.1.2 (was 1.1.1)
> collection 1.19.1 (was 1.18.0)
  dart_console 1.2.0 (4.1.1 available)
> ffi 2.1.3 (was 2.1.0)
> git 2.3.0 (was 2.2.1)
> http 1.2.2 (was 1.1.0)
> http_parser 4.1.1 (was 4.0.2)
  intl 0.18.1 (0.20.0 available)
> mason_logger 0.2.16 (was 0.2.14) (0.3.1 available)
> matcher 0.12.17 (was 0.12.16+1)
> path 1.9.1 (was 1.9.0)
> platform 3.1.6 (was 3.1.4)
> process 5.0.3 (was 5.0.2)
  pub_updater 0.4.0 (0.5.0 available)
> stack_trace 1.12.0 (was 1.11.1)
> test_api 0.7.3 (was 0.7.1)
> typed_data 1.4.0 (was 1.3.2)
+ web 1.1.0
> win32 5.8.0 (was 5.1.1)
Building package executables...
Built fvm:compile.
Built fvm:main.
Installed executable fvm.
Activated fvm 3.2.1.
다음은 환경변수를 작업해줘야 하는데
C:\Users\nuridal\AppData\Local\Pub\Cache\bin이 경로를 시스템 환경변수에 넣어줍니다.

그렇게 하면 쉘에서 fvm 명령어를 치면 잘 나오는 것을 확인할 수 있습니다.

 

 2. 원하는 버전 설치

다음은 프로젝트에 사용할 flutter 버전을 설치하면 되는데 저는 3.16.9 버전을 설치해보겠습니다.
fvm install [원하는 버전] : 버전 설치하기
fvm list : 설치 된 버전 목록 보기

 

설치를 하고 fvm list를 하게 되면 현재 fvm 폴더가 만들어지고 안에 설치된 버전들을 볼 수 있습니다.
PS C:\Users\nuridal\Project\testapp> fvm install 3.16.9
✓ Flutter SDK: SDK Version : 3.16.9 installed! (9.5s)
PS C:\Users\nuridal\Project\testapp> fvm list
Cache directory:  C:\Users\nuridal\fvm\versions
Directory Size: 1.94 GB

┌─────────┬─────────┬─────────────────┬──────────────┬──────────────┬────────┬───────┐
│ Version │ Channel │ Flutter Version │ Dart Version │ Release Date │ Global │ Local │
├─────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ 3.16.9  │         │ Need setup      │              │              │        │       │
├─────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ 3.13.9  │ stable  │ 3.13.9          │ 3.1.5        │ Oct 25, 2023 │        │       │
└─────────┴─────────┴─────────────────┴──────────────┴──────────────┴────────┴───────┘
아래는 만들어진 fvm 폴더의 내용을 가져온 내용입니다.
PS C:\Users\nuridal\fvm\versions> ls


    디렉터리: C:\Users\nuridal\fvm\versions


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----      2024-11-13   오후 1:55                3.13.9
d-----      2024-11-14   오후 1:11                3.16.9

 

 3. FVM 버전 적용하기

이젠 버전을 사용하려는 프로젝트 안에서 fvm에서 설치한 3.16.9 버전을 적용시켜 보겠습니다.
fvm use [설치한 버전]
설치 한 후에 다시 fvm list를 하면 전엔 Need setup 부분이 설치한 버전으로 잘 나오고
local 부분이 초록점으로 잘 적용이 된 것을 볼 수 있습니다.
🚥 여기에서 flutter create . 을 해야지 보이는 경로를 피할수 있지 않나요? 라는 질문이 있을 수 있는데
그렇게 해버리면 현재 Flutter는 최신버전으로 설치되어서 프로젝트가 세팅이 되기 때문에
예전 버전을 사용하는 거라면 충돌이 일어날 수 있기에 그 다음에 프로젝트를 생성하는 것을 추천한다.
PS C:\Users\nuridal\Project\testapp> fvm use 3.16.9

No pubspec.yaml detected in this directory
✔ Would you like to continue? · yes
Setting up Flutter SDK: 3.16.9

Checking Dart SDK version...
Downloading Dart SDK from Flutter engine ...
Expanding downloaded archive with PowerShell...
Building flutter tool...
Running pub upgrade...
Resolving dependencies... (2.1s)
Got dependencies.
Flutter 3.16.9 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 41456452f2 (10 months ago) • 2024-01-25 10:06:23 -0800
Engine • revision f40e976bed
Tools • Dart 3.2.6 • DevTools 2.28.5

✓ Flutter SDK: SDK Version : 3.16.9 is setup
[WARN] Project is not a git repository.
 But will set .gitignore as IDEs may use it,to determine what to index and display on searches,
You should add the fvm version directory ".fvm/" to .gitignore.
✔ Would you like to do that now? · yes
✓ Added .fvm/ to .gitignore

Skipping "pub get" because no pubspec.yaml found.

✓ Project now uses Flutter SDK : SDK Version : 3.16.9
PS C:\Users\nuridal\Project\testapp> fvm list
Cache directory:  C:\Users\nuridal\fvm\versions
Directory Size: 2.57 GB

┌─────────┬─────────┬─────────────────┬──────────────┬──────────────┬────────┬───────┐
│ Version │ Channel │ Flutter Version │ Dart Version │ Release Date │ Global │ Local │
├─────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ 3.16.9  │ stable  │ 3.16.9          │ 3.2.6        │ Jan 25, 2024 │        │ ●     │
├─────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ 3.13.9  │ stable  │ 3.13.9          │ 3.1.5        │ Oct 25, 2023 │        │       │
└─────────┴─────────┴─────────────────┴──────────────┴──────────────┴────────┴───────┘
이렇게 잘 따라왔으면 testApp 폴더 안에는 아래 사진처럼 폴더1개 파일2개가 생성될 것이다.

 

 4.  버전 적용한 프로젝트 만들기

이젠 flutter create . 로 현재 폴더에 flutter 프로젝트를 만들겠다 라는 명령어를 입력해주면 되는데
이때 중요한 점은 이제 모든 명령어 앞에 fvm을 먼저 붙히고 해야 하는 점이다
fvm flutter create .

...
fvm flutter pub add [필요한 패키지]
fvm flutter pub get
fvm flutter run
그렇게 하고 나면 flutter 프로젝트가 잘 되었는데 여기에서 .gitignore를 수정해줘야 한다.
왠지 모르지만 flutter의 기본 .gitignore가 적용이 안되고 있는 부분이다
(해결점을 아시는 분들은 댓글을 달아주세요!!)
아래처럼 추가를 해주면 됩니다. 이렇게 해야 git push를 할때 불필요한 정보들이 들어가지 않습니다.
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release

# FVM Version Cache
.fvm/
그런데 이때!! fvm flutter --version 처럼 fvm을 붙혀서 사용하면

Error: Unable to find git in your PATH.
이 에러가 뜨는 경우가 있는데 정말 삽질 많이 했지만 해결했다. 아래 포스팅과 같이 따라해주면 됩니다!
 

[Flutter error] Error: Unable to find git in your PATH.

개발을 할때 FVM을 사용을 해볼려고 했는데Flutter : 최신버전Git : 최신버전Java : 11이렇게 세가지를 설치하고 야물딱지게 헀는데 이건 뭐지..?? Error: Unable to find git in your PATH. 이런 오류가 뜨면서

nuridal-class.tistory.com


오늘은 Flutter 앱을 개발할 때 필요한 버전들이 있을텐데

FVM을 사용해서 버전관리를 하는 방법에 대해서 알아보았습니다.

그럼 조금이나마 도움이 되셨기를 바라면서!!

 

728x90
300x250