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, 한빛미디어