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
반응형