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";
}

Related Posts:

  • Kotlin StateFlow , SharedFlow Kotlin StateFlow , SharedFlow StateFlow SharedFlow replay extraBufferCapacity onBufferOverflow Flow를 SharedFlow로 변환 SharedFlow 와 StateFlow 의 비교점 LiveData, StateFlow, SharedFlow LiveData StageF… Read More
  • Android Jet Compose 기초 Android Jet Compose 기초 Sugoi Ebooks(Writen in English) Naver Cafe Sugoi Japanese Find a Job in Japan Android Jetpack Compose 1. 선언적 UI의 과거와 현재 2. Jet Compose를 사용할때의 장점 3. Compose 멀티플랫폼, 멀티디바이스 4.… Read More
  • KOTLIN 에서 AspectJ https://github.com/Ibotta/gradle-aspectj-pipeline-plugin/blob/develop/sample-kotlin/src/main/kotlin/com/ibotta/gradle/aop/kotlin/KotlinAspect.kt 여기를 참고해서 설정하고. @Aspect class KotlinAspect { @Before("execution(* com.… Read More
  • Timber Timber Timber - Android Logging library Timber - Android Logging library Android 에 기본 Log를 출력기능이 있지만 문자수 제약, Releaseg할때도 실수로 로그를 출력등 불편한점 도 있어서 Timber라이브러리를 많이 사용합니다. Timber는 외부라이브러리서 의존… Read More
  • KMM IOS COMPOSE ALPHA KMM IOS COMPOSE ALPHA Sugoi Ebooks(Write in English) Naver Cafe Sugoi Japanese Find a Job in Japan iOS용 Compose Alpha가 공식적으로 출시 iOS용 Compose Alpha가 공식적으로 출시 iOS용 Jetpack Compose… Read More

0 comments:

댓글 쓰기