본문 바로가기
Android/Android Error

안드로이드 에러 A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable 원인 및 해결

by 수쓰뎁 2023. 1. 10.


안드로이드 개발을 하면서 자주 겪게될 에러 중 하나라고 생각된다.

사실 굉장히 기본적인 내용을 잊어버려 발생하는 컴파일 에러였다.

에러 원인을 확인하고 해결해보자.

바쁜 분들은 그냥 아래로 쭉 내려서 2. 에러 해결 부분을 확인해보면 된다.


1. 에러 내용

간단한 스플래시 화면 작성을 하고서 실행했는데 다음과 같은 에러가 발생했다.

아무리 생각해도 잘못된 부분이 없는데 왜 발생하는지ㅂㄷㅂㄷ...

에러 내용은 다음과 같다.

주목할 내용은 이것이다.

  • Execution failed for task ':app:mergeDebugResources'.
    > A failure occurred while executing com.android.build.gradle.internal.res.ResourceCompilerRunnable
       > Resource compilation failed. Check logs for details.

이런 내용이 뜨면서 자꾸 실행이 안되는 굉장히 킹받는 현상이 반복되었다.

빌드 실행 결과는 Failed to compile values file.이라는 내용이 뜬다.

 

아무래도 빌드문제인 것 같아서 먼저 다음과 같은 방법으로 문제 해결을 시도했다.

안드로이드 스튜디오의 메뉴 중 Build 메뉴를 선택하여 다음과 같이 처리해보았다.

 

1. Clean Project를 눌러 캐싱된 파일들을 정리

2. Rebuild Project를 눌러서 프로젝트를 다시 빌드

 

실행해본 결과 다음과 같이 여전히 오류가 발생한다.


2. 에러 해결

무엇이 잘못되었는지 차근차근 생각해보았다.

분명 빌드에서 문제가 생긴건데...

Resource 컴파일 중에 에러가 발생했다는 것이 주목했다.

오류 표시도 안나는데 오류가 발생해서 한참을 삽질했다.

에러의 원인은 다음과 같다.

<string name="description_logo">This is Splash TestApp.\n This Logo's word means my Id.</string>

이 코드에서 Logo's 에 있는 작은 따옴표 ' 가 문제였다.

문자열 리소스에서는 작은따옴표를 위와 같이 사용하면 정상적인 출력물을 얻을 수 없다.

문자열 리소스에서 작은따옴표가 escape되지 않아서 에러가 발생하는 것이다.

따라서 이를 해결하기 위해서는 다음과 같이 수정하면 된다.

<string name="description_logo">This is Splash TestApp.\n This Logo"'"s word means my Id.</string>

작은 따옴표를 큰 따옴표로 감싸서 수정한다.

그리고 다시 실행해보면 원하는 출력물을 얻을 수 있다.

 

아주 기본적인 내용인데 에러 원인 찾기는 겁나 힘드니까 잘 알아두도록 하자.

 

반응형

댓글