목록으로

Programming Notes

Android 빌드 버전 정보(BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE) 접근 에러 해결하기

안드로이드 개발을 하다 보면 앱의 버전 정보를 관리해야 할 때가 있습니다. 보통 앱 스토어에 업로드하거나, 서버와의 통신, 혹은 앱 내부에서 버전 정보를 표시할 때 BuildConfig.VERSION_NAME (버전 이름, 예: 1.0.0)과...

안드로이드 개발을 하다 보면 앱의 버전 정보를 관리해야 할 때가 있습니다. 보통 앱 스토어에 업로드하거나, 서버와의 통신, 혹은 앱 내부에서 버전 정보를 표시할 때 BuildConfig.VERSION_NAME (버전 이름, 예: 1.0.0)과 BuildConfig.VERSION_CODE (버전 코드, 정수값)을 사용하게 됩니다. 그런데, 갑자기 이 값들을 참조하려 하니 "BuildConfig.VERSION_NAME", "BuildConfig.VERSION_CODE가 정의되지 않았다"는 에러 메시지와 마주하게 된 경험, 한번쯤 있으시죠? 저 또한 최근 이 문제를 겪으며 원인과 해결책을 찾게 되었습니다. 이 글에서는 이 에러의 원인과 해결 방법을 자세히 설명하고자 합니다.

문제는 BuildConfig.VERSION_NAMEBuildConfig.VERSION_CODE가 실제로 빌드 과정에서 생성되는 값이라는 점에 있습니다. 즉, 단순히 코드에 적어 넣는다고 해서 사용할 수 있는 값이 아니라는 것입니다. 빌드 시스템(Gradle)이 build.gradle 파일의 설정을 바탕으로 BuildConfig 클래스를 생성하고, 그 안에 버전 정보를 포함시킵니다. 따라서, 에러가 발생했다는 것은 Gradle이 제대로 된 버전 정보를 찾지 못했다는 의미입니다. 대부분의 경우, gradle.properties 파일과 build.gradle (Module: app) 파일에 버전 정보를 정의하지 않았거나, 정의 방식에 문제가 있는 경우입니다.

해결책은 간단합니다. 먼저 프로젝트의 루트 디렉토리에 위치한 gradle.properties 파일에 버전 정보를 명시적으로 선언해야 합니다. 예를 들어, 다음과 같이 작성할 수 있습니다.

VERSION_NAME="1.0.0"
VERSION_CODE=1

여기서 VERSION_NAME은 버전 이름을, VERSION_CODE는 버전 코드를 나타냅니다. 버전 코드는 정수값이며, 업데이트가 있을 때마다 증가시켜야 합니다. 다음으로, build.gradle (Module: app) 파일에 다음과 같이 추가해야 합니다.

android {
    defaultConfig {
        versionName VERSION_NAME
        versionCode VERSION_CODE
    }
    // ... 기존 코드 ...
}

이렇게 설정하면 Gradle이 gradle.properties에서 정의된 VERSION_NAMEVERSION_CODE를 읽어와 BuildConfig 클래스를 생성하게 됩니다. 이제 BuildConfig.VERSION_NAMEBuildConfig.VERSION_CODE를 자유롭게 사용할 수 있습니다. Java 코드에서 BuildConfig.VERSION_NAMEBuildConfig.VERSION_CODEString 타입과 int 타입의 변수로 참조하면 됩니다. 예를 들어, 앱 내부에 버전 정보를 표시하는 TextView에 BuildConfig.VERSION_NAME을 사용할 수 있습니다.

이제 BuildConfig.VERSION_NAMEBuildConfig.VERSION_CODE를 사용하는데 발생했던 에러는 해결되었을 것입니다. gradle.propertiesbuild.gradle 파일의 설정을 꼼꼼하게 확인하고, 버전 정보를 올바르게 정의하는 것이 중요합니다. 잘못된 설정은 빌드 실패나 예상치 못한 동작을 초래할 수 있으니 주의해야 합니다.