Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

환경: Android Studio

 

그림처럼 하나의 레이이웃에 중복 위젯으로 인식한다면 동작 과정에서 에러가 발생합니다. 에러 메시지에는 해당 리소스를 찾지 못했다는 내용이 나타나면서 앱이 중지됩니다. 크게 두 가지 원인이 있을 수 있습니다. 첫 번째는 이전에 저장한 캐시(Caches) 정보 축적으로 패턴이 꼬여서 발생하는 경우입니다. 두 번째는 layout 에 위젯을 추가할 때 @id @+id 로 잘못 쓰는 경우입니다.

 

그림처럼 소스에서 위젯이 중복으로 인식된다면 앱에서 리소스 ID 를 찾지 못해 에러가 발생합니다.

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

좀더 구체적으로 알고 싶다면 리소스 아이디를 클릭해 보세요. 화면에는 동일한 이름으로 2개 이상이 나타날 겁니다

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

만약 두 개 이상의 리소스 인식 문제를 해결하지 않고 실행하면 다음과 같이 android.content.res.Resources$NotFoundException : String resource ID 가 발생하고 App 을 실행하지 못합니다

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

첫 번째 해결방법은 지금까지 쌓여 있는 캐시를 지우고 재시작하는 것입니다. 상단 메뉴에서 File > Invalidate Caches / Restart 를 선택합니다

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

팝업창에서 Invalidate and Restart 버튼을 클릭해서 다시 build 를 시작합니다

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource

 

첫 번째 방법으로 해결이 안된다면 레이아웃 XML 을 살펴봐야 합니다. XML 설정에서 사용자가 실수를 할 수도 있기 때문입니다. 보통 ConstraintLayout 은 다른 위젯과의 상대적인 관계를 설정할 때 @id/[위젯 아이디] 를 사용합니다. 그런데 실수로 @id 가 아닌 @+id 처럼 “+” 를 실수로 추가했다면 시스템은 동일한 id 를 가진 리소스가 2개인 것으로 인식합니다. Constraint 옵션에서 @+id “+” 를 삭제해보세요

안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource



Posted by 녹두장군

댓글을 달아 주세요