플러터 버전 관리(FVM)는 플러터 개발자에게 여러 프로젝트에서 여러 플러터 SDK 버전을 관리하는 과정을 단순화하는 필수 도구입니다. 플러터가 자주 업데이트됨에 따라, 강력한 버전 관리 시스템을 갖추는 것은 프로젝트 안정성을 유지하는 데 매우 중요합니다. 이 포괄적인 가이드는 설치부터 고급 사용 시나리오까지 FVM에 대해 알아야 할 모든 것을 안내합니다.
플러터 애플리케이션을 개발하는 동안, API를 테스트하고 상호작용할 필요가 자주 있습니다. Apidog는 API 개발 및 테스트를 위한 포괄적인 기능 세트를 제공하는 Postman의 훌륭한 대안입니다.
왜 Apidog를 고려해야 할까요?
Apidog는 API 테스트를 더 효율적으로 만들기 위한 기능을 갖춘 간소화된 경험을 제공합니다:
- 올인원 플랫폼: API 문서, 디자인, 디버깅, 자동화 테스트 및 모킹을 하나의 도구에서
- 직관적인 인터페이스: 강력한 기능을 갖춘 사용자 친화적인 디자인
- 내장된 모의 서버: 코드를 작성하지 않고도 모의 API를 생성

4. 협업 기능: 동기화된 업데이트와 함께 실시간 팀 협업
5. OpenAPI 지원: OpenAPI 사양을 매끄럽게 가져오기 및 내보내기
6. 자동 생성된 문서: 아름답고 상호작용 가능한 API 문서를 자동으로 생성

