애러 발생 상황
Android Gradle Plugin 버전을 7점대 버전에서 8점대 버전(8.7)로 업그레이드 하니 다음과 같은 오류가 발생했다.
error: incompatible types: <null> cannot be converted to int
애러 원인
컴파일된 파일을 보니, layout 값이 int 값이 아니라 null 값으로 설정된다. 기존에는 이곳에 R.layout.XXX 에 해당하는 값이 들어갔다.
@kotlin.Metadata(mv = ...)
@android.annotation.SuppressLint(value = {"NonConstantResourceId"})
@com.airbnb.epoxy.EpoxyModelClass(layout = null)
확인해보니, AGP(Android Gradle Plugin)의 8점대 버전부터는 기본적으로 안드로이드의 리소스가 non-final value로 설정되는 것으로 바뀌었다고 한다.
애러 해결 방법
이를 해결하기 위해서는 gradle.properties 파일에 gradle 옵션에 리소스의 Id의 값을 기존처럼 final로 설정하도록 수정해줘야 한다.
gradle.properties 파일은 일반적으로 프로젝트 수준의 build.gradle 파일 아래에 있다.
이곳에 다음과 같은 옵션을 추가하면,
android.nonFinalResIds=false
* 적용된 모양은 다음과 같다.
더이상 애러가 발생하지 않고 빌드가 성공적으로 되는 것을 볼 수 있다.
반응형