notes
Android - Gradle product flavors
buildTypes와 productFlavors 축, BuildConfig·variant 실무 메모.
dev/prod API URL을 BuildConfig로 나누고 싶어서 productFlavor를 붙였다. buildType(debug/release)이랑 축이 달라서 처음에 헤맸다.
두 축
- buildTypes: debug / release (서명, minify)
- productFlavors: free/paid, stage/prod (패키지·리소스·엔드포인트)
android {
flavorDimensions += "env"
productFlavors {
create("stage") {
dimension = "env"
applicationIdSuffix = ".stage"
buildConfigField("String", "API_BASE", "\"https://stage.example.com\"")
}
create("prod") {
dimension = "env"
buildConfigField("String", "API_BASE", "\"https://api.example.com\"")
}
}
}
Variant
stageDebug, stageRelease, prodDebug, prodRelease처럼 조합이 생긴다. Android Studio Build Variants 창에서 고른다.
val base = BuildConfig.API_BASE
실수
- flavor마다
google-services.json이 다르면src/stage/src/prod/에 각각 둔다 - applicationIdSuffix 붙이면 스토어 등록 앱과 다른 앱으로 설치됨 (의도한 것)
- CI에서
assembleProdRelease처럼 variant 이름을 정확히