Android

Android Gradle - Build Type, Flavor

smomo 2021. 4. 24. 18:38
android {
    
    ...
    
   buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
    flavorDimensions "version"
    productFlavors {
        free {
            dimension "version"
            manifestPlaceholders = [
                    appLabel: "Free-Flavor"
            ]
            applicationIdSuffix ".free"
            versionCode 10000
            versionName "1.0.0"
            buildConfigField "String", "EXPLAIN", "\"This is FREE-FLAVOR application\""
            resValue "string", "appName", "Free-Flavor"
        }
        paid {
            dimension "version"
            manifestPlaceholders = [
                    appLabel: "Paid-Flavor"
            ]
            applicationIdSuffix ".paid"
            versionCode 20000
            versionName "2.0.0"
            buildConfigField "String", "EXPLAIN", "\"This is PAID-FLAVOR application\""
            resValue "string", "appName", "Paid-Flavor"
        }
    }
}

Android 플러그인에서는 하나의 프로젝트로 목적이 다른 결과물을 생성할 수 있다.

 

1. buildTypes 블록

  - 기본은 release, debug

  - debug 개발 단계에 사용, relaease는 외부 배포할때 사용

  - release일때 proguard적용을 false로 지정

  - minifyEnabled true이면 proguard-rules.pro 파일 참고하여 proguard를 실행

 

2.Flavor

  •   flavorDimensions

    - 빌드의 구분

    -"api", "mode", "version" api 버전에 따른 구분, 앱의 기능에 따른 구분, version에 따른 구분 등을 나타

  •   manifestPlaceholders

    - AndroidManifest.xml 파일에서 ${appLabel} 처럼 사용

  •   applicationIdSuffix

    - defaultConfig에 명시된 applicationId 뒤에 붙어서  version의 ApplicationId 를 구분하게 해줌

  •   buildConfigField

    - BuildConfig라는 클래스에서 호출할 수 있는

    - BuildConfig.#####  사용

  •   resValue

    - 문자열 정의로 @string/##### 와 같이 사용

 

 

Reference

  • 유동환, 안드로이드를 위한 Gradle, 한빛미디어