안드로이드 개발 중복 리소스가 나타나서 에러가 발생하는 경우 Multiple implementations resource |
환경: Android Studio |
그림처럼 하나의 레이이웃에 중복 위젯으로 인식한다면 동작 과정에서 에러가 발생합니다. 에러 메시지에는 해당 리소스를 찾지 못했다는 내용이 나타나면서 앱이 중지됩니다. 크게 두 가지 원인이 있을 수 있습니다. 첫 번째는 이전에 저장한 캐시(Caches) 정보 축적으로 패턴이 꼬여서 발생하는 경우입니다. 두 번째는 layout 에 위젯을 추가할 때 @id 를 @+id 로 잘못 쓰는 경우입니다.
▼ 그림처럼 소스에서 위젯이 중복으로 인식된다면 앱에서 리소스 ID 를 찾지 못해 에러가 발생합니다.
▼ 좀더 구체적으로 알고 싶다면 리소스 아이디를 클릭해 보세요. 화면에는 동일한 이름으로 2개 이상이 나타날 겁니다.
▼ 만약 두 개 이상의 리소스 인식 문제를 해결하지 않고 실행하면 다음과 같이 android.content.res.Resources$NotFoundException : String resource ID 가 발생하고 App 을 실행하지 못합니다.
▼ 첫 번째 해결방법은 지금까지 쌓여 있는 캐시를 지우고 재시작하는 것입니다. 상단 메뉴에서 File > Invalidate Caches / Restart 를 선택합니다.
▼ 팝업창에서 Invalidate and Restart 버튼을 클릭해서 다시 build 를 시작합니다.
▼ 첫 번째 방법으로 해결이 안된다면 레이아웃 XML 을 살펴봐야 합니다. XML 설정에서 사용자가 실수를 할 수도 있기 때문입니다. 보통 ConstraintLayout 은 다른 위젯과의 상대적인 관계를 설정할 때 @id/[위젯 아이디] 를 사용합니다. 그런데 실수로 @id 가 아닌 @+id 처럼 “+” 를 실수로 추가했다면 시스템은 동일한 id 를 가진 리소스가 2개인 것으로 인식합니다. Constraint 옵션에서 @+id 의 “+” 를 삭제해보세요.
'안드로이드 개발' 카테고리의 다른 글
[Android] 안드로이드 인터넷 이미지 다운로드 해서 ImageView 표현하기 (2) | 2020.07.12 |
---|---|
안드로이드(Android) 라이브러리 프로젝트 참조 만들기 (0) | 2020.06.23 |
안드로이드(Android) Thread 대신해서 AsyncTask 클래스 구현하기 (0) | 2020.06.16 |
안드로이드 Android 앱 배포를 위한 개발자 등록하기 (0) | 2020.05.01 |
안드로이드(Android) ProgressDialog Cancel Button 추가하는 방법 (0) | 2020.03.15 |
안드로이드(Android) ProgressDialog 숫자 상태정보 퍼센트(Percentage) 로 표현하는 방법 (0) | 2020.02.16 |
안드로이드(Android) 스레드(Thread) 이용한 ProgressDialog 구현하기 (0) | 2020.01.26 |
안드로이드(Android) 이미지 드래그 앤 드랍(Drag and Drop) 하는 방법 (3) | 2019.12.01 |