Android Gradle Plugin 9.0의 BuildConfig Deprecated 대응

Kim Leon·2024년 2월 16일
post-thumbnail

gradle.properties 파일

android.defaults.buildfeatures.buildconfig=true

설정이 없어짐에 따라 BuildConfig 파일이 생성이 되지 않는다.
현재 생성이 되더라도 false로 바꾸면 생성되지 않는다.

앱 개발하면서 많이 쓰는 클래스였지만
항상 노란줄이 떠있다보니 보기에 불편했던건 사실이긴하다.

BuilConfig 클래스에서 VERSION_CODE나 VERSION_NAME 혹은 gradle의 buildType에 버전 분리 하면서 직접 만들어둔 필드 등을 많이 가져다 쓰는 상황이었다.

예를들면 아래의 소스는 BuildConfig.BUILD_TYPE 으로 쉽게 접근이 가능했다.

buildTypes{
			.
			.
			.
       create("product"){
            isMinifyEnabled = true
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
            manifestPlaceholders["appName"] = "상용앱"
            resValue("string", "BUILD_TYPE", "product")
            signingConfig = signingConfigs.getByName("product")
        }
        create("dev"){
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
            manifestPlaceholders["appName"] = "개발앱"
            resValue("string", "BUILD_TYPE", "dev")
            signingConfig = signingConfigs.getByName("dev")
            applicationIdSuffix = ".dev"

        }
}

임시로 gradle에 buildConfig를 true로 설정하면 된다고 하긴 하지만
없애기로 했다니까 빈정상해서 쓰지 않기로 했다.

위의 BUILD_TYPE은 Activity에서 아래의 방법으로 가져올 수 있다.

getString(R.string.BUILD_TYPE)

context를 필요로 한게 문제라 다른데서는 괜찮은데
Object 클래스의 상수를 분기처리할때 좀 짜증나졌다.

in MainActivity

Const.WEB_URL = if(getString(R.string.BUILD_TYPE) == Const.PROD)
            "상용서버주소"                    
        else
            "개발서버주소"  

맘에 안든다.
더 예쁜 방법이 없나

0개의 댓글