본문 바로가기
Computer/Android&iOS

Android) strings.xml 을 Dev(Debug), Staging, Release 로 따로 설정하는 방법

by ywlee 2026. 4. 1.

 

문제 상황

앱 이름을 빌드 타입마다 다르게 하고 싶다. 

추가로, 언어별로 다른 앱 이름을 가져가고 싶다.

 

예시 상황

보통의 앱 이름

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에 같은 키가 없으니 그대로 살아남는다. 결국 합집합인데, 겹치는 키만 덮어쓰는 것이다.