Flavor란?
- Flavor는 앱의 다양한 빌드 환경(development, staging, production 등)을 관리하기 위한 개념입니다.
- 앱의 각 환경에 따라 서로 다른 설정 파일, 리소스, API 엔드포인트 등을 사용하여 다양한 버전을 쉽게 빌드할 수 있게 해줍니다.
왜 Flutter에서 Flavor를 사용하는가?
- 환경별 설정 관리: 개발, 테스트, 프로덕션 환경에 따라 다른 설정(API, 아이콘, 리소스 등)을 쉽게 적용할 수 있습니다.
- 효율적인 빌드 관리: 다양한 환경을 위한 별도의 빌드 구성을 통해 보다 체계적으로 앱을 관리할 수 있습니다.
- 자동화: CI/CD 파이프라인에서 특정 Flavor를 빌드하도록 설정하여 환경별로 일관된 배포가 가능합니다.
Android Flavor 설정 방법
build.gradle
파일 수정- Android에서는
app/build.gradle
파일을 수정하여 Flavor를 설정합니다. 예를 들어, 개발용과 운영용 앱을 만들기 위해 다음과 같은 설정을 추가할 수 있습니다:
- Android에서는
android {
flavorDimensions "environment"
productFlavors {
development {
dimension "environment"
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
production {
dimension "environment"
applicationIdSuffix ".prod"
versionNameSuffix "-prod"
}
}
}
applicationIdSuffix
를 통해 각 Flavor마다 다른 앱 ID를 사용할 수 있어, 같은 기기에 서로 다른 환경의 앱을 동시에 설치할 수 있습니다.versionNameSuffix
는 앱의 버전 정보에 접미사를 추가하여 각 환경에 맞는 버전 이름을 제공합니다.
iOS Flavor 설정 방법
- Xcode 프로젝트에서 Scheme 추가: Xcode의 Runner 프로젝트에서 각 Flavor에 맞는 Scheme을 설정합니다. 예를 들어,
Development
,Staging
,Production
스키마를 추가할 수 있습니다. - Build Configuration 설정: 각 스키마에 맞는 Build Configuration을 생성합니다.
- Info.plist 파일 분리: 각 Flavor별로 Info.plist 파일을 분리하여 서로 다른 설정을 적용할 수 있습니다.
Project > Info 에서 Configurations을 설정합니다.
기본적으로 Debug, Release, Profile이 되어 있는데, 여기서 원하는대로 설정을 변경해주시면 됩니다.
적당한 configuration을 복사하고, 이름을 변경합니다.
![](https://lucasblog.kr/wp-content/uploads/2024/12/image-3-1024x579.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image2.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image3-1024x429.png)
설정에 따라 스키마를 만들어줍니다.
Xcode 상단에 프로젝트 이름 부분을 클릭하고 New Scheme를 선택해줍니다. 스키마 이름을 지정해주면, 새로운 스키마가 생성됩니다.
![](https://lucasblog.kr/wp-content/uploads/2024/12/image2-1-1.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image2-2-1.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image2-3.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image2-4-1024x577.png)
해당 스키마가 선택된 상태에서 Edit Scheme를 누르면 아래와 같이 뜨는데요,
Run, Test, Profile 등에서 스키마와 Build Configuration이 일치하도록 설정해줍니다. 나머지 스키마들에 대해서도 반복적으로 진행해줍니다.
![](https://lucasblog.kr/wp-content/uploads/2024/12/image3-1.png)
![](https://lucasblog.kr/wp-content/uploads/2024/12/image3-2-1024x577.png)
Flavor별로 APK 빌드하기
Flutter CLI를 사용하여 Android의 특정 Flavor를 빌드할 수 있습니다. 이를 통해 각 환경에 맞는 APK를 생성할 수 있습니다.
flutter build apk --flavor development -t lib/main_dev.dart
flutter build apk --flavor production -t lib/main_prod.dart
이렇게 생성된 APK 파일은 각기 다른 환경에 맞게 구분됩니다.
위 명령어에서 -flavor
옵션을 통해 원하는 Flavor를 지정하고, t
옵션으로 해당 Flavor에 맞는 Dart 진입 파일을 지정합니다.