문제 상황
앱 이름을 빌드 타입마다 다르게 하고 싶다.
추가로, 언어별로 다른 앱 이름을 가져가고 싶다.
예시 상황
보통의 앱 이름
| Debug | Staging | Release |
| 내앱_DEV | 내앱_STG | 내앱 |
이 경우, build.gradle 에서 buildType 별로 resValue 를 설정하면 됨.
debug {
resValue("string", "app_name", "내앱 DEV")
}
하지만, 아래 케이스가 필요한 경우는 어떻게 될까 ??
| Debug | Staging | Release | |
| ko | 내앱_DEV | 내앱_STG | 내앱 |
| en (Default) | MyApp_DEV | MyApp_STG | MyApp |
해결: buildType 소스셋
Android의 src/ 에는 main 말고도 buildType 이름과 동일한 폴더를 생성할 수 있다.
src/
├── main/ ← 모든 빌드에 공통
│ └── res/
│ ├── values/strings.xml (영문 공통)
│ └── values-ko/strings.xml (한국어 공통)
│
├── debug/ ← debug 빌드에만 적용
│ └── res/
│ ├── values/strings.xml (영문 app_name)
│ └── values-ko/strings.xml (한국어 app_name)
│
├── staging/ ← staging 빌드에만 적용
│ └── res/
│ ...
│
└── release/ ← release 빌드에만 적용
└── res/
...
Android Gradle Plugin은 빌드 시 여러 소스셋의 리소스를 하나로 합친다. 이때 우선순위가 있다:
buildType (debug/staging/release) ← 최우선
↓
productFlavor (있다면)
↓
main ← 기본
같은 키가 있으면 우선순위가 높은 쪽이 이긴다.
예를 들어 assembleDebug를 실행하면,
main에 있는 나머지 문자열(app_exit, confirm 등)은 debug에 같은 키가 없으니 그대로 살아남는다. 결국 합집합인데, 겹치는 키만 덮어쓰는 것이다.
'Computer > Android&iOS' 카테고리의 다른 글
| git-push > AI 코드리뷰 도입기 (0) | 2026.05.06 |
|---|---|
| AAB로도 해결 안 됐던 문제 — audio-asset-pack 도입기 (0) | 2026.04.13 |
| [Android] ADB MCP + Claude Code 로 qa 자동화 하기 (0) | 2026.02.27 |
| 안드로이드 웹뷰 로그인이 자꾸 풀린다면? (0) | 2026.01.14 |
| [Android] 인앱 정기결제 아이템 의미 (0) | 2025.12.02 |