본문 바로가기
플러터(flutter)

플러터에서 Flavor를 사용해서 개발 환경 분리 및 예시

by 기계공학 주인장 2024. 12. 4.
반응형

플러터에서는 Flavor를 사용하여 개발환경을 바꿀 수 있습니다.

 

라이브러리를 사용하거나 하면 한 번에 바꿀 수 있다고 하지만...

 

플러터에 라이브러리를 추가하가는 것을 결과적으로 앱 자체의 용량을 늘리게 되는 것이기 때문에

 

라이브러리를 사용한 개발환경 분리는 저는 그닥 추천하지 않습니다.

 

(안그래도 플러터는 앱 용량이 크기 때문에 ㅠㅠ)


플러터에서 Flavor를 사용하여 개발 환경 분리 하고 변수 선언하기 - Android

플러터에서 Flavor를 사용하여 개발 환경을 나누는 작업은 Android와 iOS 별도의 작업이 필요합니다.

 

먼저 Android부터 진행하면 다음과 같습니다.


 

1. build.gradle에서 Flavor를 사용하여 개발 환경 나누기

 

다음과 같이 android/app/build.gradleㅋ에 들어갑니다.

 

 

그리고 다음과 같이 선언합니다.

 

    flavorDimensions "app"

    productFlavors {
        "dev" {
            dimension = "app"
            resValue "string", "app_name", "myAppDev"
            // 출력 예: com.example.app.dev
            applicationIdSuffix = ".dev"

            buildConfigField "boolean", "IS_PRODUCTION", "false"
        }

        "product" {
            dimension = "app"
            resValue "string", "app_name", "myApp"
            // 출력 예: com.example.app.product
            applicationIdSuffix = ".product"

            buildConfigField "boolean", "IS_PRODUCTION", "true"
        }
    }

 

하나씩 설명하면 다음과 같습니다.

 

flavorDimensions "app"

 

flavorDemesions는 Flavor의 그룹을 의미합니다.

 

단순한 이름이기 때문에 아무거나 사용해도 괜찮습니다.

 

즉, app 이라는 이름의 Flavor 그룹을 생성하는 것으로 이해하면됩니다.

 

productFlavors {
    "dev" {

 

dev 라는 이름으로 flavor를 선언합니다.

 

dimension = "app"

 

해당 flavor가 어느 그룹에 속하는지 지정합니다.

 

resValue "string", "app_name", "myAppDev"

string 형태의 데이터로 변수 이름은 app_name, 값은 myAppDev라는 프로젝트 내에서 사용할 수 있는 상수를 만듭니다.

(이름에서 알 수 있다시피 앱 이름으로 사용할 예정입니다.)

 

applicationIdSuffix = ".dev"

앱 패키지 이름 끝에 붙일 단어를 지정합니다.

 

개발 환경별로 패키지 이름이 달라야하기 때문에 이와 같은 방법을 사용합니다

 

예를 들면 다음과 같이 출력됩니다.

// 출력 예: com.example.app.dev

 

buildConfigField "boolean", "IS_PRODUCTION", "false"

프로젝트의 코드에서 사용할 수 있는 변수를 하나 만듭니다.


 

2.  AndroidManifest.xml에서 앱 이름 지정해주기

 

다음과 같이 android/app/src/main/AndroidManifest.xml에 들어갑니다.

 

 

여기서 labelname을 다음과 같이 바꿉니다.

 

android:label="@string/app_name"
android:name="${applicationName}"

 


3. Flavor로 나눈 개발 환경 별 상수 사용하기

 

위에서 선언한

buildConfigField "boolean", "IS_PRODUCTION", "false"

 IS_PRODUCTION의 사용 방법은 다음과 같습니다.

 

const isProduction = bool.fromEnvironment('IS_PRODUCTION');

 

 

코드에서 위와 같이 선언하면 개발 환경별로 다른 isProduction 값을 얻을 수 있습니다.

 

4. 똑같은 방법으로 Product나 Release 버전의 개발환경도 만들 수 있습니다.

 

여기까지 하면 플러터에서 Android 부분의 개발 환경 나누기 작업은 끝입니다.


플러터에서 지정한 Flavor로 새로운 Configurations 만들기

이제 2개로 나눈 개발 환경을 각각 실행해 보는 방법을 알려드리겠습니다

 

 


1. (저는 이미 만들었지만,) Edit Configurations를 클릭합니다.

 

2. + 버튼을 클릭하여 새로운 Configuration을 만듭니다.

 

 

3. 다음과 같이 Dart entrypoint와 Build flavor를 정의합니다.

Dart entrypoint는 기존의 main에 있던 것을 그대로 사용하시면 됩니다.

 

 

4. 기록한 내용을 저장하고 dev를 지정해서 실행하면 다음과 같이 정상적으로 등록된 dev를 볼 수 있습니다.


플러터에서 Flavor를 사용하여 Android 개발 환경 분리 하고 변수 선언하기 정리

이상으로 플러터에서 Flavor를 사용하여 Android 개발 환경이었습니다.

 

간단하게 정리하자면

 

  1. build.gradle에서 flavor 정의하기
  2. AndroidManifest.xml에 정의한 앱 이름 등록하기
  3. Android Studio에서 Configuration을 새롭게 만들어서 등록한 flavor의 개발 환경으로 앱 build 하기

이렇게 볼 수 있습니다.!!!

 

다음 포스팅에서는 플러터의 iOS에서 개발환경을 나누는 방법에 대해 알아보겠습니다.

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글