이 글은 Kotlin DSL - KTS에서 gradle에 manifest, buildconfig변수를 설정하는 방법에 대해 적혀있으므로 groovy 기반이라면 도움이 안될 수 있다.
local.properties
에 이미 값을 적었다고 가정하겠다.
KAKAO_NATIVE_APP_KEY="value"
KAKAO_MANIFEST_APP_KEY=value
그리고 build.gradle :app
을 열어 함수를 적어준다. 위치는 android{} 밖에 적으면 된다.
fun getAppKey(propertyKey: String): String {
return gradleLocalProperties(rootDir).getProperty(propertyKey)
}
이 함수는 Properties()인스턴스를 명시적으로 사용하지않아도 프로퍼티 파일의 값을 가져올 수 있게 한다. local.properties값을 가져오는 gradleLocalProperties()
를 사용한다.
buildConfigField("String", "KAKAO_NATIVE_APP_KEY", getAppKey("KAKAO_NATIVE_APP_KEY"))
manifestPlaceholders["KAKAO_MANIFEST_APP_KEY"] = getAppKey("KAKAO_MANIFEST_APP_KEY")
각각 buildCofing 변수, manifest변수로 사용된다. 위에서 매니페스트에는 따옴표를 안쓰고, buildConfig에는 따옴표를 썼다. 이는 BuildConfig변수 생성시 local.properties에 있는 값을 그대로 긁어오기 때문에 타입은 String이지만 따옴표로 감싸져있지않아서 빌드 시에 에러가 발생한다.
error: expected
이렇게 하면 표면적으로는 완성인데, 이건 AGP(Android Gradle Plugin) 8.0 이전에 통하던 방법이다. 8.0 부터는 buildConfig변수 선언 디폴트가 false라서 아무 설정을 해두지않으면 BuildConfig변수를 사용할 수 없다. 8.0 넘어서 BuildConfig를 사용하려고 한다면 이런 에러를 보게 될 것이다.
defaultConfig contains custom BuildConfig fields, but the feature is disabled.
따라서 gradle.properties
파일에 아래 코드를 넣어준다.
android.defaults.buildfeatures.buildconfig=true
다른 방법으로는 buildFeature에 해당 코드를 넣어주는 것이다. release, debug 가 나뉘어져있으면 이 방식이 더 적합하겠다.
buildFeatures {
buildConfig = true
}
AGP 8.X 까지는 이렇게 사용하면 되겠지만, 9.0 부터는 아예 BuildConfig사용을 막아버린다고 하니, 다른 해결책을 또 찾아야한다.
참조:
"댓글, 공감 버튼 한 번씩 누르고 가주시면 큰 힘이 됩니다"
'Android 🖥️ > 삽질⛏️' 카테고리의 다른 글
Datastore 사용하기(Preferences DataStore) (0) | 2023.10.10 |
---|---|
'compilejava' task (current target is 1.8) and 'compilekotlin' task (current target is 17) jvm target compatibility should be set to the same java version (0) | 2023.10.02 |
dialog의 background속성값이 코드에서 입력할 때 적용되는 이유 (0) | 2023.10.02 |
Progressbar 사용하기(feat. timer) (0) | 2023.10.02 |
Viewmodel 인스턴스 정의 방법 (0) | 2023.10.02 |