7. 고급 테스트 기능: 강력한 스크립트를 사용하여 복잡한 테스트 시나리오 생성
왜 플러터 버전 관리가 필요한가
기술적인 세부 사항을 살펴보기 전에, FVM이 플러터 개발자에게 중요한 이유를 이해해 보겠습니다:
- 프로젝트별 플러터 버전: 서로 다른 프로젝트는 패키지 호환성이나 클라이언트 요구 사항에 따라 서로 다른 플러터 SDK 버전을 요구할 수 있습니다.
- 팀 일관성: 모든 팀원이 동일한 플러터 버전을 사용하도록 보장하여 "내 머신에서는 작동함" 문제를 없애줍니다.
- 손쉬운 SDK 전환: 시간 소모적인 재설치 없이 안정적인 버전, 베타 또는 개발 채널 간에 빠르게 전환.
- 다중 프로젝트 지원: 버전 충돌 없이 여러 프로젝트에서 동시에 작업.
- 신규 릴리스 테스트: 안정적인 프로덕션 프로젝트에 영향을 주지 않고 새로운 플러터 버전을 안전하게 실험.
설치
시스템에 FVM을 설치하는 것부터 시작해 보겠습니다. 설치 과정은 운영 체제에 따라 약간 다릅니다:
macOS의 경우:
Homebrew 사용:
brew tap leoafarias/fvm
brew install fvm
설치 스크립트 사용:
curl -fsSL https://fvm.app/install.sh | bash
Windows의 경우:
Chocolatey 사용:
choco install fvm
또는 FVM GitHub 저장소에서 독립형 패키지를 다운로드하세요.
Linux의 경우:
설치 스크립트 사용:
curl -fsSL https://fvm.app/install.sh | bash
전역 활성화
FVM 설치 후, 전역적으로 활성화합니다:
dart pub global activate fvm
기본 FVM 명령 및 사용
FVM을 설치했으니, 플러터 SDK 버전을 관리하기 위한 필수 명령을 살펴보겠습니다.
플러터 버전 설치
특정 플러터 버전을 설치하려면:
fvm install 3.16.0
특정 채널을 설치할 수도 있습니다:
fvm install stable
fvm install beta
fvm install dev
고급 사용자를 위해, git 커밋 해시를 사용하여 특정 커밋을 설치할 수도 있습니다:
fvm install fa345b1 # 짧은 해시
fvm install 476ad8a917e64e345f05e4147e573e2a42b379f9 # 긴 해시
프로젝트에 대한 플러터 버전 설정
프로젝트에 특정 플러터 버전을 설정하려면, 프로젝트 디렉터리로 이동하고 다음을 실행합니다:
fvm use 3.16.0
이 명령은 프로젝트 내에 .fvm
폴더를 만들고 지정된 플러터 SDK에 대한 기호 링크를 설정합니다.
특정 채널의 최신 버전을 사용하려면:
fvm use stable
채널을 현재 버전에 고정하려면(자동 업데이트 방지):
fvm use stable --pin
설치된 버전 목록
FVM을 통해 설치한 모든 플러터 버전을 보려면:
fvm list
또는 간략하게 사용할 수 있습니다:
fvm ls
사용 가능한 플러터 릴리스 보기
사용 가능한 모든 플러터 SDK 릴리스를 보려면:
fvm releases
채널별로 릴리스를 필터링하려면:
fvm releases --channel beta
플러터 버전 제거
더 이상 특정 플러터 버전이 필요하지 않은 경우:
fvm remove 3.16.0
전역 플러터 버전 설정
시스템 전체에서 사용할 전역 플러터 버전을 설정하려면:
fvm global 3.16.0
전역 버전의 링크를 해제하려면:
fvm global --unlink
프로젝트 구성
프로젝트에 FVM을 설정한 후, FVM이 관리하는 플러터 SDK를 사용하도록 개발 환경을 구성해야 합니다.
.gitignore 업데이트
FVM은 선택한 플러터 버전의 캐시를 가리키는 .fvm/flutter_sdk
에 기호 링크를 생성합니다. 이를 .gitignore
에 추가합니다:
.fvm/flutter_sdk
IDE 구성
VS 코드
다음으로 .vscode/settings.json
를 생성하거나 업데이트하세요:
{
"dart.flutterSdkPath": ".fvm/flutter_sdk",
// 검색에서 .fvm 파일 제외
"search.exclude": {
"**/.fvm": true
},
// 파일 감시에서 제외
"files.watcherExclude": {
"**/.fvm": true
}
}
안드로이드 스튜디오
- 언어 및 프레임워크 > 플러터로 이동
- 플러터 SDK 경로를 FVM 기호 링크의 절대 경로로 변경(예:
/absolute-project-path/.fvm/flutter_sdk
) - 변경 사항을 적용하고 안드로이드 스튜디오를 재시작
안드로이드 스튜디오에서 플러터 SDK 루트 디렉토리를 무시하려면 .idea/workspace.xml
에 다음을 추가하세요:
<component name="VcsManagerConfiguration">
<ignored-roots>
<path value="$PROJECT_DIR$/.fvm/flutter_sdk" />
</ignored-roots>
</component>
XCode
iOS에서 작업 중이라면, Xcode를 열고 빌드 단계로 가서 스크립트 실행에 다음을 추가하세요:
export FLUTTER_ROOT="$PROJECT_DIR/../.fvm/flutter_sdk"
고급 FVM 기능
프로젝트 맛
FVM은 프로젝트 맛을 지원하여 애플리케이션의 다른 부분이 서로 다른 플러터 SDK 버전을 사용할 수 있도록 합니다:
fvm use 3.16.0 --flavor production
fvm use 3.10.0 --flavor development
맛 사이를 전환하려면:
fvm use production
fvm use development
특정 맛으로 플러터 명령을 실행하려면:
fvm flavor production flutter build
특정 버전으로 플러터 명령 실행
spawn
명령을 사용하여 특정 SDK 버전으로 플러터 명령을 실행할 수 있습니다:
fvm spawn 3.16.0 flutter build
fvm spawn 3.10.0 flutter test
프로젝트의 플러터 버전으로 명령 실행
exec
명령은 프로젝트에 설정된 플러터 버전을 사용하여 명령이나 스크립트를 실행합니다:
fvm exec melos bootstrap
fvm exec path/to/script.sh
CI/CD 환경에서 FVM과 작업하기
지속적인 통합을 위해, 워크플로에 다음 단계를 추가하세요:
- FVM 설치
fvm install
실행- 플러터 명령 실행을 위해
fvm flutter <명령>
사용
GitHub Actions 예제:
steps:
- uses: actions/checkout@v3
- name: FVM 설치
run: |
dart pub global activate fvm
fvm install
- name: 빌드 및 테스트
run: |
fvm flutter pub get
fvm flutter test
FVM 사용을 위한 모범 사례
- 항상 FVM을 통해 플러터 명령 사용 - FVM을 통해 플러터 명령을 실행하여 일관성을 보장합니다. (예:
fvm flutter pub get
) - 프로젝트 문서에 FVM 버전 포함 - README에 필요한 플러터 버전을 문서화하여 새로운 팀원이 이해할 수 있도록 합니다.
- CI/CD에서 플러터 버전 고정 - 지속적인 통합 파이프라인이 개발 환경과 동일한 플러터 버전을 사용하도록 보장합니다.
- 안정성을 위한
--pin
사용 고려 - '안정적'과 같은 채널을 사용할 때, 자동 업데이트를 피하기 위해 고정하는 것을 고려합니다. - 정기적인 캐시 정리 -
fvm remove
로 사용하지 않는 플러터 버전을 주기적으로 제거하여 디스크 공간을 절약합니다.
일반적인 문제 해결
FVM 버전이 인식되지 않음
IDE가 FVM에 의해 설정된 플러터 버전을 인식하지 않는 경우:
- IDE 설정에서 플러터 SDK 경로가 올바르게 설정되어 있는지 확인하세요.
- 구성 변경 후 IDE를 재시작하세요.
- 기호 링크가 올바르게 생성되었는지
ls -la .fvm/flutter_sdk
로 확인하세요.
권한 문제
권한 오류가 발생하는 경우:
- 유닉스 기반 시스템에서는
sudo fvm <command>
를 시도하세요. - FVM 캐시 디렉토리에 대한 폴더 권한을 확인하세요.
경로 문제
FVM을 사용한 후 플러터 명령을 찾을 수 없는 경우:
- 플러터 SDK 경로가 시스템 PATH에 포함되어 있는지 확인하세요.
- 스크립트에서 플러터 SDK의 절대 경로를 사용하세요.
결론
플러터 버전 관리(FVM)는 현대 플러터 개발에 있어 필수 도구입니다. 여러 프로젝트에서 플러터 SDK 버전을 정확하게 제어할 수 있도록 하여 호환성 문제를 줄이고 개발 팀 간의 일관성을 보장합니다.
설치의 기본부터 시작하여 프로젝트 맛과 같은 고급 기능으로 나아가는 이 가이드는 FVM을 효과적으로 사용하는 데 필요한 필수 사항을 다루었습니다. 플러터 개발 워크플로에 FVM을 통합함으로써 생산성을 높이고 프로젝트 안정성을 유지하며 팀원들과 원활하게 협력할 수 있습니다.
항상 FVM을 통해 플러터 명령을 실행하여 버전 일관성을 보장하고 예기치 않은 동작을 피하세요. FVM을 올바르게 사용하면 다양한 SDK 요구 사항을 가진 여러 플러터 프로젝트에서 자신 있게 작업하고 프로덕션 코드를 영향을 주지 않고 새로운 플러터 버전을 쉽게 실험할 수 있습니다.
FVM과 함께 즐거운 플러터 코딩을 하세요!