프로젝트를 진행하다보면 동일한 기능이지만 다른 버전이 필요할 경우가 있습니다.
예를 들어 개발(development), 스테이징(staging), 프로덕션(production) 환경에 맞게 설정을 달리할 수 있습니다.
플레이버(flavor)는 소프트웨어 개발에서 동일한 애플리케이션의 여러 가지 변형 버전을 말합니다. 각 변형은 공통적인 코드베이스를 공유하지만, 설정, 리소스, 환경 변수, 또는 특정 기능이 다를 수 있습니다.
이 기능을 직접 설정하는것은 약간의 공수가 필요한데 이것을 쉽게 설정해주는 라이브러리가 있습니다.
Flutter Flavorizr
기능
- 다양한 환경에 맞는 플레버 관리: 개발, 스테이징, 프로덕션 등 다양한 환경에 맞게 애플리케이션을 구성할 수 있습니다.
- 자동화된 코드 생성: 각 플레버에 대해 필요한 파일과 설정을 자동으로 생성해 줍니다.
- 커스터마이즈 가능: 각 플레버의 설정을 필요에 맞게 커스터마이즈할 수 있습니다.
참고: 이 도구는 새롭고 깨끗한 Flutter 프로젝트에서 더 잘 작동합니다. 일부 프로세서는 일부 기존 파일과 특정 기본 구조를 참조하기 때문에 기존 프로젝트에서 Flutter Flavorizr를 실행하면 오류가 발생할 수 있습니다.
iOS에서는 프로젝트의 스키마를 조정하기 위해 아래 소프트웨어가 필요합니다.(Android에만 적용하려면 아래 소프트웨어는 필요없음)
사용방법
1. pubspec.yaml에 아래 내용을 추가합니다.
2. 커맨드 실행
flutter pub run flutter_flavorizr
3. main.dart 실행(flavor 따라)
flutter run --flavor <flavorName> -t lib/main_<flavorName>.dart
4. 실행 결과
Banner에는 Flavor에 설정한 이름이 표기되며, 각 Flavor는 아래 파일의 main.dart를 통해 앱이 실행됩니다.
위에서 생성된 내용은 아래 F라는 이름의 클래스로 생성된 파일에서 수정이 가능합니다.
F Class내에 존재하는 변수들은 모두 Static으로 설정되어있어 접근이 용이하며 필요에 따라 값을 추가, 변경할 수 있게 되어있어서 유용한 것 가습니다.
초기에는 기본 프로세서를 통해 수행하지만, 추후에 Flavor가 추가된다면 아마 작업한 모든 내용이 덮어쓰기 될 것입니다.
그래서 실행 프로세스를 선택하여 수행할 수있도록 만들어져있습니다.
Default processors set
- assets:download
- assets:extract
- android:androidManifest
- android:buildGradle
- android:dummyAssets
- android:icons
- flutter:flavors
- flutter:app
- flutter:pages
- flutter:main
- flutter:targets
- ios:podfile
- ios:xcconfig
- ios:buildTargets
- ios:schema
- ios:dummyAssets
- ios:icons
- ios:plist
- ios:launchScreen
- macos:podfile
- macos:xcconfig
- macos:configs
- macos:buildTargets
- macos:schema
- macos:dummyAssets
- macos:icons
- macos:plist
- google:firebase
- huawei:agconnect
- assets:clean
- ide:config
프로젝트에 참여하면서 여러 개발 환경을 배포해야되는 상황이 있었는데 남겨두면 좋은 내용일 것 같아서 작성하게되었습니다.
오늘도 빡코딩!
'Mobile > Flutter' 카테고리의 다른 글
[Flutter] FCM 메세지 수신시 알람음 변경하기(Android) (1) | 2024.09.18 |
---|---|
[Flutter] flutter_gen을 이용한 Asset 관리 (0) | 2024.08.13 |
[Flutter] 위젯이 생성되기 까지 (0) | 2024.08.08 |
[Flutter] 무한 스크롤 구현 해보기 + 검색 (0) | 2024.08.07 |
[Flutter] Riverpod 뽀개기 (3) (feat.Freezed) (0) | 2024.08.06 |