앱을 개발할 때 경우에 따라서는,

debug빌드에서는 a값을 가지고, release빌드에서는 b값을 보게 하고 싶을 때가 있는데요.

이럴 때는 buildConfigField를 이용해주면 됩니다.

 

오늘은 이것을 이용하는 방법에 대해서 정리해 보도록 하겠습니다.

1. buildConfigField

빌드가 될 때, 안드로이드의 빌드 시스템인 Gradle은 BuildConfig클래스를 생성합니다.

이는 현재 빌드에 대한 정보를 확인할 수 있도록 하기 위함인데요.

buildConfigField()메소드를 이용하면,

인자에 원하는 값을 넣어서 접근할 수 있습니다.

주의해야 할 것은 runtime에 값이 들어가므로,

코딩시 컴파일러가 에러를 보정해 줄 수 없으므로 테스트를 꼭 거치거나,

boolean값처럼 null에러가 나지 않는 정도의 값들을 이용하는 것이 좋을 것 같습니다.

 

2. 구현

app레벨의 build.gradle에서 구현을 하게 되는데요.

라이브러리가 많이 사용되는 요즘에는,

아래와 같이 debug에서는 minify를 false로하고 release에서는 minify를 true로 설정하게 되는데요.

이 상태에서 debug와 release에 각각 다른 값을 주기 위해 buildConfigField메소드를 사용해 보겠습니다.

 

 

인자로 type과 name 그리고 value값을 적어주면 되는군요.

컴파일러가 철자오류를 찾아주는 것이 아니고, String으로 모든 타입과 값을 써야 하므로,

좀 더 주의를 기울여서 타입과 값을 적어주어야 합니다.

 

 

debug빌드에서는 IS_FOR_TEST 값을 true로 나오게 하고, release빌드에서는 false로 잡아주었습니다.

 

 

 

 

이제 코드에서 로그를 찍어보도록 하겠습니다.

아래와 같이 정상적으로 동작하는 것을 볼 수 있네요.

 

 

3.resValue

buildCofigFiled와 비슷하지만,

app의 resource value를 빌드별로 다르게 가지도록 할 수 있습니다.

resValue메소드를 이용하면 되는데요.

사용방법은 buildCofigFiled와 비슷합니다.

 

아래와 같이 컴파일러가 접근 가능한 string임을 보여줍니다.

 

log도 정상적으로 찍히는 것을 알 수 있습니다.

 

 

4. 정리

buildConfigField메소드와 resValue메소드를 이용해서

빌드 버전별로 어떻게 다른 값을 갖는지 알아보았습니다.

좀 더 좋은 방법이 있다면 이 글에서 업데이트 하도록 하겠습니다.

+ Recent posts