티스토리 뷰

728x90
반응형

플러터 버전 업그레이드 글에서 해준 것은 맥에 설치된 flutter SDK 버전을 업데이트한 것입니다.  
해당 Flutter SDK를 flutter SDK path로 참조하고 있는 다른 프로젝트들도 모두 같은 플러터 버전을 쓰게 되겠죠? 

 


그럼 프로젝트 별로 다른 버전을 쓰고 싶다면 어떻게 해야할까요?

(파이썬 가상환경처럼 아주 간단하고 깔끔하게 프로젝트별로 다르게 환경을 설정할 수 없는 것 같습니다.... 🥲)

 

 

[1] 배경지식 > pubspec file의  Dart, Flutter SDK 버전 제약 조건 

 

- 문서: https://dart.dev/tools/pub/pubspec#sdk-constraints 

 

 

# Dart SDK constraints

 

pubspec.yaml 의 네모친 부분은 Dart SDK의 버전 제약 조건을 나타냅니다. 

 

 

예를 들어 위 제약 조건은 버전 2.12.0 이상, 3.0.0 미만에 해당하는 모든 Dart SDK에서 작동한다고 말합니다.

Pub은 너가 설치한 Dart SDK 중에서 위의 제약조건에 해당하는 가장 최신 버전의 SDK를 찾습니다. 

 

(참고로 Dart 2.12부터 SDK 제약 조건을 생략하면 오류가 나게 해놨다고 합니다) 

 

 

# Flutter SDK constraints

 

Dart 1.19.0 부터 pub은 environment 필드 아래에서 Flutter SDK 제약 조건을 지원합니다.

 

 

 

[2]  배경 지식 > 플러터 버전과 다트 버전

 

https://github.com/flutter/flutter/blob/2.5.0/packages/flutter_tools/pubspec.yaml   

 

 

 

플러터 버전 별 다트 SDK 버전을 명시한 것을 보면 

플러터 버전 하나당 다트 버전 하나! 이렇게 매칭되는 것은 아닙니다.

예를 들어 플러터 SDK 2.5.0은 2.12.0 이상 3.0.0 미만 다트 SDK와 매칭됩니다. 

 

 

 

[3]  프로젝트별로 다른 플러터 버전을 쓰고 싶을 때 

 

1.  releases 에서 원하는 버전을 다운받기

 

저는 시험삼아서 2.5.0 버전이랑 1.17.0 버전 두개를 다운받아줬습니다! 

 

 

 

 

그리고 flutter SDK를 뒀던 디렉토리로 이동시켜줬습니다. 

 

 

 

 

 

2.1  새로운 프로젝트를 만드는 경우

 

SDK path에서 원하는 Flutter SDK 버전을 선택해주고 만들기 눌러주면 됩니다. 

 

 

 

그러면 해당 버전의 다트 SDK로 잘들어갔고 cupertino_icons 패키지 버전도 낮은 버전으로 잘 들어간 것을 볼 수 있습니다. 

 

 

 

pubspec.yaml

 

 

pubspec.lock

 

 

 

2.2  기존 프로젝트의 버전을 변경하는 경우 

 

방금 위에서 만든 프로젝트의 플러터 SDK를 2.5.0으로 변경해불게요! 

안드로이드 스튜디오 > Preferences > Languages & Frameworks > Flutter 에서 Flutter SDK Path 를 변경해주면 됩니다. 

 

 

 

 

이렇게 바꾸고 pub get 해주면 

flutter pub get

 

pubspec.lock 의 Dart SDK 버전이 바뀝니다. 

 

pubspec.lock 

 

 

pubspec.yaml 의 Dart SDK 버전도 수동으로 같이 바꿔줍니다. 

 

pubspec.yaml

 

 

그리고 이번에는 Flutter SDK 버전도 명시해볼게요! 

 

pubspec.yaml

 

 

pub get 해주면 

 

flutter pub get

 

pubspec.lock 도 바뀝니다. 

 

 

 

그리고 Min Dart SDK가 올라갔으니 의존하고 있는 패키지들도 버전 업 해주겠습니다.

(예를들어 쿠퍼티노 아이콘 패키지  1.0.3 버전 쓰도록) 

 

https://pub.dev/packages/cupertino_icons/versions

 

 

pubspec.yaml 파일안에 있는 dependencies들 모두 최신 호환되는 버전으로 업데이트 하고 싶을 때 아래 명령어를 써주면 됩니다! (참고: Upgrading package only)

flutter pub upgrade

 

 

pubspec.yaml과 pubspec.lock 모두 함께 잘 변했습니다. 

 

pubspec.yaml

 

pubspec.lock

 

반응형
댓글