FVM(Flutter Version Management)은 Flutter SDK 버전들을 설치 및 관리할 수 있는 기능들을 제공하는 버전 관리(Version Management)이다.
FVM 개요
FVM(Flutter Version Management)은 Flutter SDK 버전을 참조하여 일관된 앱 빌드 환경을 사용하거나, 프로젝트별로 사용되는 Flutter SDK 버전이 다를 경우 각 프로젝트별로 Flutter SDK 버전을 따로 설정하여 사용할 수 있도록 지원하는 Flutter 버전 관리자이다.
FVM 독립형(Standalone) 설치
macOS
Homebrew 패키지 관리자를 사용하는 경우 Terminal에서 아래의 명령으로 FVM을 설치할 수 있다.
brew tap leoafarias/fvm
brerw install fvm
아래의 명령으로 FVM을 제거할 수 있다.
brew uninstall fvm
brew untap leoafarias/fvm
Windows
Chocolatey 패키지 관리자를 사용하는 경우 PowerShell에서 아래의 명령으로 FVM을 설치할 수 있다.
choco install fvm
Lunux
Homebrew 패키지 관리자를 사용하는 경우 Terminal에서 아래의 명령으로 FVM을 설치할 수 있다.
brew tap leoafarias/fvm
brerw install fvm
아래의 명령으로 FVM을 제거할 수 있다.
brew uninstall fvm
brew untap leoafarias/fvm
Pub package를 이용한 FVM 설치
Pub package를 이용하여 FVM을 설치할 수 있지만, FVM을 사용하여 전역 Flutter 설치를 관리할 계획이라면 독립형(Standalone)으로 설치하는 것이 좋다.
dart pub global activate fvm
FVM 사용을 위한 프로젝트 및 IDE 구성
프로젝트 구성
FVM은 선택한 버전의 캐시에 대한 심볼릭 링크(Symlink)를 프로젝트의 ./fvm/flutter_sdk
에 생성한다. 프로젝트의 .gitignore
에 아래의 내용을 추가해야 한다.
.fvm/flutter_sdk
FVM 구성
캐시 디렉터리(Cache Directory)
FVM_HOME
환경 변수를 설정하여 FVM 캐시 디렉터리를 지정할 수 있다. FVM_HOME
환경 변수를 지정하지 않을 경우 기본 FVM 경로가 사용된다. FVM 구성(config)에서 --cache-path
를 설정하여 디렉터리를 변경할 수도 있다.
구성(Config)
FVM에서 변경할 수 있는 구성(Config)들이 있으며, CLI(Command Line Interface)에서 설정한 모든 구성은 Sidekick(GUI, Graphic User Interface)과 호환된다.
다른 Flutter 저장소
FVM_GIT_CACHE
환경 변수를 설정하여 다른 Flutter 저장소, 포크 또는 로컬 캐시를 사용할 수 있다.
FVM 구성 확인
fvm config
Flutter SDK 버전이 저장될 위치는 아래와 같이 설정가능하며, 아무것도 지정하지 않을 경우 기본값이 사용된다.
fvm config --cache-path <CHAHE_PATH>
통합 개발 환경(IDE, Integrated Development Environment) 구성
VS Code
옵션 1 - 자동 전환(권장)
VS Code는 항상 모든 IDE 도구에 대하여 프로젝트 내에서 선택된 버전을 사용한다. Flutter SDK 경로를 지정하고, 검색 및 파일 감시에서 .fvm
경로를 제거한다. 프로젝트 내에 .vscode
폴더를 만든 다음 setting.json
파일을 만들고 아래의 내용을 추가한다.
.vscode/settings.json
{
"dart.flutterSdkPath": ".fvm/flutter_sdk",
// 검색에서 .fvm 파일들 제거
"search.exclude": {
"**/.fvm": true
},
// 파일 감시에서 .fvm 파일들 제거
"files.watcherExclude": {
"**/.fvm": true
}
}
프로젝트 루트 디렉터리에서 fvm use <원하는 버전>
을 실행한다. 올바르게 구성되면 VS Code에서 사용되는 버전으로 전환된다. 문제가 있는 경우 VS Code의 상태 표시줄에 있는 Flutter 버전 텍스트를 클릭하여 컴퓨터에 설치된 Flutter SDK들을 표시한다. 프로젝트 내의 .vscode
디렉터리를 확인한 다음 fvm 구성에 따라 자동으로 Flutter SDK를 선택하거나, fvm 캐시 디렉터리에서 Flutter SDK를 수동으로 선택할 수 있다.
옵션 2 - 모든 Flutter SDK 보기(수동 전환)
VS Code는 Flutter: Change SDK
를 사용하여 캐시 된 모든 Flutter SDK 간 전환할 수 있는 기능이 있다.
버전 디렉터리에 대한 경로를 지정하면 VS Code에서 FVM이 설치한 모든 Flutter SDK 버전들을 볼 수 있다.
{
"dart.flutterSdkPaths": ["/Users/$USER/fvm/versions"]
}
또는 선택한 버전만 지정할 수도 있다. 아래의 코드는 VS Code가 Flutter SDK의 안정적인 버전과 개발 버전만 표시하도록 한다.
{
"dart.flutterSdkPaths": [
"/Users/$USER/fvm/versions/stable",
"/Users/$USER/fvm/versions/dev"
]
}
현재 Flutter SDK 버전을 변경하려면 프로젝트를 열고 명령 팔레트에서 Flutter: Change SDK
를 입력하고 사용할 Flutter SDK 버전을 선택한다.
Android Studio
Settings... → Languages & Frameworks → Flutter로 이동하여 Flutter SDK path에 FVM 심볼릭 링크의 절대 경로를 입력한다.
Android Studio 내에서 Flutter SDK 루트 디렉터리를 무시하려면 .idea/workspace.xml
에 아래의 코드를 추가한다.
<component name="VcsManagerConfiguration">
<ignored-roots>
<path value="$PROJECT_DIR$/.fvm/flutter_sdk" />
</ignored-roots>
</component>
만일 작동하지 않는다면, Settings... → Editor → File Types → Ignored Files and Folders에 flutter_sdk
를 추가한다.
기본 명령어
releases
설치 가능한 모든 Flutter SDK 릴리즈를 출력한다.
fvm releases
install
Flutter SDK 버전을 설치한다. Flutter 릴리스 또는 채널을 설치할 수 있는 기능을 제공한다.
fvm install # 프로젝트 설정에서 찾은 Flutter SDK 버전 설치
fvm install <version> # 지정한 버전의 Flutter SDK 버전 설치
list
설치된 Flutter SDK 버전들을 출력한다. FVM에서 사용하는 캐시 디렉터리도 출력한다.
fvm list
use
프로젝트에서 사용하려는 Flutter SDK 버전을 지정한다. 버전이 존재하지 않으면 설치할 것인지 묻는 메시지가 나타난다.
fvm use <version>
새 프로젝트를 시작하고 fvm flutter create
를 사용할 계획이라면 --force
옵션을 사용해야 한다.
global
프로젝트 단위가 아닌 전역 Flutter SDK 버전을 지정한다.
fvm global <version>
doctor
환경 및 프로젝트 구성에 대한 정보를 출력한다.
fvm doctor
remove
지정한 Flutter SDK 버전을 제거한다. 해당 Flutter SDK 버전을 사용하는 모든 프로젝트에 영향을 미친다.
fvm remove <version>
Flutter 실행
대리 명령(Proxy Commands)
flutter
또는 dart
명령 앞에 fvm
을 추가하면 FVM으로 구성된 버전으로 명령을 실행할 수 있다.
Flutter
# flutter <command> 대신 아래의 명령으로 사용
fvm flutter <command>
Dart
# dart <command> 대신 아래의 명령으로 사용
fvm dart <command>
SDK 직접 호출
심볼릭 링크(.fvm/flutter_sdk
)를 사용하면 프로젝트에 구성된 버전이 동적으로 호출된다.
# flutter 실행
.fvm/flutter_sdk/bin/flutter run