2021년 3월 24일 수요일

[Android] Flavors 간단 사용법

 Flavors

각상황(Dev, Stage, Product) 별로 패키지명과 리소스/API주소등을 달리하고 싶을때


앱빌드시에 테스터에게 전달할 파일따로/ 리리스용 파일따로 분리해서 리소스도 다르게 해서 패키징 하고 싶을때가 있다.
이떄 Gradle 의 Android속성중에 productFlavors 라는걸 이용하면 각 상활별로 APK 를 만드는게 가능하다.


사용예


   flavorDimensions "environment"


   productFlavors {

       dev {

           dimension "environment"

           applicationIdSuffix ".free"

           manifestPlaceholders = [ appLabel: "Dev" ]

           resConfigs "ko"

           minSdkVersion 23

       }


       stage {

           dimension "environment"

           applicationIdSuffix ".stage"

           manifestPlaceholders = [ appLabel: "Stage" ]

           resConfigs "en", "ko"

           minSdkVersion 19


       }

       product {

           dimension "environment"

           applicationIdSuffix ".product"

           manifestPlaceholders = [ appLabel: "Product" ]

           resConfigs "en", "ko", "ja"

           minSdkVersion 19


       }

   }

어플리케이션고유아이디, 앱이름, 첨부될 리소스구분, 그밖의 android 관련 설정을 각각 할수 있다.
또한 설정파일은 앱소스코드에서 BuildConfig를 통해 설정값을 읽어 올수도 있다.

flavorDimensions을 여러개 지정한다면, 저정된 개수에 Flavors에 정의된 각각의 모든 경우를 고려한 개수만큼 빌드실행변수가 생성된다.


flavorDimensions "serverSet", "whichBuild"

productFlavors {
amazon {
dimension "serverSet"
}
gcp {
dimension "serverSet"
}

product{
dimension "whichBuild"
}
dev{

dimension
"whichBuild"
}
}
이고
buildType {
release {}
debug {}
qa {}
}

로 설정하면
- Build variants에
amazonProductDebug
amazonProductRelease
amazonProductQA
amazonDevDebug
amazonDevRelease
amazonDevQA


gcpProductDebug
gcpProductRelease
gcpProductQA
gcpDevDebug
gcpDevRelease
gcpDevQA
가 생성되어 환경에 맞게 빌드하여 사용하면된다.

프로그램에서는 Build.xxxx로 사용한다.
빌드하면 자동으로 생성되는 파일인 BuildConfig.java에 아래와 같이 정의되어 있다.
public final class BuildConfig {
...
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "amazonDev";
public static final String FLAVOR_serverSet = "amazon";
public static final String FLAVOR_gcp = "dev";
}

0 comments:

댓글 쓰기