본문 바로가기
플러터 (flutter)/마이그레이션

Flutter 플러터 1.0 프로젝트를 3.0 으로 마이그레이션 해보자

by 여니포차 2022. 12. 7.
728x90

 

회사에서 작년에 개발하여 출시한 flutter 앱 유지 보수 프로젝트를 맡게 되었다.

앱의 플러터 버전은 1.22 이고 버전 유지한채 계속 운영중이였는데 자잘한 이슈들이 계속 터졌고

더이상 마이그레이션을 피해갈 수 없게 되었다.

 

본격적인 작업에 들어가기전 여유 시간에 혼자 먼저 브랜치 하나 따서 작업을 시작하게 되었는데

혹시 모를 나 같은 마이그레이션 작업을 하는 사람들을 위해 히스토리를 공유하고 기록하고자 한다^^

 

 

1. 먼저 최신 버전의 flutter SDK를 다운로드 받는다

 

오랜만에 Flutter 공식 사이트에 들어가보았다.

https://docs.flutter.dev/get-started/install

 

Install

Install Flutter and get started. Downloads available for Windows, macOS, Linux, and Chrome OS operating systems.

docs.flutter.dev

 

그새 또 새 버전이 나와 현재 플러터 최신 버전은 flutter 3.3.9 버전 이였다.

나같은 경우는 여러가지 버전에서 flutter 프로젝트 작업을 하고 있기 때문에 최신버전 SDK 를 다운받아 적절한 폴더에 압축을 푼 후 환경변수를 잡아주었다.

 

 

 

2. 사용중인 모든 라이브러리들을 업그레이드 한다.

 

// 모든 라이브러리들이 null safety적용 되었는지 확인
$ dart pub outdated --mode=null-safety

 

// 자동으로 라이브러리들을 null-safety하게 upgrade
$ dart pub upgrade --null-safety

 

먼저 사용중인 라이브러리들이 null safety 적용 가능한지 확인 후 업그레이드 명령어를 통해  일괄 업로드 해주면 된다.

나같은 경우는 2개 정도의 라이브러리들이 사용 불가능이라고 떳는데 일단 주석 처리 해놓고

추후 대체 라이브러리를 찾아보기로 했다.

 

 

 

3. null-safety 옵션 활성화 및 flutter lints 추가

 

environment:
  sdk: ">=2.12.0 <3.0.0"

 

pubspec.yaml 파일의 enviroment 를 2.12.0 이상으로 수정해야 null-safety 옵션이 활성화 된다.

 

그리고 추가로 플러터 2.0 버전부턴 flutter lints 가 자동으로 추가되어 생성되는데 

나는 1.0 버전 프로젝트라 따로 추가해주었다.

flutter lints 는 개인적으로 애정하는... 잘못된 코드습관을 잡아주는 좋은 라이브러리이다.

 

 

 

4. 여기까지 했는데 Pub get 실행 시 에러가 난다면 안드로이드 설정을 변경해주자.

 

위 작업까지 모두 마친 후 라이브러리들 모두 버전업 작업을 해주었는데 get dependencies 가 되지 않았다 ㅠㅠ

android 어쩌구 에러가 났는데 알고 보니 flutter 버전이 올라가면서 AndroidManifest.xml 파일 설정 부분이 조금 바뀐게 있었다.

 

<application
    android:name="${applicationName}"

 

앱이름을 가져오는 부분 같은데 이렇게 수정해줘야 했다.

원래는 <application android:name="io.flutter.app.FlutterApplication" ..../> 이렇게 선언되어 있었음

 

 

여기까지 하면 드디어 pub get 까지는 수행이 된다.

물론 빌드 및 실행은 엄두도 못낸다. 빨간줄 대잔치라...^^

이제부터 본격적으로 코드를 수정해보자.