빌드 구성에 따른 값 변경하기

NimBee·2021년 9월 2일
0

android-gradle

목록 보기
1/1

안드로이드 개발을 하려면 필수적으로 병행되는것 중 하나가 gradle빌드 구성입니다.
그 중 간단하게 debug/release버전에 따른 구성 변경 방법을 알아보죠.

목표
1. debug빌드는 테스트 debug, release빌드는 테스트 로 앱 이름 자동으로 표기되게 하기
2. 디버그 빌드 시 application id 뒤에 .debug를 추가하여 별도의 앱으로 생성하기

gradle 구성

일반적으로 프로젝트 생성 시 두가지 타입의 gradle 파일이 자동으로 생성됩니다.
1. 프로젝트 전체를 담당하는 project 단위의 build.gradle 파일
2. 각 모듈을 담당하는 모듈(app)단위의 build.gradle 파일

이 중 우리는 메인 모듈의 build.gradle에서 빌드 타입에 따른 구성 변경을 진행할거에요.
신규 프로젝트를 생성했다는 가정 하에 진행하겠습니다.

build.gradle 파일을 살펴보면 다음과 같이 buildTypes 항목이 존재합니다.

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

딱 봐도 느낌이 옵니다. buildTypes라는 의심쩍은 이름 안에 release항목이 있잖아요?
빌드를 할 때, 빌드의 타입이 release면 release내부의 값들을 적용한다는 의미입니다.

먼저 debug항목을 추가해줍니다.

buildTypes {
        debug {
        
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

그리고, debug/release내부에 manifestPlaceholders를 추가해줍니다.
manifestPlaceholders = [] 의 형식입니다. 대괄호에 유의하세요.

buildTypes {
        debug {
            manifestPlaceholders = [
            
            ]
        }
        release {
            manifestPlaceholders = [
            
            ]
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

manifestPlaceholders란, AndroidManifest.xml파일에 변수를 삽입할 수 있게 해주는 항목입니다. 대괄호에서 눈치채신 분들도 있으시겠지만, 여러개의 항목에 대한 삽입도 가능하죠. 자세한 내용은 이곳을 참고하세요.

이제 이 곳에 AndroidManifest.xml에서 사용할 변수를 키:값의 형태로 넣어주시면 됩니다.
이번 목표는 debug빌드 시 "테스트debug" 의 형태의 앱 라벨을 변경하는 것이니, 적당히 알아볼 수 있는 키 이름을 사용하여 넣어봅시다.

debug {
    manifestPlaceholders = [
       appLabel:"테스트debug"
    ]
}
release {
    manifestPlaceholders = [
       appLabel:"테스트"
    ]

이렇게 하면 빌드 시 타입에 따라 AndroidManifest.xml에서 appLabel키에 해당하는 값을 불러와 적용할 수 있습니다.

메니페스트 파일로 이동하기 전, 2번 목표인 application id뒤에 .debug를 붙이고 가도록 하죠.
이건 간단하게 적용이 가능합니다. debug 항목 내부에 applicationIdSuffix 를 추가해줍니다.

debug {
    manifestPlaceholders = [
       appLabel:"테스트debug"
    ]
    applicationIdSuffix ".debug"
}
...

이제 AndroidManifest.xml로 이동해서, 앱 이름을 표기하는 Application -> label 파라미터에 다음과 같이 변경합니다.

android:label="${appLabel}"

${manifestPlaceholders에서 선언한 키 값} 의 형태로 변경한 뒤, gradle sync를 하면 에러가 사라지는 것을 확인할 수 있습니다.

이 상태로 debug빌드를 실행하면, 앱 아이콘 이름이 "테스트debug"로 적용되어 보이는 것을 확인할 수 있습니다.

이 기능을 적절히 이용하면 메니페스트 파일을 좀더 효율적으로 활용할 수 있으니 참고하세요.

profile
삭(제)당(했던)개(발자) / 안드로이드

0개의 댓글