[Flutter] Flavor를 통한 빌드 변형 — PART#1

Juyoung Lee
4 min readMar 18, 2020

--

Photo by Hanson Lu on Unsplash

# 연관 글

# 들어가며

앱 개발을 진행하다 보면 상황에 따라 하나의 프로젝트를 이용하여 여러 개의 결과물을 추출해야 되는 경우가 생긴다.

개발 / QA / 배포 버전을 분리하거나 하나의 앱을 이용하여 무료 / 유료 버전을 구분하여 프리미엄 기능을 제공하여야 하는 경우를 대표적인 예로 들 수 있다.

최근에 시작한 사이드 프로젝트를 진행하는 도중 Flavor를 구성해야 할 일이 생겨 이 기회에 Flutter로 앱 개발을 진행함에 있어 Build Flavor를 설정하는 방법에 대하여 몇 번의 글로 나눠 작성할 계획이다.

Flutter에서 Build Flavor를 구성하기 위해서는 크게 Android / iOS / Flutter 사이드에서 세 번의 작업을 거치게 된다.

이번 글에서는 Android 사이드에서의 Build Flavor 설정에 대해 다루고자 한다.

IDE는 Android Studio를 기준으로 작성한다.

# 안드로이드 프로젝트 OPEN

Android Studio를 통해 Flutter 앱을 개발 중이라면 Project Structure에서 android 패키지를 우 클릭하여 쉽게 안드로이드 프로젝트를 열 수 있다.

# App Module Gradle OPEN

기존에 안드로이드 개발자가 아니라면 안드로이드 프로젝트를 열었을 때 혼동이 오기 시작할 것이다.

Flutter 프로젝트의 pubspec.yaml에 추가한 라이브러리에 따라 Gradle 파일은 위의 스크린샷보다 적을 수도 혹은 많을 수 있으나 앞으로 본인의 앱에 추가적인 Gralde 설정이 필요한 경우에는 App Module의 Gradle을 열어서 수정하면 된다.

# productFlavors 설정

Gradle 파일을 열어보면 각종 Flutter와 관련된 설정과 Local Properties에서 값을 불러오기 위한 설정 등으로 인해 많은 양의 코드가 있다.

수많은 코드 중에서 중간쯤 위치한 android로 시작하는 brackets를 찾은 후 기존에 안드로이드에서 Flavor을 설정할 때 사용하던 방식대로 productFlavors블록을 추가해 주면 된다.

android {    // ...codes    flavorDimensions "build-type"

productFlavors {
development {
dimension "build-type"
applicationIdSuffix ".dev"
}
production {
dimension "build-type"
}
}
}

위의 경우 productFlavors를 통해 개발과 운영 버전을 구분하기 위해 applicationIdSuffix를 추가하여 실제 디바이스에 설치했을 때 서로 다른 앱으로 인식할 수 있도록 구성해 주었다.

나중에 추가될 포스트에서 언급할 내용이지만 Flutter를 실행할때 flavor 설정에 따라 실행을 하기 위해서 아래와 같은 명령어를 사용하게 된다.

  • flutter run --flavor development
  • flutter build --flavor production

productFlavors를 구성할 때 Flutter를 실행하는 command의 flavor-name과 안드로이드에 지정되어 있는 productFlavors의 명칭일치해야 된다는 부분을 주의해야 한다.

--

--