Android/TroubleShooting
[Android] error: constant expression required
spacelife
2025. 3. 8. 12:01
728x90
반응형
오류
'error: constant expression required' 오류는 gradle 플러그인 버전을 8.0 이상으로 올리면서부터 발생했다.
이 오류는 Android Gradle Plugin 버전이 8.0.0이 되면서부터 빌드 속도를 최적화하기 위해
리소스(예: 상수 표현식) R.id.컴포넌트id가 더 이상 선언되지 않아서 발생하는 것이었다.
즉 다음과 같이 코드를 작성하면 오류가 발생하게 된다.
switch(R.id.btn) {
case btn1:
...
break;
case btn2:
...
break;
case btn3:
...
break;
...
default:
...
break;
}
해결 방법
다음 3가지 방법이 있다.
방법1. if-else문 사용
switch-case문을 if-else문으로 바꿔주면 된다.
오류가 발생하는 switch문 위에 커서를 올린 뒤, Alt + Enter를 통해 if문으로 자동으로 변경할 수 있다.
방법 2. final(컴파일 타임 상수 키워드) 사용
컴파일 타임 상수 사용 switch 문에서 사용되는 값이 컴파일 타임 상수인지 확인하여 final로 선언한다.
방법 3. gradle.properties에 설정 추가
gradle.properties 파일에 다음 줄을 추가한다.
android.nonFinalResIds=false
참고로 android.nonFinalResIds는 R 클래스의 리소스 ID를 final로 유지할지를 설정한다.
default 값은 true이고,
true로 설정하면 리소스 ID를 동적으로 설정할 수 있다.
false로 하면 리소스 ID가 final이 된다.
구독과 공감♡♡은 블로그 운영에 큰 힘이 됩니다!
긍정적인 댓글 남겨주시면 감사드리며,
보완해야 할 점이 있으면 댓글로 남겨주셔도 좋습니다!
728x90
반응형